【问题标题】:c# how can i read text from tags in acrobat pdfc#如何从acrobat pdf中的标签中读取文本
【发布时间】:2020-03-07 18:36:32
【问题描述】:

如何使用c#从标签中提取文本?

【问题讨论】:

  • 您目前是否正在使用任何库来阅读 PDF?我发现这篇文章可以帮助您入门:c-sharpcorner.com/blogs/… 它使用 iTextSharp 库。我不确定它还有哪些其他工具,但它可以读取 PDF。
  • 谢谢,但我想要标签中的文本...标签中的文本可能不完整或从文本文件中汇总

标签: c# pdf tags acrobat


【解决方案1】:

虽然我还没有测试过,但我想到了这样的事情。如果不被接受,我可以删除它。

using iTextSharp.text.pdf;
using iTextSharp.text.pdf.parser;
using System.Text;

namespace PDFExtractor
{
    public class PDFExtractor
    {
        public static string ExtractTextFromPDF(string pdfFileName)
        {
            StringBuilder result = new StringBuilder();
            // Create a reader for the given PDF file
            using (PdfReader reader = new PdfReader(pdfFileName))
            {
                // Read pages
                for (int page = 1; page <= reader.NumberOfPages; page++)
                {
                    SimpleTextExtractionStrategy strategy =
                        new SimpleTextExtractionStrategy();
                    string pageText =
                        PdfTextExtractor.GetTextFromPage(reader, page, strategy);
                    result.Append(pageText);
                }
            }
            return result.ToString();
        }
    }

    public static string GetStrBetweenTags(string value, string startTag, string endTag)
    {
        if (value.Contains(startTag) && value.Contains(endTag))
        {
            int index = value.IndexOf(startTag) + startTag.Length;
            return value.Substring(index, value.IndexOf(endTag) - index);
        }
        else
            return null;
    }

    // var str = GetStrBetweenTags(ExtractTextFromPDF("\path of PDf file\"), "<figure>", "</figure");
}

【讨论】:

  • 谢谢,但我想要标签中的文本...标签中的文本可能不完整或从文本文件中汇总
【解决方案2】:

您可以使用PdfPig 提取页面的标记内容及其包含的内容(文本、图像、路径和子项):

using System;
using UglyToad.PdfPig;

[...]

using (PdfDocument document = PdfDocument.Open("file.pdf"))
{
    for (int i = 0; i < document.NumberOfPages; i++)
    {
        var page = document.GetPage(i + 1);
        var mcs = page.GetMarkedContents();

        foreach (var mc in mcs)
        {
            var letters = mc.Letters;
            var paths = mc.Paths;
            var images = mc.Images;

            foreach (var letter in letters)
            {
                Console.Write(letter.Value);
            }
            Console.WriteLine();
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-10
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 2019-12-29
    • 2019-09-13
    相关资源
    最近更新 更多