iText pdf 方法未在 ASP.NET Core C# 应用程序中公开 - GetNumberOfPages、GetPage

问题描述 投票:0回答:1

我正在 ASP.NET Core 应用程序中使用 iText pdf 库使用 C# 处理 PDF 文件。

我在使用 GetNumberOfPages 和 GetPage 方法时遇到以下错误。

错误 CS1061“PdfReader”不包含“GetNumberOfPages”的定义,并且找不到接受“PdfReader”类型的第一个参数的可访问扩展方法“GetNumberOfPages”(您是否缺少 using 指令或程序集引用?)

错误 CS1061“PdfReader”不包含“GetPage”的定义,并且找不到接受“PdfReader”类型的第一个参数的可访问扩展方法“GetPage”(您是否缺少 using 指令或程序集引用?)

我使用了 iText 和 iText7 块库

Please check screenshot

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,但问题尚未解决

c# asp.net-core itext nuget-package itext7
1个回答
0
投票

方法

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());
                }
            }
        }
                        
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.