我正在尝试使用带有iTextSharp的c#中的证书从PDF中提取页面。我没有密码的重要信息。我尝试使用PDFCopy,但在尝试提取页面时抛出异常(下面的源代码)。
异常消息是:PdfReader未使用所有者密码打开。它会导致此部分代码:PdfReader.unethicalreading = true;
实际状态:我的解决方案提取没有证书的PDF页面。
我想要的状态:解决方案能够使用带证书的PDF。
我的回答是:是否可以在没有密码的情况下从经过认证的pdf中提取页面,怎么做?
解决方案:将PdfReader的属性(不道德的)设置为true
忽略密码但使证书无效。
public void ExtractPdfPages(string sourcePdfPath, string outputPdfPath, int numberOfPage)
{
PdfReader reader = null;
Document sourceDocument = null;
PdfCopy pdfCopyProvider = null;
PdfImportedPage importedPage = null;
int pageCount;
try
{
using (reader = new PdfReader(sourcePdfPath))
{
pageCount = reader.NumberOfPages;
sourceDocument = new Document(reader.GetPageSizeWithRotation(1));
pdfCopyProvider = new PdfCopy(sourceDocument,
new System.IO.FileStream(outputPdfPath, System.IO.FileMode.Create));
sourceDocument.Open();
int actualPageCount = pageCount > numberOfPage ? numberOfPage : pageCount;
for (int i = 1; i <= actualPageCount; i++)
{
importedPage = pdfCopyProvider.GetImportedPage(reader, i);
pdfCopyProvider.AddPage(importedPage);
}
sourceDocument.Close();
}
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
实际代码:
{{1}}