提供PDFSharp 打印pdf传递 文件流 同时 指定打印机代码,包装成方法优化
时间: 2024-04-15 19:28:42 浏览: 144
当你需要使用 PDFSharp 打印 PDF 文件并指定打印机时,你可以将代码封装成一个方法以提高代码的可重用性和优化性能。以下是一个封装的示例方法:
```csharp
using PdfSharp.Pdf;
using PdfSharp.Pdf.IO;
using System.Drawing.Printing;
using System.IO;
public void PrintPdfWithSpecificPrinter(Stream pdfStream, string printerName)
{
PdfDocument document = PdfReader.Open(pdfStream, PdfDocumentOpenMode.Import);
PrintDocument printDocument = new PrintDocument();
printDocument.PrinterSettings.PrinterName = printerName;
printDocument.PrintPage += (sender, e) =>
{
using (PdfPage page = document.Pages[e.PageSettings.PrinterSettings.FromPage - 1])
{
using (var gfx = XGraphics.FromGraphics(e.Graphics, e.PageBounds))
{
XRect contentRect = new XRect(0, 0, page.Width.Point, page.Height.Point);
gfx.DrawImage(XImage.FromStream(new MemoryStream(page.Stream.ToArray())), contentRect);
}
}
};
printDocument.Print();
}
```
你可以将上述代码添加到你的代码库中,并在需要打印 PDF 文件的地方调用 `PrintPdfWithSpecificPrinter` 方法。该方法接受一个 PDF 文件的流对象 `pdfStream` 和一个打印机名称 `printerName`,并使用 PDFSharp 和 System.Drawing.Printing 命名空间来实现打印功能。
调用示例:
```csharp
using (FileStream fs = File.OpenRead("path_to_your_pdf_file.pdf"))
{
PrintPdfWithSpecificPrinter(fs, "your_printer_name");
}
```
请确保替换 `path_to_your_pdf_file.pdf` 为实际的 PDF 文件路径,以及将 `your_printer_name` 替换为实际的打印机名称。
希望这个封装的方法对你有所帮助!如果还有其他问题,请随时提问。
阅读全文