Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.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# 使用C跳过pdf中损坏的页面#_C#_Asp.net_.net_Pdf - Fatal编程技术网

C# 使用C跳过pdf中损坏的页面#

C# 使用C跳过pdf中损坏的页面#,c#,asp.net,.net,pdf,C#,Asp.net,.net,Pdf,我有一个损坏的.pdf文件。当我试图打开文件时,它会在 PdfReader pdfReader = new PdfReader(fileName); 如果页面上有任何错误,请输入第行 对象引用未设置为对象的实例 完整代码: public string ReadFile(string Filename) { string fileName = Server.MapPath(@"PDFFiles//" + Filename); string pdfText = string.Em

我有一个损坏的.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;
}
公共字符串读取文件(字符串文件名)
{
字符串文件名=Server.MapPath(@“PDFFiles/”+文件名);
string pdfText=string.Empty;
if(File.Exists(fileName1))
{
尝试
{
//这一行有例外
PdfReader PdfReader=新PdfReader(文件名);

对于(int i=1;i我相信一个
try-catch
块应该足够了。只需简单地包装有问题的代码以捕获任何异常,无论发生什么情况,循环都将继续。

但是for循环中断。我需要继续for循环。@SanthoshKumar,嗯,这就是为什么我建议使用
try-catch
块。难的部分是什么为了让您理解?您从未尝试捕获异常?现在我编辑了代码。但是在pdfreader实例中引发异常后for循环中断。但是该异常在pdfreader pdfreader=new pdfreader(文件名)中引发;本身。@SanthoshKumar,在这种情况下,它从一开始就不会进入循环,因此没有循环可以继续。如果您甚至不能创建PdfReader对象,则无法“修复”此…损坏的文件被称为损坏是有原因的。不确定是否有修复损坏的pdf文件的免费库。第一个不是第二个。为什么您是新的并且正在循环中关闭?PdfReader=new PdfReader(Filename);打开两个不同的PDF文件,一个由文件名引用,另一个由文件名引用。但更重要的是,您确定PdfReader类可以处理损坏的PDF吗?Adobe Reader可能可以跳过该页,但这并不意味着一切都可以。另外,您确定.GetTextFromPage可以处理带有图像和其他内容的PDF吗r格式化?噢,在if(File.Exists(fileName1))行上有一个尾随的1。