【问题标题】:underline portion of text using iTextSharp使用 iTextSharp 为文本部分加下划线
【发布时间】:2015-04-19 04:54:16
【问题描述】:

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

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

<U>This text should be underlined</>. 

我希望以.. 结尾的文本必须加下划线。

我该怎么做?

例如,我如何使用 HTMLWorker 处理它?

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

for (int i = 0; i < linesDescription.Count; i++)
{
         int count = linesDescription[i].Count();
         int countTrim = linesDescription[i].Trim().Count();
         Chunk cnk = new Chunk(linesDescription[i] + GeneralPurpose.ReturnChar, TextStyle);

         if (firstOpe && i > MaxLinePerPage - 1)
               LongDescWrapped_dt_extra.Add(cnk);
         else
               LongDescWrapped_dt.Add(cnk);
}

【问题讨论】:

  • 您能否更详细地说明一下,即代码。你在用 HTMLWriter 吗?
  • 不,我没有使用它。我必须打印一个描述字段,其中包含由标签 .......> 关闭的部分文本。我想打印带下划线的文本。所以我的问题是:iTextSharp 可以阅读此文本并写下划线吗?还是我必须编写一些自定义代码?
  • 如果是 HTML,那么它将是 。我使用过 IText 和 PDFSharp 以及我读过的内容,您可以使用 HTMLWriter 来解析 HTML。和 将是有效的,而不是 >。或者,您可以尝试整个元素的样式(div、p 等)
  • 亲爱的@AnthonyHorne,你说的是HTMLWriter,而实际上你的意思是HTMLWorker。您不应该建议人们使用HTMLWorker,因为该类已被弃用,取而代之的是 XML Worker。它不再受支持(HtmlWriter 也不再受支持)。另外:OP正在谈论填写表单字段。在这种情况下,您的评论没有帮助。

标签: c# wpf pdf itextsharp


【解决方案1】:

普通文本字段不支持富文本。如果您希望字段保持交互,您将需要 RichText 字段。这些字段以接受RV 值的方式进行标记。此处对此进行了解释:Set different parts of a form field to have different fonts using 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("<div>Bruno <u>Lowagie</u></div>", null);
    for (Element element : elements) {
        ct.addElement(element);
    }
    ct.go();
    stamper.close();
}

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

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

【讨论】:

  • 是的!这种方法似乎有效。我对文本样式有一些问题,但它有效!非常感谢
【解决方案2】:

你可以试试这个

            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);

【讨论】:

  • 我希望在文本和 | 中添加下划线和粗体。工作。
猜你喜欢
  • 1970-01-01
  • 2018-07-12
  • 1970-01-01
  • 1970-01-01
  • 2018-06-06
  • 2021-09-24
  • 1970-01-01
  • 2014-04-17
  • 2021-09-27
相关资源
最近更新 更多