ordinary9843/ghostscript

使用Ghostscript合并/拆分所有PDF文件,猜测并转换PDF文件版本,并将PDF转换为图像。通过Ghostscript修复FPDI错误:此PDF文件可能使用了FPDI免费解析器不支持的数据压缩技术。

v2.2.4 2024-07-31 16:03 UTC

This package is auto-updated.

Last update: 2024-08-31 16:15:20 UTC


README

build codecov

如果您有任何需求的功能,请创建一个issue,我将尽力满足您的需求!

简介

使用Ghostscript合并/拆分所有PDF文件,猜测并转换PDF文件版本,并将PDF转换为图像。通过Ghostscript修复FPDI错误:此PDF文件可能使用了FPDI免费解析器不支持的数据压缩技术。

核心

此库具有以下功能

  • 全功能:此库支持PDF版本预测、转换、合并和拆分。
  • 对外部库的依赖性较低:大多数Ghostscript库对其他库的依赖性过高。
  • 与多个PHP版本兼容:它可以在PHP 7.1 - 8.x上正常运行。

要求

此库有以下要求

  • Ghostscript 9.50+

安装

安装 Ghostscript

apt-get install ghostscript

安装 ordinary9843/ghostscript

composer require ordinary9843/ghostscript

使用

示例使用

<?php
require './vendor/autoload.php';

use Ordinary9843\Ghostscript;
use Ordinary9843\Constants\GhostscriptConstant;
use Ordinary9843\Constants\ImageTypeConstant;

$file = './files/gs_ -test/test.pdf';
$binPath = '/usr/bin/gs';
$tmpPath = sys_get_temp_dir();
$ghostscript = new Ghostscript($binPath, $tmpPath);

/**
 * This function sets the path for the Ghostscript binary, which will be used for PDF processing.
 */
$ghostscript->setBinPath($binPath);

/**
 * This function sets the path for storing temporary files created during the PDF processing in Ghostscript.
 */
$ghostscript->setTmpPath($tmpPath);

/**
 * This function analyzes the input PDF file and returns the guessed PDF version.
 *
 * Output: 1.5
 */
$ghostscript->guess($file);

/**
 * This function converts the version of the input PDF file to the specified PDF version.
 *
 * Output: './files/convert/test.pdf'
 */
$ghostscript->convert($file, GhostscriptConstant::STABLE_VERSION);

/**
 * This function merges multiple PDF files into a single PDF file.
 *
 * Output: './files/merge/res.pdf'
 */
$ghostscript->merge('./files/merge', 'res.pdf', [
    './files/merge/part_1.pdf',
    './files/merge/part_2.pdf',
    './files/merge/part_3.pdf'
]);

/**
 * This function splits a PDF file into individual pages, each saved as a separate PDF file.
 *
 * Output: [
 *   './files/split/parts/part_1.pdf',
 *   './files/split/parts/part_2.pdf',
 *   './files/split/parts/part_3.pdf'
 * ]
 */
$ghostscript->split('./files/split/test.pdf', './files/split/parts');

/**
 * This function converts each page of a PDF file into individual image files.
 *
 * Output: [
 *   './files/to-image/images/image_1.pdf',
 *   './files/to-image/images/image_2.pdf',
 *   './files/to-image/images/image_3.pdf'
 * ]
 */
$ghostscript->toImage('./files/to-image/test.pdf', './files/to-image/images', ImageTypeConstant::JPEG);

/**
 * This function calculates and returns the total number of pages in a PDF file.
 *
 * Output: 3
 */
$ghostscript->getTotalPages('./files/get-total-pages/test.pdf');

/**
 * Clear temporary files generated during the PDF processing.
 */
$ghostscript->clearTmpFiles();

测试

.env.example 复制到 .env

cp .env.example .env

运行测试

composer test

许可证

(MIT 许可证)