1

我使用 ITextPdf feom c# 代码。我使用 acrofields 用数据填充表单。我失去了我的格式。

Stream os = new FileStream(PDFPath, FileMode.CreateNew);
PdfReader reader = new PdfReader(memIO);
PdfStamper stamper = new PdfStamper(reader, os, '9', true);
AcroFields fields = stamper.AcroFields;
fields.SetField("Pgo", 1.0  "Percentage");

我究竟做错了什么?

4

1 回答 1

0

您说您正在丢失所有格式。这导致假设您的表单包含在人类用户输入值时格式化字段的 JavaScript。

使用 iText 填写表单时,手动填写表单时触发的 JavaScript 方法不会执行。因此1.0不会更改为100%.

我认为这是一个错字:

fields.SetField("Pgo", 1.0  "Percentage");

这一行甚至没有编译。输入此行时,您的 IDE 应显示错误。即使我会在第二个和第三个参数之间添加缺少的逗号(假设1.0and"Percentage"是两个单独的参数),您也会收到错误消息,指出没有setField()接受 a String、 adouble和 a 的方法String

有两种setField()方法:

例如,当您这样做时:

fields.SetField("Pgo", "1.0", "100%");

iText 将显示 100%,但该字段的值为 1.0。

如果有人单击该字段,则可能会出现 1.0,以便最终用户可以更改该字段,例如更改为 0.5。手动输入的 0.5 是否显示为 50% 取决于是否存在格式化 JavaScript。

PS:这个问题也作为售前问题发布在我们 iText Software 的票务系统中。我正在关闭该票,以便该票不会被回答两次。顺便说一句:这个问题只不过是对您之前的问题https://stackoverflow.com/questions/27276863/pdfstamper-remove-my-formats-in-my-form的重新讨论。这个问题不清楚。你为什么不理会我的澄清要求?当您第一次没有得到答案时,发布重复的问题是不习惯的。你应该更新你原来的问题。

于 2014-12-30T08:14:04.483 回答