使用iTextSharp强调文本的一部分

我有一个使用itextsharp来填充PDF表单字段的应用程序。

其中一个字段包含一些带标签的文本。 例如:

This text should be underlined. 

我希望关闭的文本必须加下划线。

我怎么能这样做?

我怎么能用HTMLWorker来解决它?

这是我编写描述的代码部分:

 for (int i = 0; i  MaxLinePerPage - 1) LongDescWrapped_dt_extra.Add(cnk); else LongDescWrapped_dt.Add(cnk); } 

普通文本字段不支持富文本。 如果希望字段保持交互,则需要RichText字段。 这些字段以接受RV值的方式标记。 这里解释了这一点: 使用iTextSharp设置表单字段的不同部分以使用不同的字体 (请注意,我没有成功使其工作,但您可能会有更好的运气。)

如果您可以展平表单(即删除所有交互性),请查看FillWithUnderline示例:

 public void manipulatePdf(String src, String dest) throws DocumentException, IOException { PdfReader reader = new PdfReader(src); PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest)); stamper.setFormFlattening(true); AcroFields form = stamper.getAcroFields(); FieldPosition pos = form.getFieldPositions("Name").get(0); ColumnText ct = new ColumnText(stamper.getOverContent(pos.page)); ct.setSimpleColumn(pos.position); ElementList elements = XMLWorkerHelper.parseToElementList("
Bruno Lowagie
", null); for (Element element : elements) { ct.addElement(element); } ct.go(); stamper.close(); }

在这个例子中,我们没有填写字段,但我们得到字段位置(页码和矩形)。 然后我们使用ColumnText在此位置添加内容。 在我们输入HTML时,我们使用XML Worker将HTML解析为我们可以添加到ColumnText对象的iText对象。

这是一个Java示例,但如果您知道如何使用C#编写代码(我不这样做),则应该很容易将其移植到C#。

你可以试试这个

  Chunk chunk = new Chunk("Underlined TExt", FontFactory.GetFont(FontFactory.TIMES_ROMAN, 12.0f, iTextSharp.text.Font.BOLD | iTextSharp.text.Font.UNDERLINE)); Paragraph reportHeadline = new Paragraph(chunk); reportHeadline.SpacingBefore = 12.0f; pdfDoc.Add(reportHeadline);