C#使用代码打印PDF文件,批量打印PDF,代码调用打印机打印

C#使用代码打印PDF文件,批量打印PDF,代码调用打印机打印_第1张图片

需要安装的nuget包:
PdfiumViewer.Core
PdfiumViewer.Native.x86.v8-xfa
PdfiumViewer.Native.x86_64.v8-xfa

我本地程序集框架:

  • .NET8
  • WPF

    /// 
    /// 打印单个pdf
    /// 
    /// 文件路径,pdf文件
    /// 打印份数
    /// A3、A4
    /// false纵向,true横向
    private void PrintPdf(string pdf, short printNum, PaperKind paperKindSet, bool fx = false)
    {
        if (printNum == 0)
        {
            return;
        }
        if (!File.Exists(pdf))
        {
            return;
        }

        // 加载PDF文档     
        var document = PdfiumViewer.PdfDocument.Load(pdf);

        // 创建打印文档对象
        var printDocument = document.CreatePrintDocument();

        // 设置打印机参数
        printDocument.PrinterSettings.Copies = printNum;//打印份数
        printDocument.PrinterSettings.FromPage = 0;
        //printDocument.PrinterSettings.ToPage = document.PageCount - 1;//不需要设置,会导致最后一页不会打印

        // 设置纸张方向为横向
        printDocument.DefaultPageSettings.Landscape = fx;

        // 配置A3纸张
        bool isA3Found = false;
        foreach (PaperSize paperSize in printDocument.PrinterSettings.PaperSizes)
        {
            if (paperSize.Kind == PaperKind.A3)
            {
                printDocument.DefaultPageSettings.PaperSize = paperSize;
                isA3Found = true;
                break;
            }
        }

        // 如果未找到A3,创建自定义A3尺寸(420mm x 297mm)
        if (!isA3Found)
        {
            int a3Width = (int)(420 / 25.4 * 100); // 420mm转换为百分之一英寸
            int a3Height = (int)(297 / 25.4 * 100);
            printDocument.DefaultPageSettings.PaperSize = new PaperSize("A3 Custom", a3Width, a3Height);
        }
        if (paperKindSet == PaperKind.A4)
        {
            foreach (PaperSize paperSize in printDocument.PrinterSettings.PaperSizes)
            {
                if (paperSize.Kind == PaperKind.A4)
                {
                    printDocument.DefaultPageSettings.PaperSize = paperSize;
                    break;
                }
            }
        }

        // 执行打印(需要处理打印权限和异常)
        printDocument.PrintController = new StandardPrintController(); // 静默打印
 

        //打印后显示文件名称
        //printDocument.DocumentName =DateTime.Now.Ticks.ToString()+".pdf";

        // 执行打印
        printDocument.Print();
    }
     

项目地址
https://gitee.com/wanghaoli/WPF_print_pdf

你可能感兴趣的:(C#,c#,pdf)