PDFTK 并删除 XFA 格式

2023-12-07

从 PDF 表单中删除 XFA 格式是否会出现任何问题?我正在使用 PDFTK 来填写表单,发现如果表单是 XFA,则 PDFTK 不起作用,除非我先执行 drop_xfa 命令来创建新的模板表单。我注意到的一件事是,如果我不执行 drop_xfa,我可以在 Acrobat Reader 上看到预填充的字段,但在 Acrobat Pro 上看不到。其他视图(例如 Ubuntu 文档查看器)也可以。我不介意执行 drop_xfa,但只是检查我对我不知道的表单执行此操作是否可能存在问题。

示例:如果表单已填写,并且要在系统上读取该表单以获取要处理的字段/值。

先感谢您。


PDF 中有三种类型的表单:

  • 使用 AcroForm 技术的表单。在这种情况下,每个字段对应于特定页面上具有固定位置的一个或多个小部件。该表单仅使用 PDF 语法进行描述。
  • 使用 XML 表单架构 (XFA) 的动态表单。在这种情况下,PDF 文件只不过是描述整个表单的 XML 文件的容器。我们将此称为dynamicXFA,因为表单可以根据添加的数据进行扩展或缩小:通过添加更多数据,1 页表单可以变成 100 页表单。
  • 结合了 AcroForm 和 XFA 技术的混合形式。在本例中,表单被描述两次:一次使用 PDF 对象;一次使用 PDF 对象。一旦使用XML。显然,这样的表单不是动态的:AcroForm 部分仍然定义在特定页面上的绝对位置定义的小部件注释。表单无法适应其数据。

如果你有一个动态XFA表格,删除 XML 将删除完整的表单。不会有任何东西留下来。

然而,您似乎面临着由 AcroForm 和 XFA 语法组成的混合形式。混合形式是一种痛苦,因为它们经常导致混乱。例如:不支持 XFA 的查看器将向您显示存储在 AcroForm 中的数据。支持 XFA 的查看者可以优先选择 XFA 表单中存储的数据。你可能会问,有什么问题吗?这两种形式不是等价的吗?

理想情况下,表格的两个版本确实是等效的,但是:

  • 如果表单填写不正确,AcroForm 可能与 XFA 表单不同。
  • XFA 具有比 AcroForm 技术更多的功能。例如:XFA 表单中的文本字段可以是有道理的(如同<p align="justify">在 HTML 中)。但是,AcroForm 文本字段中不存在此选项(只能左对齐、居中对齐或右对齐)。因此,如果您有 XFA 表单中对齐的文本,但您只查看 AcroForm,则该文本将不会对齐(因为 AcroForm 文本字段中不存在对齐的文本)。

这是一个很长的答案,旨在解释,如果您有混合形式,那么它是在多数情况下可以扔掉 XFA 部分。您可能会有细微的差异,但如果您对 Ubuntu 文档查看器(不支持 XFA 的查看器)中的表单外观感到满意,那么您应该没问题。

免责声明:我是 iText 集团的首席执行官。 Pdftk 是基于已过时且不再受支持的 iText 版本的第三方工具。 iText Group 不认可使用 Pdftk。

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

PDFTK 并删除 XFA 格式 的相关文章

  • Python Argparse“需要以下参数”错误

    我正在尝试使用 github 存储库 但项目的 argparse 部分存在一些问题 回购协议开始如下 import markdown sys csv getpass smtplib argparse from email mime text
  • asp.net mvc 和 linq toEntity:如何包含 IEnumerable 中的文本值

    我有一个对一个字段有约束的表 它可以是 1 2 或 3 正确的解决方案可能是为此创建一个查找表 但现在我想知道是否可以在不使用查找表 我创建了一个返回值的 IEnumerable 类 我正在使用 LINQ to Entities 并且希望能
  • .NET 5 支持旧的 csproj 格式吗?

    从 NET Framework 迁移到 NET 5 时最大的障碍之一是必须将所有 csproj 转换为新的 SDK 样式格式 没有工具可以自动执行此操作 必须手动完成 我想知道这个转换是否有必要 有没有办法在保留旧的 cs 项目的同时切换到

随机推荐

  • 核心 4D 图像 tif 存储为 hdf5 python

    我有 27GB 的 2D tiff 文件 代表 3D 图像电影的切片 我希望能够像简单的 numpy4d 数组一样对这些数据进行切片 看起来 dask array 是一个很好的工具 可以在数组作为 hdf5 文件存储在内存中后干净地操作数组
  • 为什么在字符串数组上使用 Array.map(parseInt) 会产生不同的结果[重复]

    这个问题在这里已经有答案了 我正在观看一个关于销毁所有软件标题的演讲JavaScript 的诞生与消亡 在演讲中 Gary Bernhardt 指出了 JavaScript 的一个奇怪的功能 即给出一个整数字符串数组 javascript
  • 在R中是否可以得到F#的函数应用“|>”运算符? [复制]

    这个问题在这里已经有答案了 可能的重复 R 流水线函数 我发现 R 语法与 F 相比非常笨拙 在 R 中 而不是 plot exp cumsum returns 我很想做 returns gt cumsum gt exp gt plot 有
  • Bootstrap 4 - 以自定义方式显示卡片

    我正在尝试创建一个基于 Bootstrap 4 的正确语义 HTML CSS 它将以某种方式呈现卡片元素 而无需添加太多自定义批量 到目前为止我所拥有的是这样的 section class section d flex align item
  • 可扩展的 WinForms 文本框

    我在 Windows 窗体应用程序中创建了一个文本框 该文本框以用于在单行中输入文本的高度开始 但我希望如果用户输入包含在控件内的文本 文本框会自动增加其高度 目前 对于此文本框 我将属性 multiline 和 wordwrap 设置为
  • 为什么编译器需要一个特征的实现来调用默认的自由函数?

    当调用一个不需要的特征的默认实现时self 为什么需要注释一个实现类型呢 A 最小的 可重现的例子在下面 操场 mod builder pub trait Builder Sized fn new gt Simple Simple pub
  • 谷歌 protobuf 和 A​​ndroid NDK

    如何构建Google protobuf c 版本 https github com google protobuf releases latest 与 Android 目标 我在没有 ndk build 的情况下编译了 protobuf 这
  • 在jsp中显示数据

    我是jsp新手 面临一个问题 我需要创建 jsp 页面 显示来自 servlet 的数据 Servlet 代码 protected void doGet HttpServletRequest request HttpServletRespo
  • 尝试到达应用程序引擎端点时出现 SSLHandshakeException

    我正在尝试从 Android 客户端连接到我的端点方法之一到本地运行的应用程序引擎后端 问题是我收到 SSLHandshakeException 我的 API 不受 OAuth 保护 我试图达到的方法如下所示 ApiMethod name
  • 从被调用方法捕获异常

    关于程序流程 这个问题已经困扰我一段时间了 我想知道是否可以从方法中捕获错误 以阻止它执行通常遵循它的方法 如下例所示 我无法开始工作 public class MyClass public static void main String
  • 忽略 py2exe 中的library.zip

    我需要一个可执行文件 exe 它从文件中获取一些参数 用户可以根据他 她的需要配置这些参数 由于我在 python 中创建了脚本 因此我使用 py2exe 来创建该可执行文件 虽然我可以放置一个名为的可配置文件设置 dat作为数据文件并用它
  • 如何将 jackson objectmapper dateformat 配置添加到 spring mvc 配置中?

    我有一个关于 Jackson 2 1 的问题 我的 pojo 有一些日期属性 我想将其转换为字符串 我将其解决在 spring servlet xml 中 但它没有用 我不喜欢使用 JsonSerialize using JsonDateS
  • Android:从特定电话号码接收短信

    我的应用程序是否可以从特定电话号码接收短信 而不让它触发系统通知 但让所有其他消息传递到默认短信应用程序进行正常处理 如果是这样 系统如何知道哪个进程首先进入队列来选择接收哪些消息 我没有尝试这个 但理论上它应该有效 在 Android 中
  • 如何从 Java 中的 JSON 字符串中删除元素?

    我有一个 json 作为字符串 我需要使用 java 代码从中删除一个元素 感谢你的帮助 Example 尝试了数组和其他东西 但没有运气 输入 需要删除图像 widget debug on window title Sample Konf
  • 复制 java.util.Random 类型的实例变量以创建相同状态的对象

    我正在实施一个模拟退火 SA 算法 我需要复制状态 例如记住迄今为止的最佳解决方案 我实现了一个复制方法 因为不鼓励使用java的clone SA 是一种启发式算法 因此下一步要采取的步骤是随机确定的 这是通过使用Random对象 我也想复
  • 如何在 Windows 10 上使用 IPC::Run 捕获超时异常?

    我正在尝试捕获超时异常IPC Run在 Windows 10 上 使用 Strawberry Perl 版本 5 30 1 use strict use warnings use feature qw say use Data Dumper
  • 最小化工作簿/工作表但保持表单打开

    有没有办法最小化工作簿 工作表但能够保持表单打开 我已经尝试过代码 application visible false and userform1 show vbmodeless 但这会隐藏所有活动的工作簿 并且工具栏功能区也会消失 有没有
  • 获取属于个人 Triadic Census 类别的 Triad 节点列表

    通过执行 Networkx triadic census 算法 我可以获得每种类型的三元普查中节点数量的字典 triad census social nx triadic census social graph to directed 现在
  • 虚函数 C#

    我明白什么是虚函数 但我不明白的是他们内部是如何工作的 class Animal virtual string Eat return Eat undefined class Human Animal override string Eat
  • PDFTK 并删除 XFA 格式

    从 PDF 表单中删除 XFA 格式是否会出现任何问题 我正在使用 PDFTK 来填写表单 发现如果表单是 XFA 则 PDFTK 不起作用 除非我先执行 drop xfa 命令来创建新的模板表单 我注意到的一件事是 如果我不执行 drop