我正在尝试这个:
try
{
using (var memoryStream = new MemoryStream(pdfBytes))
{
// Load the PDF document
PdfSharp.Pdf.PdfDocument pdfDocument = PdfReader.Open(memoryStream, PdfDocumentOpenMode.ReadOnly);
// Print each page
for (int i = 0; i < pdfDocument.PageCount; i++)
{
using (var printDocument = new PrintDocument())
{
printDocument.PrinterSettings.PrinterName = printerName;
// Handle the PrintPage event
printDocument.PrintPage += (sender, e) =>
{
PdfSharp.Events.RenderEvents renderEvents = new PdfSharp.Events.RenderEvents();
XGraphics graphics = XGraphics.FromGraphics(e.Graphics, new XSize(e.MarginBounds.Width, e.MarginBounds.Height), renderEvents);
// Get the current page to print
var page = pdfDocument.Pages[i];
var pageWidth = page.Width;
var pageHeight = page.Height;
// Calculate the scale to fit the page
var scaleX = e.MarginBounds.Width / pageWidth;
var scaleY = e.MarginBounds.Height / pageHeight;
var scale = Math.Min(scaleX, scaleY);
// Center the page on the printer
var xPos = e.MarginBounds.Left + (e.MarginBounds.Width - (pageWidth * scale)) / 2;
var yPos = e.MarginBounds.Top + (e.MarginBounds.Height - (pageHeight * scale)) / 2;
// Draw the content of the PDF page
XImage xImage = XImage.FromStream(memoryStream);
graphics.DrawImage(xImage, xPos, yPos, pageWidth * scale, pageHeight * scale);
// Draw rectangle for the page border
graphics.DrawRectangle(XPens.Black, xPos, yPos, pageWidth * scale, pageHeight * scale);
};
// Trigger the print job
printDocument.Print();
}
}
}
}
但是当实际触发打印时,却失败并报错
参数无效
现在我假设这来自我留空的渲染事件,但我找不到任何我想要放入其中的内容;但也许这根本不是问题。
有人可以提供任何建议吗?
谢谢!
我不知道“参数无效”错误从何而来。
但是
graphics.DrawImage(xImage, [...]
行永远不会执行您所期望的操作,因为 graphics
对象是为 GDI+ 图形对象创建的,而 xImage
对象是为 PDF 文件创建的。为PDF页面创建的XGraphics对象可以绘制PDF页面。
长话短说:PDFsharp 无法打印 PDF 文件,也无法渲染 PDF 文件。