bolongo/phppdfcrop

pdfcrop的PHP包装器

v1.0.1 2020-07-14 21:59 UTC

This package is auto-updated.

Last update: 2024-09-15 07:15:41 UTC


README

Build Status Latest Stable Version Total Downloads License

PHP PDFcrop是基于pdfcrop的PHP包装器,它依赖于PHP WkhtmlToPdf,由Michael Härtl创建。**必须将pdfcrop命令安装在系统中。**

安装

通过composer安装此包

composer require bolongo/phppdfcrop

确保在代码库的某个位置包含composer的自动加载器

示例

// You can pass a filename or an options array to the constructor
$pdfCrop = new PdfCrop('/path/to/document.pdf');
if($pdfCrop->getError() != null) {
    //Handle error here
}

选项

命令选项

这些选项用作shell命令pdfcrop的选项。有关这些选项的更好解释,请参阅pdfcrop --help

//Default values
$options = [
    'verbose' => false,//bool
    'debug' => false,//bool
    'gscmd' => 'gs',//string
    'tex-extension' => 'pdftex',//string
    'pdftexcmd' =>'pdftex',//string
    'xetexcmd' => 'xetex',//string
    'luatexcmd' => 'luatex',//string
    'margins' => [0, 0, 0, 0],//array|string
    'clip' => false,//bool
    'hires' => false,//bool
    'ini' => false,//bool

    'restricted' => false,//bool
    'papersize' => null,//string
    'resolution' => null,//string|int
    'bbox' => null,//string|array
    'bbox-odd' => null,//string|array
    'bbox-even' => null,//string|array
    'pdfversion' => null,//string
    
    'original' => null,//string
];

描述

  • verbose: 使命令进行详细打印。
  • debug: 使命令打印调试信息。
  • gscmd: 指定命令要使用的ghostscript命令的路径。
  • tex-extension: 指定命令要使用的tex扩展。值必须是pdftexxetexluatex。此选项是pdfcrop shell命令中存在的--pdftex--xetex--luatex选项的并集,其中必须指定这些选项中的一个。
  • pdftexcmd: 指定命令要使用的pdftex命令的路径。
  • xetexcmd: 指定命令要使用的xetex命令的路径。
  • luatexcmd: 指定命令要使用的luatex命令的路径。
  • margins: 指定命令的额外边距,单位为bp。如果只提供一个数字,则用于所有边距;如果有两个数字,则用于右边和底部。
  • clip: 如果设置了边距,则指定命令的剪裁支持。
  • hires: 指定使用%%HiResBoundingBox而不是%%BoundingBox
  • ini: 指定将TeX编译器的iniTeX变体用于命令。
  • original: 要由命令裁剪的文件。

如何设置PDFCrop实例的选项

$pdfCrop = new PDFCrop($options);
$pdfCrop->setOptions($options);

original选项是特殊的,因为它可以作为构造函数设置的数组成员、setOptions($options)方法设置的数组,或者直接在属性original上指定。

$pdfCrop = new PDFCrop('/path/to/document.pdf');
$pdfCrop->original = '/path/to/document.pdf';

包装器选项

这些选项仅适用于包装器。这些选项可以传递给包装器,通过构造函数或通过setOptions($options)方法,与命令选项混合。

//Default values
$commandOptions = [
    'binary' => 'pdfcrop',//string
    'tmpDir' => null,//string
    'ignoreWarnings' => true,//bool
    'ignoreOptionValidationErrors' => true,//bool
];
$pdfCrop = new PDFCrop($commandOptions);
$pdfCrop->setOptions($commandOptions);
$pdfCrop->binary = '/path/to/pdfcrop';
$pdfCrop->tmpDir = '/path/to/tmpDir';
$pdfCrop->ignoreWarnings = true;
$pdfCrop->ignoreOptionValidationErrors = true;

描述

  • binary: pdfcrop命令的路径。
  • tmpDir: tmp目录的路径。默认为PHP的临时目录。
  • ignoreWarnings: 防止进程抛出异常。
  • ignoreOptionValidationErrors: 防止选项验证抛出异常(损坏的选项将被忽略)。

错误处理

new PDFCrop($options)setOptions($options)如果选项格式错误并且选项ignoreOptionValidationErrors设置为false,则抛出异常。

$options = [
    'ignoreOptionValidationErrors' => false,
    'tex-extension' => 'im wrong',
];
try {
    $pdfCrop = new PDFCrop($options);
    $pdfCrop->setOptions($options);
} catch(Exception $e) {
    //The detailed error message will be present in the getMessage() method
    $e->getMessage();
}

new saveAs($options)toString()如果命令或生成的文件保存过程中出现错误,并且ignoreWarnings设置为false,则抛出异常。

$options = [
    'original' => '/path/to/original.pdf',
    'ignoreWarnings' => false,
];
$pdfCrop = new PDFCrop($options);
try {
    $pdfCrop->saveAs('/path/to/cropped.pdf');
    $croppedPdfContents = $pdfCrop->toString();
} catch(Exception $e) {
    //The detailed error message will be present in the getMessage() method
    $e->getMessage();
}

saveAs($options)toString() 方法中设置 ignoreWarnings 选项为 true 将会防止异常信息的显示,但如果在处理过程中或保存生成的文件时出现错误,getError() 方法将返回包含详细错误信息的字符串。

$options = [
    'original' => '/path/to/original.pdf',
];
$pdfCrop = new PDFCrop($options);
$croppedPdfContents = $pdfCrop->toString();
if($pdfCrop->getError() != null) {
    //Handle error
}
$pdfCrop->saveAs('/path/to/cropped.pdf');
if($pdfCrop->getError() != null) {
    //Handle error
}

更新日志

请在此处查看该库的更新日志:这里