使用 PHP 将值插入可编辑 PDF,并保持可编辑状态

2024-05-17

我有一个带有可编辑字段的 PDF。我希望将 HTML 表单中的值传递到此 PDF 中。我尝试过使用 FPDF 并且它有效,但是将值传递到 PDF 后,pdf 中的字段不再可编辑。

另一个缺点是,在将值传递到 PDF 时,我们必须为每个字段指定精确的坐标。关于我可以用来保持“PDF 可编辑”的其他工具有什么想法吗?

我使用以下代码生成pdfhttp://www.setasign.de/products/pdf-php-solutions/fpdi/demos/simple-demo/ http://www.setasign.de/products/pdf-php-solutions/fpdi/demos/simple-demo/


我无法找到我真正喜欢的 PHP 原生 PDF 填充方法。相反,我使用 PHP 生成 XFDF,然后使用pdftk http://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/将其推入可填写的 PDF 中。 (请注意,此代码需要命名 PDF 的字段。)

以下是从关联数组生成 XFDF 的示例函数:

function forge_xfdf($file,$info,$enc='UTF-8'){
    $data='<?xml version="1.0" encoding="'.$enc.'"?>'."\n".
        '<xfdf xmlns="http://ns.adobe.com/xfdf/" xml:space="preserve">'."\n".
        '<fields>'."\n";
    foreach($info as $field => $val){
        $data.='<field name="'.$field.'">'."\n";
        if(is_array($val)){
            $data.='<</T('.$field.')/V[';
            foreach($val as $opt)
                $data.='<value>'.$opt.'</value>'."\n";
        }else{
            $data.='<value>'.$val.'</value>'."\n";
        }
        $data.='</field>'."\n";
    }
    $data.='</fields>'."\n".
        '<ids original="'.md5($file).'" modified="'.time().'" />'."\n".
        '<f href="'.$file.'" />'."\n".
        '</xfdf>'."\n";
    return $data;
}

然后,我将该 XFDF 写入临时文件。

$empty_form      = '/path/to/fillable/pdf/form.pdf'
$fdf_filename    = tempnam(PDF_TEMP_DIR, 'fdf');
$output_filename = tempnam(PDF_TEMP_DIR, 'pdf');
$fdf_data = forge_xfdf($empty_form, $data, 'UTF-8');

if($fdf_fp = fopen($fdf_fn, 'wb')){
    fwrite($fdf_fp, $fdf_data);
    fclose($fdf_fp);

    $command = '/usr/local/bin/pdftk "'.$empty_form.'" fill_form "'.$fdf_filename.'" output "'.$output_file.'" dont_ask';
    passthru($command);

    // SEND THE FILE TO THE BROWSER

    unlink($output_file);
    unlink($fdf_filename);
}

If you do想要不可编辑的 PDF,请添加单词flatten在命令中的单词之前dont_ask.


如果您不喜欢填写 PDF 表单,您也可以生成 HTML 表单,然后使用dompdf http://pxd.me/dompdf/www/从 HTML 转换为 PDF。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 PHP 将值插入可编辑 PDF,并保持可编辑状态 的相关文章

  • PDO::commit() 成功或失败

    The PHP PDO 提交 http www php net manual en pdo commit php文档指出该方法成功时返回 TRUE 失败时返回 FALSE 这是指beginTransaction 和commit 之间的语句执
  • 从文本块中提取相关标签/关键字

    我想要一个特定的实现 以便用户提供如下文本块 要求 使用 Linux Apache 2 的 LAMP 环境的工作知识 MySQL 5 和 PHP 5 Web 2 0 标准知识 熟悉 JSON 使用框架 Zend OOP 的实践经验 跨浏览器
  • 使用 strtotime() 计算时间差(以小时和分钟为单位)[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions time1
  • 在 Kohana 中,可以触发 404 错误吗?

    我有一个名为articles 它创建从数据库获取相关数据的文章模型 我想 如果我调用的方法返回false 触发 404 错误 这是我到目前为止所拥有的 articleName this gt uri gt segment articles
  • 为什么当尝试使用 $this->data 访问 CakePHP 时,密码字段为空?

    我正在实现一个身份验证组件 这是我的注册页面 create User array action gt login echo form gt input primary email array size gt 32 echo form gt
  • 从twitter api实体参数php获取图像url

    我正在尝试通过实体参数使用 php 获取并显示在推文中发布的图像 我的 url 中有 include entities 可以看到返回的 json 中的实体 在我的 foreach 循环中 我正在执行以下操作 foreach results
  • 如何计算加权平均值?

    我的语言是PHP 但是算法应该是相当通用的 我有一个关联数组 比方说 评级和评级次数 ratings array 1 gt 1 2 gt 3 3 gt 6 4 gt 3 5 gt 3 这相当于 1 2 2 2 3 3 3 3 3 3 4 4
  • java中的csv到pdf文件

    我正在尝试获得一个csv文件解析为pdf 到目前为止我所拥有的内容附在下面 我的问题是这段代码最终出现在 pdf 中的文件在 csv 文件的第一行被截断 我不明白为什么 附示例 本质上我想要一个没有任何操作的 csv 文件的 pdf 版本
  • 从 PDO 准备好的语句中获取原始 SQL 查询字符串

    在准备好的语句上调用 PDOStatement execute 时 有没有办法让原始 SQL 字符串执行 出于调试目的 这将非常有用 我假设您的意思是您想要最终的 SQL 查询 并将参数值插入其中 我知道这对于调试很有用 但这不是准备好的语
  • 访客客户检查 Woocommerce 订单账单电子邮件时可享受首单折扣

    通过对照正在处理和已完成的订单检查来宾客户的电子邮件地址 如果电子邮件没有订单 我想给来宾 首单折扣 如果这能在客人输入电子邮件时发生 那就太好了 我想我已经成功制作了折扣代码 现在我请求帮助合并这两个代码 使其一切正常 这是折扣代码 ad
  • 有什么方法可以在不重新加载的情况下更改标头 URL? [复制]

    这个问题在这里已经有答案了 可能的重复 修改URL而不重新加载页面 https stackoverflow com questions 824349 modify the url without reloading the page 使用新
  • 根据通过 AJAX 请求的用户输入重绘 google 图表

    我有一个谷歌图表从我的数据库中提取数据 它可以按我想要的方式工作 根据 URL 中的 get 请求 它从所选表中提取数据 我想根据下拉菜单中选定的表通过 ajax 更新此图表 我无法突破的部分是通过 ajax 获取数据响应 我认为下面的代码
  • 在 Apache 服务器上将特定的 .htm 页面处理为 .php [重复]

    这个问题在这里已经有答案了 我正在为 Apache 服务器编程 并且只需要将一个特定的 html 页面 例如 first htm 作为 PHP 脚本进行处理 可以设置吗 SetHandler http httpd apache org do
  • 从数据库 MYSQL 和 Codeigniter 获取信息

    如果你们需要其他信息 上一个问题就在这里 从数据库中获取信息 https stackoverflow com questions 13336744 fetching information from the database 另一个更新 尽
  • Yii 查询时对相关模型的限制

    我遇到了极限问题 我正在使用的代码如下 model PostCategory model record model gt with array posts gt array order gt posts createTime DESC li
  • PHP 时间间隔

    我正在寻找一个看起来应该非常简单的解决方案 但似乎我不能在这里找到任何好的答案 而且我自己似乎无法让它发挥作用 我正在寻找的是设置开始时间 结束时间 然后迭代给定时间间隔之间的一组时间 例如 上午 9 00 下午 5 00 是开始时间 这些
  • 高效插入和更新时检查唯一性

    我的员工表中有 2 列 每列值必须是唯一的 staff code staff name staff id staff code staff name 1 MGT Management 2 IT IT staff 当向表中插入或更新项目时 我
  • 禁用/启用用户访问/下载,但允许 php 编辑 - 使用 chown 和 chmod

    我想 move uploaded files到某个文件夹 比方说http localhost myproject protected 并且 PHP 应该能够rm mv cp 里面的一切protected 例如 启用 禁用用户对任何文件的访问
  • php56 - CentOS - Remi 仓库

    我刚刚在测试盒上安装了 php 5 6 正常的 cli php 解释器似乎不存在 gt php v bash php command not found gt php56 v PHP 5 6 13 cli built Sep 3 2015
  • 如何获取 URL 中未知的 $_GET 值的数组?

    我正在使用一个在线购物车 它接受订购的商品并通过 URL 将其唯一 ID 传递到 process php 页面 所以 URL 看起来像这样 process php code 1 231 code 2 532 code 3 342 Anoth

随机推荐

  • 需要一种将网络块范围折叠为超集范围列表的算法

    我的数学不及格 我需要一种有效的方法将网络范围缩小为超集 例如如果我输入 IP 范围列表 1 1 1 1至2 2 2 5 1 1 1 2至2 2 2 4 10 5 5 5至155 5 5 5 10 5 5 6至10 5 5 7 我想返回以下
  • CLSCompliant(true) 拖入未使用的引用

    任何人都可以explain以下行为 总之 如果您创建多个符合 CLS 标准Visual Studio 2008 中的库并让它们共享公共命名空间根 引用另一个库的库将require对该库的引用的引用 即使它不消耗它们 用一句话来解释是相当困难
  • 简单 AJAX Get 请求“待处理”

    我正在尝试实现一个简单的 AJAX GET 请求 该请求告诉服务器删除数据库中的文档 虽然我从服务器得到文档已删除的确认 但 Chrome 检查器显示该请求处于 待处理 状态 最终导致服务器错误 我做错了什么 HTML div class
  • Spring Integration中的异常:如何记录但不拦截

    假设我有一个基本的 Spring 集成流程 例如
  • 当实体位于不同项目中时,为什么 Mediatr 不解析方法?

    我有一个简单的项目来尝试 Mediatr 问题 当我的处理程序的具体类位于我的 API 的同一项目中时 它就可以工作 但是 当我将该处理程序类放入不同的项目 并且 API 引用该项目 ofc 时 它不会解析注册表 我收到此错误 未找到该类型
  • 已发布的 Flutter 应用程序在启动时崩溃

    编辑 此问题的解决方案是将您的 flutter 版本升级到较新的 dev 版本 then 1 7 0 您还可以上传单独的 APK 版本 但我个人不喜欢这个选项 请确保您没有从 flutter github 开发存储库下载 错误的构建 因为那
  • Javascript循环不等待Firebase完成上传多个文件

    我正在尝试上传多个文件 然后在上传所有文件后执行一些代码 但我的循环不会等到每个上传完成 迭代文件 files is an array of local files from a
  • 使用 ProtoBuf 将数据流式传输到带有标头的日志文件

    我正在尝试将数据流式传输到微控制器上 SD 卡上的日志文件 该微控制器从某些传感器读取数据并将值存储在文件中 为了序列化数据 我将使用 NanoPB 它是 C 语言的 protobuf 实现 资源效率很高 日志文件具有以下结构 它需要写入由
  • 重叠的装载机圆

    我试图重现苹果为应用程序 活动 制作的重叠圆圈 见下图 如果您使用标准贝塞尔路径 起始 结束位置将仅在 0 到 2PI 之间产生影响 例如 如果您尝试填充 4PI 即使使用一些阴影 则无法模拟重叠加载 如何制作类似于苹果解决方案的东西来创建
  • 运行 Composer 返回:“无法打开输入文件:composer.phar”

    我是 symfony2 和阅读新手symblog http tutorial symblog co uk tutorial parts 在第三章中 在尝试使用数据装置时 我尝试了以下命令 php composer phar update 但
  • malloc 会在函数结束时自动释放内存吗?

    如果有人能帮助我完全理解以下代码之间的差异 我将非常高兴 Code 1 void f1 void int ptr1 malloc sizeof int and Code 2 void f2 void int ptr2 malloc size
  • Python/从每个包含类似字符串对象的 Pandas 数据框单元格中去除空格的有效方法

    我正在将 CSV 文件读入 DataFrame 中 我需要从所有类似字符串的单元格中删除空格 在 Python 2 7 中保持其他单元格不变 这是我正在做的事情 def remove whitespace x if isinstance x
  • Visual Studio 错误:(407:需要代理身份验证)

    我位于需要凭据的公司代理服务器后面 我一直在尝试连接到 TFS 服务器 在 tfspreview com 上 微软 Visual Studio 专业版 2012最后2个小时没有成功 每次尝试都会遇到此错误 当我启动集成浏览器时 它工作正常
  • 我应该使用平面表还是标准化数据库?

    我目前正在开发一个使用 MySQL 数据库作为后端的 Web 应用程序 在继续下一步之前 我需要知道什么更适合我的情况 简而言之 在这个应用程序中 用户将能够使用任何数字字段 他们决定 构建自己的表单 现在我将其全部存储在通过外键链接的几个
  • FFmpeg - 来自 NodeJS 的 RTMP 流,流比实时更快

    我的目标是在 Node 中渲染画布 并将该画布流式传输到 RTMP 服务器 最终是 Twitch 但现在我正在在本地 RTMP 服务器上测试 流式传输到 RTMP 的标准方式似乎是ffmpeg 所以我使用它 从 NodeJS 中作为子进程生
  • 如何在geoserver中使用WPS进程生成MBtiles?

    如何在geoserver中生成mbtile 使用 openlayers 显示 geoserver 层 例如像这样调用wms层 new OpenLayers Layer WMS Kanpur http localhost 8080 geose
  • 即使 keypreview = true,按钮也会阻止 KeyDown 事件触发

    在 VS Express 12 中重现的步骤 创建一个新的 Windows 窗体应用程序项目 添加按钮 将 Form KeyPreview 设置为 true 向表单添加 keyDown 事件 只要按钮存在于表单上 事件就不会触发 我有一个项
  • 将 gnuplot 嵌入现有 QtWidget 中

    我正在用 C 创建一个 伪 实时绘图应用程序 使用 gnuplot 作为绘图后端 我的要求之一是绘图必须位于现有窗口内 而不是有一个单独的绘图窗口 gnuplot 默认为 Gnuplot 有一个选项可以指定 Qt 小部件 ID 这似乎适合我
  • Xcode 错误 - 架构 x86_64 的未定义符号?

    我正在运行 Swift 4 和 Xcode 9 beta 我收到此错误 但我不知道如何解决它 我什至不知道这是什么意思 Undefined symbols for architecture x86 64 T0So22AVCapturePho
  • 使用 PHP 将值插入可编辑 PDF,并保持可编辑状态

    我有一个带有可编辑字段的 PDF 我希望将 HTML 表单中的值传递到此 PDF 中 我尝试过使用 FPDF 并且它有效 但是将值传递到 PDF 后 pdf 中的字段不再可编辑 另一个缺点是 在将值传递到 PDF 时 我们必须为每个字段指定