在PHP中合并pdf文件并将网络链接保留在里面



我们有一个项目,我们合并不同的pdf来创建目录。 现在它运行在myokyawhtun/pdfmerger上,运行良好,但它没有在杂技中设置链接。

我们已经尝试了我们发现的不同库(纯 PHP,我们无法通过 shell-exec 或类似内容从命令行安装或调用应用程序在这个网络空间上,所以没有 gs(,即使我们只是通过 fpdi 导入 pdf 文件并重新保存它们,超链接也会丢失。

是否有任何(纯PHP(库可以保留文件内的链接?还是我们错过了一些特殊设置?

我们尝试过:

  • Setasign/FPDI
  • IIO/libmergepdf
  • Jurosh/pdf-merge

当前库的示例代码(myokyawhtun/pdfmerger(:

require('vendor/myokyawhtun/pdfmerger/tcpdf/tcpdf.php');
require('vendor/myokyawhtun/pdfmerger/tcpdf/tcpdi.php');
require('vendor/myokyawhtun/pdfmerger/PDFMerger.php');
$pdf = new PDFMergerPDFMerger;
foreach($sourcePdfs as $file)
{
$pdf->addPDF($pdfDir.'/source/'.$file);
}
$pdf->merge('download', 'Download.pdf');

所有提到的库都使用 FPDI,它根本不支持页面内容流之外的内容,例如链接或任何其他注释类型。

我们(FPDI的作者(还提供非自由产品,这些产品在另一个层面上工作,并允许您在连接文档时保留所有注释,包括链接和表单。这可以通过SetaPDF-Merger组件实现:

$merger = new SetaPDF_Merger();
foreach($sourcePdfs as $file) {
$merger->addFile($pdfDir . '/source/' . $file);
}
$merger->merge();
$document = $merger->getDocument();
$document->setWriter(new SetaPDF_Core_Writer_Http('Download.pdf'));
$document->save()->finish();

最新更新