我正在 ASP.NET Core 应用程序中使用 iText pdf 库使用 C# 处理 PDF 文件。
我在使用 GetNumberOfPages 和 GetPage 方法时遇到以下错误。
错误 CS1061“PdfReader”不包含“GetNumberOfPages”的定义,并且找不到接受“PdfReader”类型的第一个参数的可访问扩展方法“GetNumberOfPages”(您是否缺少 using 指令或程序集引用?)
错误 CS1061“PdfReader”不包含“GetPage”的定义,并且找不到接受“PdfReader”类型的第一个参数的可访问扩展方法“GetPage”(您是否缺少 using 指令或程序集引用?)
我使用了 iText 和 iText7 块库
List<byte[]> chunks = new List<byte[]>();
using (MemoryStream pdfStream = new MemoryStream(pdfBytes))
{
using (PdfReader pdfReader = new PdfReader(pdfStream))
{
int pageCount = pdfReader.GetNumberOfPages();
for (int i = 1; i <= pageCount; i++)
{
using (MemoryStream chunkStream = new MemoryStream())
{
using (PdfWriter pdfWriter = new PdfWriter(chunkStream))
{
using (PdfDocument pdfDocument = new PdfDocument(pdfWriter))
{
pdfDocument.AddPage(pdfReader.GetPage(i).CopyTo(pdfDocument));
}
}
chunks.Add(chunkStream.ToArray());
}
}
}
}
我已经尝试了 iText 和 iText7,但问题尚未解决
方法
GetNumberOfPages
和 GetPage
不能直接在 PdfReader
中的 iText 7
类上使用。相反,您应该使用 PdfDocument
类。
不要使用
GetPage
,而是使用 pdfDocument.CopyPagesTo(i, i, newPdfDocument)
将特定页面复制到新文档。
List<byte[]> chunks = new List<byte[]>();
using (MemoryStream pdfStream = new MemoryStream(pdfBytes))
{
using (PdfReader pdfReader = new PdfReader(pdfStream))
{
using (PdfDocument pdfDocument = new PdfDocument(pdfReader))
{
int pageCount = pdfDocument.GetNumberOfPages();
for (int i = 1; i <= pageCount; i++)
{
using (MemoryStream chunkStream = new MemoryStream())
{
using (PdfWriter pdfWriter = new PdfWriter(chunkStream))
{
using (PdfDocument newPdfDocument = new PdfDocument(pdfWriter))
{
// Copy the page from the original document to the new document
pdfDocument.CopyPagesTo(i, i, newPdfDocument);
}
}
chunks.Add(chunkStream.ToArray());
}
}
}
}
}