从C#.NET中的编码PDF中提取文本
尝试使用从PDF中提取文本从C#.NET中的编码PDF中提取文本,c#,.net,pdf,C#,.net,Pdf,尝试使用从PDF中提取文本 使用iTextSharp.text.pdf; 使用iTextSharp.text.pdf.parser; 命名空间PdfParser { 公共静态类PDFTextractor { 公共静态字符串pdfText(字符串路径) { PdfReader reader=新PdfReader(路径); string text=string.Empty; 对于(int page=1;page可能不是您的问题…但无论何时您发现自己手动调用对象的.Dispose()或.Close()
使用iTextSharp.text.pdf;
使用iTextSharp.text.pdf.parser;
命名空间PdfParser
{
公共静态类PDFTextractor
{
公共静态字符串pdfText(字符串路径)
{
PdfReader reader=新PdfReader(路径);
string text=string.Empty;
对于(int page=1;page可能不是您的问题…但无论何时您发现自己手动调用对象的.Dispose()或.Close(),这都是一种代码味道。这可能意味着您没有正确实现该模式。如果您使用using
语句,则即使发生异常,它也会确保对象被关闭/处置。“然后我意识到pdf是编码的”-你认为“编码”是什么意思,为什么你认为这适用于pdf?为什么你认为“编码”“导致这些结果?即使你的意思是PDF受密码保护,你也无法在没有密码的情况下打开它。你确定此表在PDF中以文本形式存在吗?当我从PDF中复制文本并将其粘贴到word上时。这是我看到的:不,这只是意味着它是一个垃圾生成的PDF。如果它是一次性的,请在web上搜索。”“从pdf复制粘贴乱码文本”用于将其转换为可读格式。如果您必须处理许多此类pdf,请找到批量处理的方法。您是否可以共享有问题的pdf?正如@CodeCaster所述,生成的pdf很糟糕(这可能是为防止轻松提取文本而设计的!);有时这样的垃圾很容易修复,有时却无法修复。。。
using iTextSharp.text.pdf;
using iTextSharp.text.pdf.parser;
namespace PdfParser
{
public static class PdfTextExtractor
{
public static string pdfText(string path)
{
PdfReader reader = new PdfReader(path);
string text = string.Empty;
for(int page = 1; page <= reader.NumberOfPages; page++)
{
text += PdfTextExtractor.GetTextFromPage(reader,page);
}
reader.Close();
return text;
}
}
}