c# RenderInfo.GetText() 在某些 PDF 中不返回换行符。我怎样才能得到它们?

问题描述 投票:0回答:1

我的目标

我正在 PDF 中搜索特定文本,有时它可能包含换行符。在此示例中,我想要下面屏幕截图中标记矩形中的 3 行文本:

我的代码

我在 iTextSharp 5.5.13.3 中使用以下 C# 代码

var fontStrategy = new GetFontsExtractionStrategy();
using (var reader = new PdfReader("C:\\pdf.pdf")
{
    var text = string.Empty;
    for (int page = 1; page <= reader.NumberOfPages; page++)
    {
        var ex = PdfTextExtractor.GetTextFromPage(reader, page, fontStrategy);
    }
}
Logging.LogInfo($"PDF text: {fontStrategy.lastChunks}");

public class GetFontsExtractionStrategy : LocationTextExtractionStrategy
{
    public string lastChunks;

    public override void RenderText(TextRenderInfo renderInfo)
    {
        var txt = renderInfo.GetText();
        lastChunks += txt;
    }
}

结果

lastChunks
里面的文字是(我刚刚提取了整个PDF文本的相关文字):

  • Unvani (T�zel Kisiler doldurulacaktir.) (Kisaltma yapilmadan Ticaret Sicilinde yer aldigi bi�imde yazilacaktir)

预期找到的带换行符的文本是

Unvani (T�zel Kisiler doldurulacaktir.)
(Kisaltma yapilmadan Ticaret Sicilinde yer
aldigi bi�imde yazilacaktir)

我的问题

在这种情况下我怎样才能得到正确的文本?如果有必要的话,我也愿意改变图书馆。感谢您的任何提示!

c# pdf itext line-breaks decoding
1个回答
0
投票
public StringBuilder lastChunks = new StringBuilder();

public override void RenderText(TextRenderInfo renderInfo)
{
    var txt = renderInfo.GetText();
    lastChunks.AppendLine(txt);
}

希望能帮到你..

© www.soinside.com 2019 - 2024. All rights reserved.