C# 在Zebra打印机上打印PDF标签(420d)

C# 在Zebra打印机上打印PDF标签(420d),c#,pdf,printing,zebra-printers,zpl,C#,Pdf,Printing,Zebra Printers,Zpl,在我的网店里,我可以下载一个pdf格式的送货单。我构建了一个.net服务,它使用FileSystemWatcher监视我的“打印”文件夹。该服务将处理文件夹中的所有.pdf和.zpl文件 所有.zpl文件都将使用Windows驱动程序,使用RawPrinterHelper类直接打开并写入Zebra 420d打印机。它按预期工作 我的问题是.pdf文件。当我从Windows10中的浏览器手动将文件打印到Zebra420D打印机时,效果非常好。但是,当我试图从我的服务打印它们时,标签的大小将非常小。

在我的网店里,我可以下载一个pdf格式的送货单。我构建了一个.net服务,它使用
FileSystemWatcher
监视我的“打印”文件夹。该服务将处理文件夹中的所有
.pdf
.zpl
文件

所有
.zpl
文件都将使用Windows驱动程序,使用
RawPrinterHelper
类直接打开并写入Zebra 420d打印机。它按预期工作

我的问题是
.pdf
文件。当我从Windows10中的浏览器手动将文件打印到Zebra420D打印机时,效果非常好。但是,当我试图从我的服务打印它们时,标签的大小将非常小。看起来内容缩小了

public static bool PrintPdf(string filepath, string printerName)
    {
        try
        {
            var doc = new PdfDocument();
            doc.LoadFromFile(filepath);
            doc.PrinterName = printerName;
            doc.PrintDocument.Print();
            doc.Dispose();

            return true;
        }
        catch (Exception ex)
        {
            // More code ...
        }
    }
我在谷歌上搜索了一整夜,尝试了各种方法将PDF转换成PNG/SVG再转换成ZPL,但都没有成功

如何使用c#将PDF格式的标签打印到Zebra 420d打印机

编辑:我还尝试将PDF转换为BMP,然后再转换为GRF(斑马母语)。仍然不起作用。我得到的只是一张空白页

我解决了

我根本不需要任何转换。我只需重新安装和调整打印机驱动程序设置,并修改代码即可使用新设置

这是我的最终代码:

 public static bool Print(string filepath, string printerName)
    {
        try
        {
            var doc = new PdfDocument();
            doc.LoadFromFile(filepath);
            doc.PrinterName = printerName;

            var psize = new PaperSize("Custom Paper Size", 417, 1007);
            doc.PrintDocument.DefaultPageSettings.PaperSize = psize;
            doc.PageSettings.Rotate = PdfPageRotateAngle.RotateAngle180;

            doc.PrintDocument.Print();
            doc.Dispose();

            return true;
        }
        catch (Exception ex)
        {
            // More code ...
        }
    }
我解决了

我根本不需要任何转换。我只需重新安装和调整打印机驱动程序设置,并修改代码即可使用新设置

这是我的最终代码:

 public static bool Print(string filepath, string printerName)
    {
        try
        {
            var doc = new PdfDocument();
            doc.LoadFromFile(filepath);
            doc.PrinterName = printerName;

            var psize = new PaperSize("Custom Paper Size", 417, 1007);
            doc.PrintDocument.DefaultPageSettings.PaperSize = psize;
            doc.PageSettings.Rotate = PdfPageRotateAngle.RotateAngle180;

            doc.PrintDocument.Print();
            doc.Dispose();

            return true;
        }
        catch (Exception ex)
        {
            // More code ...
        }
    }

从nuget package downloader下载Spire.Pdf包以访问PdfDocument类

从nuget package downloader下载Spire.Pdf包以访问PdfDocument类

正是我所想的,没有多少人知道ZPL是什么:)正是我所想的,知道ZPL是什么的人不多:)您真的可以详细介绍一下您正在使用的库吗?这只是UWP吗?我找不到WPF的PdfDocument类。似乎已使用。另一家PDF供应商也有同样的API,但那是Syncfusion的盗版版本。你能详细介绍一下你正在使用的库吗?这只是UWP吗?我找不到WPF的PdfDocument类。似乎已使用。另一家PDF供应商也有相同的API,但那是Syncfusion的盗版版本。