首頁 > 後端開發 > C++ > 如何使用 iTextSharp 從 PDF 中提取帶格式的文字?

如何使用 iTextSharp 從 PDF 中提取帶格式的文字?

Mary-Kate Olsen
發布: 2025-01-11 10:46:41
原創
858 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板