Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从C#.NET中的编码PDF中提取文本_C#_.net_Pdf - Fatal编程技术网

从C#.NET中的编码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()

尝试使用从PDF中提取文本

使用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;
        }   
    }
}