如何更改pdf中文本框的值

时间:2011-02-04 00:07:46

标签: pdf textbox sed

我必须使用相同的设计但不同的名称制作多个证书。因此,我尝试使用占位符文本制作未压缩的pdf文件,并尝试使用文本编辑器进行更改。由于某种原因它没有用。我只能看到被替换文本的单个字母。

当我使用eps文件尝试相同的操作时,它可以工作,但由于eps不保持(AFAIK)页面方向,因此有可能它会因不同的名称而有所不同。

有谁知道为什么这不起作用或如何更改pdf文件中的文本框(使用sed)?

(我用Illustrator CS4创建了主PDF)

谢谢

1 个答案:

答案 0 :(得分:0)

通常,在文本编辑器中编辑PDF是个坏主意。 PDF取决于各种对象的字节偏移量不移动。

如果您知道您的编辑器不会更改EOL字节(或它认为是eol字节),并且您不要更改整个文本条目对象的长度,那么你没问题。

例如:

1 0 obj
<</Type/Annotation/Subtype/Widget/V(PlaceHolder Value)/T(Field Title)...>>
endobj

如果您的新值超过“占位符值”,则表示您已经搞砸了。

大多数PDF包含相当多的压缩二进制数据。其中一些数据会被误解为EOL字符。改变它们将:
a:打破你的压缩流
b:可能更改PDF其余部分的字节偏移量。

当我破解PDF文件时,我总是使用十六进制编辑器。

底线:不要将PDF作为文本流混乱。使用PDF库将它们作为PDF文件混淆。肯定会有一种能够用您选择的语言改变表单字段值。

您还可以查看FDF和XFDF,看看它们是否更适合您。两种文件格式都存储字段/值对以及对这些对使用的表单的引用。 FDF使用PDF的语法,而XFDF是XML语法。您可以将[X] FDF提供给最终用户,他们将看到填写的表格。

警告:除非表单是Reader Enabled(需要Acrobat(pro?)),否则他们将无法保存打开[X] FDF后获得的表单版本,只能查看/打印它。当然,他们可以保存[X] FDF,但许多用户可能会对这种奇怪的新格式感到不满。