【问题标题】:Merge pdf files in PHP and keep weblinks inside在 PHP 中合并 pdf 文件并在其中保留网络链接
【发布时间】:2019-12-05 16:21:29
【问题描述】:

我们有一个项目,我们在其中合并不同的 pdf 以创建目录。 现在它在 myokyawhtun/pdfmerger 上运行,运行良好,但它不保留在 acrobat 中设置的链接。

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

是否有任何(纯 PHP)库可以在文件中保留链接?还是我们遗漏了一些特殊设置?

我们已经尝试过:

  • setasign/fpdi
  • iio/libmergepdf
  • jurosh/pdf 合并

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

require('vendor/myokyawhtun/pdfmerger/tcpdf/tcpdf.php');
require('vendor/myokyawhtun/pdfmerger/tcpdf/tcpdi.php');
require('vendor/myokyawhtun/pdfmerger/PDFMerger.php');

$pdf = new \PDFMerger\PDFMerger;

foreach($sourcePdfs as $file)
{
    $pdf->addPDF($pdfDir.'/source/'.$file);
}

$pdf->merge('download', 'Download.pdf');

【问题讨论】:

    标签: php pdf


    【解决方案1】:

    所有提到的库都在后台使用 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();
    

    【讨论】:

    • 您好 Jan,感谢您的回复,我已经尝试过您的在线演示,它似乎有效!我会和我的同事讨论这件事!它是只使用 php 还是需要在服务器上安装其他组件或应用程序 / 才能通过 shell_exec 或类似方式调用?
    • 这是一个纯 PHP 解决方案。系统要求可用here
    猜你喜欢
    • 2012-08-25
    • 2013-05-04
    • 1970-01-01
    • 1970-01-01
    • 2017-01-09
    • 1970-01-01
    • 1970-01-01
    • 2018-04-02
    • 1970-01-01
    相关资源
    最近更新 更多