【发布时间】: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。