C# 使用C跳过pdf中损坏的页面#
我有一个损坏的.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
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。