ordinary9843/ghostscript
Composer 安装命令:
composer require ordinary9843/ghostscript
包简介
Use Ghostscript to merge / split all PDF files or guess and convert PDF file version, and transform PDF into images. Fix FPDI error by Ghostscript: This document PDF probably uses a compression technique which is not supported by the free parser shipped with FPDI.
README 文档
README
If there are any features you desire, please open an issue, and I will do our best to meet your requirements!
Intro
Use Ghostscript to merge / split all PDF files or guess and convert PDF file version, and transform PDF into images. Fix FPDI error by Ghostscript: This document PDF probably uses a compression technique which is not supported by the free parser shipped with FPDI.
Cores
This library has the following features:
- Full-featured: This library supports PDF version prediction, conversion, merger, and splitting.
- Lower dependency on external libraries: Most Ghostscript libraries have too high a dependency on other libraries.
- Compatible with multiple PHP versions: It can run properly on PHP 7.1 - 8.4.
Requirements
This library has the following requirements:
- Ghostscript 9.50+
Installation
Install Ghostscript:
apt-get install ghostscript
Install ordinary9843/ghostscript:
composer require ordinary9843/ghostscript
Usage
Example usage:
<?php require './vendor/autoload.php'; use Ordinary9843\Ghostscript; use Ordinary9843\Constants\CompressConstant; 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 compresses the PDF file using the specified quality setting. * Supported qualities: CompressConstant::SCREEN, EBOOK (default), PRINTER, PREPRESS * * Output: './files/compress/test.pdf' */ $ghostscript->compress($file, CompressConstant::EBOOK); /** * 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. * The fourth parameter $isAutoConvert (default: true) automatically converts * all input PDFs to a stable version before merging. * * 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' ], true); /** * 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. * Supported types: ImageTypeConstant::JPEG, ImageTypeConstant::PNG * * Output: [ * './files/to-image/images/image_1.jpeg', * './files/to-image/images/image_2.jpeg', * './files/to-image/images/image_3.jpeg' * ] */ $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'); /** * This function sets custom Ghostscript options appended to the shell command. */ $ghostscript->setOptions(['-dPDFSETTINGS' => '/ebook']); /** * This function returns the currently configured Ghostscript options. * * Output: ['-dPDFSETTINGS' => '/ebook'] */ $ghostscript->getOptions(); /** * Clear temporary files generated during the PDF processing. * $isForceClear = true removes all tmp files immediately regardless of age. * $days specifies the age threshold in days (default: 7). */ $ghostscript->clearTmpFiles(); $ghostscript->clearTmpFiles(true); $ghostscript->clearTmpFiles(false, 30);
Testing
Copy the .env.example to .env:
cp .env.example .env
Run the tests:
composer test
Licenses
(The MIT License)
ordinary9843/ghostscript 适用场景与选型建议
ordinary9843/ghostscript 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 23.67k 次下载、GitHub Stars 达 1, 最近一次更新时间为 2021 年 11 月 18 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 ordinary9843/ghostscript 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 ordinary9843/ghostscript 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 23.67k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 2
- 点击次数: 38
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2021-11-18