gpt4 book ai didi

.net - 在 iTextSharp 中将富文本添加到 AcroField

转载 作者:行者123 更新时间:2023-12-04 16:17:51 25 4
gpt4 key购买 nike

我需要使用 iTextSharp 将一些格式化文本添加到 PDF 表单域,但我似乎无法弄清楚。这就是我目前设置字段的方式,但插入文本的某些部分需要加粗或采用其他格式。

stamper.AcroFields.SetField("fieldName", "fieldValue")
stamper.FormFlattening = True

我看过 elsewhere我应该能够插入一些包含格式信息的 xml,但我不知道这个 xml 应该是什么样子。

这是该页面中让我相信我想要的是可能的部分:

It still stamps the actual XML code onto the field and the Reader will not render it as rich text in the stamped PDF.

以及对此的工作响应:

For that to work you'll have to call AcroFields.setGenerateAppearances(false). Note that older Reader versions don't generate appearances.

这个 xml 应该是什么样子,或者有其他方法可以实现吗?

最佳答案

不久前,我为 iText 添加了设置字段的富文本值的功能。我没有添加任何渲染代码来支持这一点。

这意味着查看丰富值(value)的唯一方法是通过支持它的 PDF 查看器 (Reader/Acrobat)。为了让他们知道他们需要重建所有字段外观,您必须调用 acroFields.setGenerateAppearances(false)。这将禁用 iText 的外观生成,而是请求 PDF 查看器为您生成。

如果您想要扁平化的富文本完全在 iText[Sharp] 中,您将不得不做一些古怪的事情:

  1. 将富文本绘制到单独文档的 PDF 页面中。此页面的大小应与字段的大小相匹配。将其保存(内存流就可以)。
  2. 添加一个新的 PushbuttonField,设置为 LAYOUT_ICON_ONLY。使用与原始文本字段相同的边界框。将按钮的背景颜色设置为 null(透明)。
  3. 为您的富文本页面创建一个 PdfImportedPage,并将这个导入的页面设置为新的 PushbuttonField 的图标(模板)。
  4. 展平。

痛苦但有效。

您可以使用 HTMLWorker 做 #1 并使用您的原始富文本/HTML 作为输入。

事实上,使用 HTMLWorker 提供 ColumnText 对象以在同一文档而不是新文档中呈现 HTML,然后将其写出并再次读回,您的效率可能会提高很多。使用适当的边界框从任何旧页面的 DirectContent 中创建一个 PdfTemplate。

那会少很多。

关于.net - 在 iTextSharp 中将富文本添加到 AcroField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1454701/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com