尝试打印 Base64 文档失败,并显示“参数无效”

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

我正在尝试这个:

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();
            }
        }
    }
}

但是当实际触发打印时,却失败并报错

参数无效

现在我假设这来自我留空的渲染事件,但我找不到任何我想要放入其中的内容;但也许这根本不是问题。

有人可以提供任何建议吗?

谢谢!

c# pdfsharp
1个回答
0
投票

我不知道“参数无效”错误从何而来。

但是

graphics.DrawImage(xImage, [...]
行永远不会执行您所期望的操作,因为
graphics
对象是为 GDI+ 图形对象创建的,而
xImage
对象是为 PDF 文件创建的。
GDI+ 无法绘制 PDF 图像。

为PDF页面创建的XGraphics对象可以绘制PDF页面。

长话短说:PDFsharp 无法打印 PDF 文件,也无法渲染 PDF 文件。

© www.soinside.com 2019 - 2024. All rights reserved.