【问题标题】:using PHP to create PDF, without using PHP's FDF functions使用 PHP 创建 PDF,不使用 PHP 的 FDF 函数
【发布时间】:2011-03-24 15:02:41
【问题描述】:

有没有办法在 PHP 中创建一个 FDF 文件而不使用死的 FDF 函数?我知道您可以使用pdftk现有 FDF 文件创建 PDF,但我需要先创建 FDF 文件并设置一个字段值。

或者,有没有办法在允许用户下载之前使用 PHP(跳过 FDF 文件创建)在 PDF 中设置一个字段?

为了它,我尝试使用fopen 在 PHP 中创建一个 FDF 文件 - 没有用。我也知道pdftk 中有一个generate_fdf 操作,但这不允许我设置具体的值,至少我看不到。

有人知道答案是什么吗?我很困。不幸的是,我无法控制告诉客户废弃完整的 PDF(而是使用网络表单)。

【问题讨论】:

    标签: php pdf pdftk fdf


    【解决方案1】:

    使用 PDFTK,您需要两块来完成拼图。首先,您需要带有数据的 FDF,其次是带有适当命名的表单字段的原始 PDF。 PDFTK 将数据合并到 PDF 中。

    要回答 FDF 问题,请先查看这篇出色的文章 http://koivi.com/fill-pdf-form-fields/,其中还包含一种帮助生成 FDF 的方法。

    一旦您拥有包含数据的 FDF,您就可以使用 PDFTK 的 fill_form 函数

    您可以通过使用 passthru() 而不是 readfile($temp_file) 并使用“output -”参数输出到 stdout 而不是文件名来保持文档可编辑。同样重要的是不要强制进行文档处置。如果您尝试强制下载文件而不是在浏览器中打开它,您最终会遇到无法编辑和无法保存的混乱。

    示例:

    header("Content-type:application/pdf");
    passthru("pdftk ".$original." fill_form ".$fdf." output -");
    die();
    

    这将使用 Reader 插件在浏览器中打开它。然后,您将能够编辑和打印填写的表单字段,但我仍然没有找到一种方法来保存更改后的副本。我目前正在寻找其他选择的 Adob​​e 销售。

    如其他地方所述,请勿使用 PDFTK 的“扁平化”选项。

    原始 PDF 不得包含任何密码。

    【讨论】:

    • 感谢您深思熟虑的回答。为了我自己的目的,我不再需要回答这个问题,但我将你的答案标记为正确的答案,以供将来查看此问题的任何人使用。
    【解决方案2】:

    如果我理解正确,您只是不想特别使用 FDF 库?

    您尝试过 TCPDF 吗?见http://www.tcpdf.org/

    如果您想使用现有的 PDF 文件作为模板并且只添加一些值,请使用扩展 TCPDF 的扩展 FPDI:http://www.setasign.de/products/pdf-php-solutions/fpdi/

    【讨论】:

    • 我会改用 FPDF。是的,它较旧,是的,它没有包含很多类,但文件大小约为 50KB 而不是 1 MB。如果你问我,那就太荒谬了。
    猜你喜欢
    • 1970-01-01
    • 2010-11-26
    • 2011-02-06
    • 2010-11-15
    • 1970-01-01
    • 1970-01-01
    • 2013-04-09
    • 2017-08-15
    相关资源
    最近更新 更多