我需要使用iTextSharp将一些格式化的文本添加到PDF表单字段中,我似乎无法弄明白。这就是我当前设置字段的方式,但插入文本的某些部分需要是粗体或其他格式。
stamper.AcroFields.SetField("fieldName", "fieldValue")
stamper.FormFlattening = True
我已经看到elsewhere我应该能够插入一些包含格式信息的xml,但我不知道这个xml应该是什么样的。
以下是该页面的部分,让我相信我想要的是可能的:
它仍然标记了实际的XML代码 到现场,读者不会 将其渲染为标记中的富文本 PDF。
对此的工作回应:
为了工作,你必须打电话 AcroFields.setGenerateAppearances(假)。 请注意,较旧的Reader版本没有 产生外表。
这个xml应该是什么样的,还是有其他方法可以实现这个目标?
答案 0 :(得分:0)
前段时间,我添加了iText设置字段的富文本值的功能。我没有添加任何渲染代码来备份它。
这意味着通过支持它的PDF查看器(Reader / Acrobat)来查看丰富价值的唯一方法。为了让他们知道他们需要重建所有场地外观,你必须致电acroFields.setGenerateAppearances(false)
。这会禁用iText的外观生成,而是请求PDF查看器为您执行此操作。
如果你想在iText [Sharp]中完全使用扁平的富文本,你将不得不做一些棘手的事情:
PushbuttonField
,设置为LAYOUT_ICON_ONLY
。使用与原始文本字段相同的边界框。将按钮的背景颜色设置为null
(透明)。PdfImportedPage
,并将此导入的页面设置为新的PushbuttonField
图标(模板)。痛苦但有效。
您可以使用HTMLWorker执行#1并使用原始的富文本/ HTML作为输入。
事实上,使用一个HTMLWorker提供一个ColumnText对象来渲染你的HTML在同一个文档而不是一个新文件中,然后将其写出并再次读回来,你可能会获得更高效率。使用适当的边界框从任何旧页面的DirectContent中创建PdfTemplate。
那会少得多。