【问题标题】:tcpdf - start with existing PDF documenttcpdf - 从现有的 PDF 文档开始
【发布时间】:2010-11-27 23:37:07
【问题描述】:

我有几个 PDF 模板,我想使用 tcpdf 加载、修改和输出。

是否可以加载现有的 PDF 并将其用作 tcpdf 的起点?

【问题讨论】:

    标签: php pdf tcpdf


    【解决方案1】:

    你想使用FPDI

    有一些示例代码here

    【讨论】:

    • @neoneye 你有相关信息的链接吗?我的快速浏览并没有发现任何问题。
    • fpdi 的问题是如果你想解析 pdf > 1.4 就必须付费
    • 请注意,FPDI 会从 PDF 中删除所有链接和 javascript。
    • @Marko : 解析后能重新生成pdf吗?
    • FPDI 仅支持 pdf 到 1.4 版。如果您的 pdf 高于 1.4,则必须购买解析器许可证
    【解决方案2】:

    我尝试过免费版本的 FPDI,但不支持 PDF 1.5 或更高版本。

    如果其他人正在寻找免费的解决方案,我使用了 TCPDI。你可以在github上找到它https://github.com/pauln/tcpdi 如果您使用的是作曲家,您也可以为作曲家找到一些 fork。在 github 上搜索 tcpdi 即可。

    将其添加到项目后,代码就非常简单了。它是 TCPDF 的扩展,因此您以前的所有代码都可以继续工作

    这是我的代码中的一个 sn-p。我用它来保存隐私政策的副本(静态 pdf),每个页脚上都有用户名和协议日期。

    // Create new PDF document
    $pdf = new TCPDI(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
    ...
    // Add the pages from the source file.
    $pagecount = $pdf->setSourceFile($policyPdfPath);
    for ($i = 1; $i <= $pagecount; $i++) {
        $tplidx = $pdf->importPage($i);
        $pdf->AddPage();
        $pdf->useTemplate($tplidx);
        // Add agreement text in document footer
        $pdf->SetXY(15,282);
        $pdf->Cell(180, 5, "Documento approvato da {$fullName} il {$date}", 0, 0, 'C');
    }
    // Send PDF on output
    $pdf->Output(FOLDER_PATH . DIRECTORY_SEPARATOR . "{$userId}.pdf", 'F');
    

    【讨论】:

    • 我尝试下载 TCPDF、FPDI 和 TCPDI 并将它们包含在一起以执行相同的操作,但是它们之间存在不同版本支持的问题..所以请您将它们全部打包成一个存档文件并将其作为共享的 Google 云端硬盘链接提供?
    • @RyadPasha 这是我正在使用的库的版本。希望可能有用。 tcpdf 5.9.149 版 - tcpdi 1.1 版(基于 fpdi 1.4.4 版) - tcpdi_parser 1.1 版(基于 tcpdf_parser 1.0.003 版)
    【解决方案3】:

    对于其他发现此问题的人来说,似乎为 TCPDF (https://tcpdf.org/docs/srcdoc/TCPDF/source-class-TCPDF_IMPORT/#50-100) 构建了一个 PARSER 和导入类,但截至 2018 年仍在开发中。

    还值得注意的是,上述解决方案不允许编辑 PDF 页面的内容。换句话说,您将页面作为一个整体导入,您无法编辑文本内容或图像。

    【讨论】:

      【解决方案4】:

      您可以将 fpdf 与 fpdi 一起使用。不能直接修改模板,但是可以添加一个白色背景的文本单元格来缓存旧的内容(注意旧的内容可以通过一些工具读取)。然后保存你的新pdf。这个工具相对容易使用。为了解决fpdi在免费版本中无法读取1.5 pdf版本的问题,您可以通过exec命令使用ghost脚本将1.5版本转换为1.4版本。我使用它并且工作正常。

      【讨论】:

        猜你喜欢
        • 2015-06-23
        • 2013-01-01
        • 1970-01-01
        • 2013-01-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-10
        相关资源
        最近更新 更多