我刚开始尝试使用iTextSharp来处理PDF文档。作为一个简单的练习,我试图使用下面的代码从简单的PDF中提取文本。
protected void btnUpload_Click(object sender, EventArgs e)
{
if (fuPDFUpload.HasFile)
{
PdfReader reader = new PdfReader(fuPDFUpload.FileBytes);
for (int i = 0; i < reader.NumberOfPages; i++)
{
lblPdfText.Text += PdfTextExtractor.GetTextFromPage(reader, i);
}
}
}
上面的代码抛出一个空引用异常,reader不是null,我显然不是null是一个int,如果reader为null我会期望一个ArgumentNullException。读者有页面因此它进入循环的事实。我只能认为这是某种错误。它是开源的,所以我可以尝试修复它,但我真的没有时间。有谁知道这里可能会发生什么,或者我如何解决它?
答案 0 :(得分:4)
好的,所以PDF没有第0页,下面的代码工作正常:
protected void btnUpload_Click(object sender, EventArgs e)
{
if (fuPDFUpload.HasFile)
{
PdfReader reader = new PdfReader(fuPDFUpload.FileBytes);
for (int i = 1; i <= reader.NumberOfPages; i++)
{
lblPdfText.Text += PdfTextExtractor.GetTextFromPage(reader, i);
}
}
}
这是一个非常无益的例外,你会认为有某种检查会引发更有帮助的例外,也许我会在有空的时候提交补丁。