【问题标题】:Skip corrupted page in pdf using C#使用 C# 跳过 pdf 中损坏的页面
【发布时间】:2012-09-24 09:58:39
【问题描述】:

我有一个损坏的 .pdf 文件。当我尝试打开文件时,它会抛出异常

PdfReader pdfReader = new PdfReader(fileName);

如果页面上有任何错误,则换行。

对象引用未设置为对象的实例

完整代码:

public string ReadFile(string Filename)
{
    string fileName = Server.MapPath(@"PDFFiles//" + Filename);

    string pdfText = string.Empty;
    if (File.Exists(fileName1))
    {
        try
        {
            // Exception on this line
            PdfReader pdfReader = new PdfReader(fileName);

            for (int i = 1; i <= pdfreader.NumberOfPages; i++)
            {
                ITextExtractionStrategy itextextStrat = new pdf.parser.SimpleTextExtractionStrategy();
                PdfReader reader = new PdfReader(Filename);
                String extractText = PdfTextExtractor.GetTextFromPage(reader, i, itextextStrat);

                extractText = Encoding.UTF8.GetString(ASCIIEncoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes(extractText)));
                pdfText = pdfText + extractText;
                reader.Close();
            }
        }
        catch(Execption e)
        {
        }
    }

    return pdfText;
}

但我需要毫无例外地遍历文件。如果特定页面上有任何错误,我必须跳过它并转到下一页。它不应该抛出异常。如何做到这一点?

【问题讨论】:

  • 不是第一个第二个。为什么你是新人并闭环? PdfReader reader = new PdfReader(文件名);
  • 您打开了两个不同的 PDF 文件,一个由 fileName 引用,另一个由 FileName 引用。但更重要的是,您确定 PdfReader 类可以处理损坏的 PDF 吗? Adobe Reader 可能可以跳过该页面,但这并不意味着一切都可以。另外,您确定 .GetTextFromPage 可以处理带有图像和其他格式的 PDF 吗?
  • 哦,你在 if(File.Exists(fileName1)) 行上有一个尾随 1。

标签: c# asp.net .net pdf


【解决方案1】:

我相信try-catch 块对您来说应该足够了。只需包装有问题的代码以捕获任何异常,循环将继续进行。

【讨论】:

  • 但是 for 循环中断了。我需要继续 for 循环。
  • @SanthoshKumar,嗯,这就是为什么我建议使用try-catch 块。你最难理解的部分是什么?您从未尝试过捕获异常?
  • 现在我已经编辑了代码。但是在pdfreader的实例中抛出异常后for循环会中断。
  • 但是异常是在PdfReader pdfReader = new PdfReader(fileName);本身抛出的。
  • @SanthoshKumar,在这种情况下,它一开始就不会进入循环,所以没有循环可以继续。如果您甚至无法创建 PdfReader 对象,则无法“修复”此问题...损坏的文件被称为损坏是有原因的。不确定是否有用于修复损坏的 pdf 文件的免费库..
猜你喜欢
  • 2013-02-18
  • 2018-07-09
  • 1970-01-01
  • 1970-01-01
  • 2015-02-01
  • 2013-11-25
  • 2019-12-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多