.NET 6平台的IText7没有PdfRenderer 这个类
时间: 2024-02-24 19:00:22 浏览: 150
是的,您说得对。在 .NET 6 平台的 IText7 中确实没有 PdfRenderer 这个类。不过,您可以使用 IText7 的 PdfDocument 类和 PdfRendererCore 类来实现类似的功能。
具体来说,您可以使用 PdfDocument 类来加载 PDF 文件,然后使用 PdfRendererCore 类来将 PDF 页面渲染成为一个 Bitmap 对象。以下是一些示例代码:
```csharp
using iText.Kernel.Pdf;
using iText.Kernel.Pdf.Canvas.Parser.Listener;
using iText.Kernel.Pdf.Canvas.Parser;
using iText.Kernel.Pdf.Xobject;
using iText.Kernel.Geom;
using iText.Kernel.Pdf.Canvas;
using iText.Kernel.Utils;
// 加载 PDF 文件
PdfDocument pdfDoc = new PdfDocument(new PdfReader("path/to/pdf/file.pdf"));
// 获取第一页
PdfPage page = pdfDoc.GetPage(1);
// 获取页面大小
Rectangle pageSize = page.GetPageSize();
// 创建一个 Bitmap 对象,并将其置为白色
Bitmap bitmap = new Bitmap((int)pageSize.GetWidth(), (int)pageSize.GetHeight());
using (Graphics graphics = Graphics.FromImage(bitmap))
{
graphics.Clear(Color.White);
}
// 创建一个 PdfCanvas 对象
PdfCanvas canvas = new PdfCanvas(page.NewContentStreamBefore(), page.GetResources(), pdfDoc);
// 创建一个 PdfRendererCore 对象,并将页面渲染到 Bitmap 对象中
PdfRendererCore renderer = new PdfRendererCore(pdfDoc.GetPage(1));
renderer.Render(new[] { canvas }, new Rectangle(0, 0, bitmap.Width, bitmap.Height), false);
// 保存 Bitmap 对象为图片文件
bitmap.Save("path/to/output/image.png");
// 关闭 PdfDocument 对象
pdfDoc.Close();
```
需要注意的是,这里的渲染方法是基于 IText7 的 GDI+ 渲染引擎实现的,因此可能会存在一些渲染上的差异。如果您需要更高质量的渲染效果,可以考虑使用其他 PDF 渲染引擎,比如 Ghostscript。
阅读全文