我需要拆分一个pdf,我使用了以下代码:
using iTextSharp.text;
using iTextSharp.text.pdf;
private static void PDF_ExtractPages(string pdfFilePath, string outputPath)
{
int pageNameSuffix = 0;
// Intialize a new PdfReader instance with the contents of the source Pdf file:
//PdfReader reader = new PdfReader(pdfFilePath);
using (PdfReader reader = new PdfReader(pdfFilePath))
{
FileInfo file = new FileInfo(pdfFilePath);
string pdfFileName = file.Name.Substring(0, file.Name.LastIndexOf(".")) + "-";
for (int pageNumber = 1; pageNumber <= reader.NumberOfPages; pageNumber++)
{
pageNameSuffix++;
string newPdfFileName = string.Format(pdfFileName + "{0}", pageNameSuffix);
Document document = new Document();
PdfCopy copy = new PdfCopy(document, new FileStream(outputPath + "\" + newPdfFileName + ".pdf", FileMode.Create));
document.Open();
copy.AddPage(copy.GetImportedPage(reader, pageNumber));
document.Close();
copy.Close();
}
}
}
我在网上看到这个错误:
using (PdfReader reader = new PdfReader(pdfFilePath))
type used in a using statement must be implicitly convertible to 'System.IDisposable'
如果我删除使用此代码:
PdfReader reader = new PdfReader(pdfFilePath);
代码可以工作,但不能处理阅读器对象,当我试图打开PDF时,我会收到一条消息,比如:";该文档由另一用户打开";。
有没有一种方法可以处理PdfReader和所有内部代码?
谢谢!
这就是它不实现IDisposable
的原因。
您可以使用try-catch
块,这是一种等效的方式。
PdfReader reader = null;
try
{
reader = new PdfReader(pdfFilePath);
// Some code here
}
catch (Exception)
{
// Take some action.
}
finally
{
reader.Dispose();
}