【问题标题】:iTextSharp - PDF field contents become invisibleiTextSharp - PDF 字段内容变得不可见
【发布时间】:2013-09-30 07:32:58
【问题描述】:

我有一个 PDF,我在其中添加了一些 TextField。

  var txtFld = new TextField(stamper.Writer, new Rectangle(cRightX - cWidthX, cTopY3, cRightX, cTopY), FieldNameProtocol) { Font = bf, FontSize = cHeaderFontSize, Alignment = Element.ALIGN_RIGHT, Options = PdfFormField.FF_MULTILINE };
  stamper.AddAnnotation(txtFld.GetTextField(), 1);

上面的“bf”是嵌入在 PDF 中的 Unicode 字体:

  BaseFont bf = BaseFont.CreateFont(UnicodeFontPath, BaseFont.IDENTITY_H, BaseFont.EMBEDDED); // Create a Unicode font to write in Greek...

稍后我用希腊文本填充这些字段。

  var acrof = stamper.AcroFields;
  acrof.SetField(fieldName, field.Value/*, field.Value*/); // Set the text of the form field.
  acrof.SetFieldProperty(fieldName, "setfflags", PdfFormField.FF_READ_ONLY, null); // Make it readonly.

当我查看 PDF 时,大多数情况下文本会丢失,如果我在 Acrobat 中单击(不可见的)TextField,那么文本就会变得可见(直到它再次失去焦点)。

知道这里发生了什么吗? 我也尝试过使用非嵌入字体,但我得到了同样的结果(尽管我似乎仍然在 PDF 中获得了与我使用的字体相似的嵌入字体)。我不知道我是不是错过了什么。

【问题讨论】:

  • 看到这个,它的 .Net 但应该很容易翻译成 Java,stackoverflow.com/a/18445315/231316
  • @ChrisHaas:谢谢!我会尽快尝试,让你知道它是怎么回事。 (实际上我也在 .NET 上工作)。
  • 我已经尝试了这两行代码,但似乎没有任何改变。我不知道是否与我将 PDF 与另一个 PDF 文档合并以获得最终 PDF 的事实有关...
  • 我不知道这是否与我将 PDF 与另一个 PDF 文档合并以获得最终 PDF 的事实有关 - 在这种情况下,将填充分开字段和合并成两个单独的步骤并检查中间结果。然后你就知道是填表问题还是合并问题了。

标签: pdf unicode fonts itext


【解决方案1】:

似乎我按错误的顺序执行了以下操作(以下是正确的):

acrof.SetFieldProperty(field.Name, "setfflags", PdfFormField.FF_READ_ONLY, null); // Make it readonly.
acrof.SetFieldProperty(field.Name, "textfont", bf, null);
acrof.SetField(field.Name, field.Value/*, field.Value*/); // Set the text of the form field.

至少我认为那是错误的帽子。 我做了很多改变。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-20
    • 2021-12-02
    • 1970-01-01
    • 1970-01-01
    • 2022-01-24
    • 2015-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多