首页 >后端开发 >C++ >如何使用 iTextSharp 从 PDF 中提取带格式的文本?

如何使用 iTextSharp 从 PDF 中提取带格式的文本?

Mary-Kate Olsen
Mary-Kate Olsen原创
2025-01-11 10:46:41874浏览

How to Extract Text with Formatting from PDFs Using iTextSharp?

使用iTextSharp提取带格式文本

简介:

iTextSharp是一个功能强大的库,用于操作和生成PDF文档,但有时难以提取具有所需格式的文本。本文提供了一种使用iTextSharp从PDF中提取文本和格式信息的方法。

自定义提取策略:

要提取带格式的文本,您可以创建一个自定义的ITextExtractionStrategy实现。此策略定义了如何处理文本渲染信息。

代码片段:

以下代码定义了一个自定义策略,该策略跟踪基线、字体名称和字体大小的变化,并生成具有适当样式的HTML:

<code>public class TextWithFontExtractionStategy : iTextSharp.text.pdf.parser.ITextExtractionStrategy
{
    // ... (此处省略)

    public void RenderText(iTextSharp.text.pdf.parser.TextRenderInfo renderInfo)
    {
        // 确定字体属性
        string curFont = renderInfo.GetFont().PostscriptFontName;
        if (renderInfo.GetTextRenderMode() == (int)TextRenderMode.FillThenStrokeText)
        {
            curFont += "-Bold";
        }

        // 检查基线、字体或字体大小的变化
        Vector curBaseline = renderInfo.GetBaseline().GetStartPoint();
        Single curFontSize = renderInfo.GetAscentLine().GetEndPoint()[Vector.I2] - curBaseline[Vector.I2];
        if ((this.lastBaseLine == null) || (curBaseline[Vector.I2] != lastBaseLine[Vector.I2]) ||
            (curFontSize != lastFontSize) || (curFont != lastFont))
        {
            // 生成带有更新样式的HTML span
            result.AppendFormat("</code>

使用方法:

要使用自定义策略,您可以在提取文本时指定它:

<code>PdfReader reader = new PdfReader("MyDocument.pdf");
TextWithFontExtractionStategy strategy = new TextWithFontExtractionStategy();
string textWithFormatting = PdfTextExtractor.GetTextFromPage(reader, 1, strategy);</code>

输出:

textWithFormatting变量将包含提取的文本,其中包含反映格式信息的HTML标签,包括字体和字体大小。

结论:

此自定义提取策略允许您提取具有所需格式的PDF文本。这是一个强大的工具,可用于准确地再现PDF文档中的文本和样式。

以上是如何使用 iTextSharp 从 PDF 中提取带格式的文本?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn