【发布时间】:2020-03-07 18:36:32
【问题描述】:
如何使用c#从标签中提取文本?
【问题讨论】:
-
您目前是否正在使用任何库来阅读 PDF?我发现这篇文章可以帮助您入门:c-sharpcorner.com/blogs/… 它使用 iTextSharp 库。我不确定它还有哪些其他工具,但它可以读取 PDF。
-
谢谢,但我想要标签中的文本...标签中的文本可能不完整或从文本文件中汇总
如何使用c#从标签中提取文本?
【问题讨论】:
虽然我还没有测试过,但我想到了这样的事情。如果不被接受,我可以删除它。
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");
}
【讨论】:
您可以使用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();
}
}
}
【讨论】: