Pdfium .NET SDK 中的打印功能
Print functionality in Pdfium .NET SDK
我目前正在为我的雇主开发一个使用 PDF 渲染功能的 C# 应用程序。 Pdfium.Net 在显示 PDF 方面表现出色,但该应用程序还必须能够打印它们。有人知道通过这个 API 打印当前 PDF 文档的方法吗?我已经检查了可能的地方,但我没有找到任何东西。
要打印PDF文档,可以使用标准的.Net Framework,如下代码所示:
//.Net Framework class from System.Drawing.Printing namespace
PrintDocument pd = new PrintDocument();
int pageForPrint = 0;
pd.PrintPage += (s, e) =>
{
using (PdfBitmap bmp = new PdfBitmap((int)e.PageSettings.PrintableArea.Width, (int)e.PageSettings.PrintableArea.Height, true))
{
//Render to PdfBitmap using page's Render method with FPDF_PRINTING flag
pdfView1.Document.Pages[pageForPrint].Render
(bmp,
0,
0,
(int)e.PageSettings.PrintableArea.Width,
(int)e.PageBounds.Height,
Patagames.Pdf.Enums.PageRotate.Normal, Patagames.Pdf.Enums.RenderFlags.FPDF_PRINTING);
//Draw rendered image to printer's graphics surface
e.Graphics.DrawImageUnscaled(bmp.Image,
(int)e.PageSettings.PrintableArea.X,
(int)e.PageSettings.PrintableArea.Y);
//Print next page
if(pageForPrint< pdfView1.Document.Pages.Count)
{
pageForPrint++;
e.HasMorePages = true;
}
}
};
//start printing routine
pd.Print();
其中一个 .Render() 变体允许您直接在 Graphics 上下文上绘图,从而消除了对上述示例中的中间位图的需求。
我目前正在为我的雇主开发一个使用 PDF 渲染功能的 C# 应用程序。 Pdfium.Net 在显示 PDF 方面表现出色,但该应用程序还必须能够打印它们。有人知道通过这个 API 打印当前 PDF 文档的方法吗?我已经检查了可能的地方,但我没有找到任何东西。
要打印PDF文档,可以使用标准的.Net Framework,如下代码所示:
//.Net Framework class from System.Drawing.Printing namespace
PrintDocument pd = new PrintDocument();
int pageForPrint = 0;
pd.PrintPage += (s, e) =>
{
using (PdfBitmap bmp = new PdfBitmap((int)e.PageSettings.PrintableArea.Width, (int)e.PageSettings.PrintableArea.Height, true))
{
//Render to PdfBitmap using page's Render method with FPDF_PRINTING flag
pdfView1.Document.Pages[pageForPrint].Render
(bmp,
0,
0,
(int)e.PageSettings.PrintableArea.Width,
(int)e.PageBounds.Height,
Patagames.Pdf.Enums.PageRotate.Normal, Patagames.Pdf.Enums.RenderFlags.FPDF_PRINTING);
//Draw rendered image to printer's graphics surface
e.Graphics.DrawImageUnscaled(bmp.Image,
(int)e.PageSettings.PrintableArea.X,
(int)e.PageSettings.PrintableArea.Y);
//Print next page
if(pageForPrint< pdfView1.Document.Pages.Count)
{
pageForPrint++;
e.HasMorePages = true;
}
}
};
//start printing routine
pd.Print();
其中一个 .Render() 变体允许您直接在 Graphics 上下文上绘图,从而消除了对上述示例中的中间位图的需求。