doode/pdf-fusion-laravel

Laravel 扩展包,用于将多个 PDF 文件合并成一个。

1.0.7 2021-07-02 11:10 UTC

This package is auto-updated.

Last update: 2024-09-19 16:04:19 UTC


README

Latest Version on Packagist Software License Quality Score Total Downloads

PDF Fusion for Laravel。已测试与 Laravel 78 版本兼容。

优点

  • 也支持 1.4 版本以上的 PDF
  • 支持 PHP7.3/ 7.4/ 8.0^ 和 laravel 8

安装

您可以通过 composer 安装此包

composer require doode/pdf-fusion-laravel

如果您使用的是 Linux 系统(Debian/Ubuntu)

apt-get install ghostscript

如果您使用的是 Linux 系统(Arch Linux)

pacman -S ghostscript

配置

如果您的 Laravel 版本无法自动识别此包,请在 config/app.php 中进行以下更改

'providers' => [
   ...
   Doode\PdfFusionLaravel\Providers\PdfFusionServiceProvider::class
],

'aliases' => [
   ...
   'PdfFusion' => Doode\PdfFusionLaravel\Facades\PdfFusionFacade::class
]

在合并 1.4 版本以上或 PDF 字符串时,将创建一个临时 PDF 并存储在 storage/tmp 目录中,因此您可能需要事先创建它。

注意

此外,请注意,此包需要服务器上安装 Ghostscript 才能正确处理 1.5+ 版本的 PDF。请参阅 安装指南

使用方法

您可以通过指定 PDF 文件的路径使用 addPathToPDF 方法添加要融合的 PDF,或者通过使用 addPDFString 方法将 PDF 文件作为字符串添加。两种方法中的第二个参数是所选页面('all' 表示所有页面)的数组,第三个参数是 PDF 的方向(纵向或横向)。

[P] = 纵向
[L] = 横向

$fusion->addPathToPDF('/path/to/pdf', 'all', 'P');
$fusion->addPDFString(file_get_contents('path/to/pdf'), ['1', '2'], 'L')

您可以使用 setFileName 方法设置合并后的 PDF 名称。

$merger->setFileName('output.pdf');

最后,使用 mergeduplexMerge 方法完成合并过程,并使用合并 PDF 的输出选项之一。这两种方法之间的区别是,如果合并的 PDF 页数是奇数,则 duplexMerge 方法会在每个合并后的 PDF 后添加空白页。

可用的输出选项有

  • inline()
  • download()
  • string()
  • save('path/to/merged.pdf')
$fusion->merge();
$fusion->inline();

示例使用

$fusion = \PdfFusion::init();
$fusion->addPathToPDF(base_path('/vendor/doode/pdf-fusion-laravel/examples/one.pdf'), [2], 'P');
$fusion->addPDFString(file_get_contents(base_path('/vendor/doode/pdf-fusion-laravel/examples/two.pdf')), 'all', 'L');
$fusion->merge();
$fusion->save(public_path('/pdfs/output.pdf'));

作者

致谢

许可证

MIT 许可证 (MIT)

版权所有 © 2020 Doode

在此协议下,任何获得此软件及其相关文档副本(“软件”)的人均可免费使用该软件,不受任何限制,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本的权利,并允许向软件提供方提供软件的人行使其权利,前提是遵守以下条件

上述版权声明和本许可声明应包含在软件的副本或主要部分中。

软件按“现状”提供,不提供任何形式的保证,无论是明示的还是暗示的,包括但不限于适销性、特定用途适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论此类索赔、损害或其他责任是基于合同、侵权或其他方式,源于、因或与软件或其使用或任何其他方式相关。