在标签打印机上以非标准尺寸打印C#格式的PDF

在标签打印机上以非标准尺寸打印C#格式的PDF,c#,pdf,printing,dymo,C#,Pdf,Printing,Dymo,我在一个C#web应用程序中创建了一个PDF,其中包含一个必须打印在计算机上的标签 创建和打印我正在使用的标签 如果我将PDF保存在文件夹中,然后使用Acrobat Reader进行打印,则打印正确(因此我可以确认我的应用程序中设置的页面大小是正确的) 当我直接从应用程序打印时,PDF会异常拉伸,宽度减小,高度增大,超出标签的边界 我的代码如下所示: PdfDocument doc = new PdfDocument(); doc.LoadFromFile(fileName); SizeF p

我在一个C#web应用程序中创建了一个PDF,其中包含一个必须打印在计算机上的标签

创建和打印我正在使用的标签

如果我将PDF保存在文件夹中,然后使用Acrobat Reader进行打印,则打印正确(因此我可以确认我的应用程序中设置的页面大小是正确的)

当我直接从应用程序打印时,PDF会异常拉伸,宽度减小,高度增大,超出标签的边界

我的代码如下所示:

PdfDocument doc = new PdfDocument();
doc.LoadFromFile(fileName);

SizeF pageSize = doc.Pages[0].Size;

PageSettings ps = new PageSettings();
ps.PaperSize = new PaperSize("MyPaperSize", (int)pageSize.Width, (int)pageSize.Height);

doc.PrintDocument.DefaultPageSettings = ps;

doc.PrinterName = printerName;

doc.PrintDocument.PrinterSettings.DefaultPageSettings.Margins.Left = 0;
doc.PrintDocument.PrinterSettings.DefaultPageSettings.Margins.Right = 0;
doc.PrintDocument.PrinterSettings.DefaultPageSettings.Margins.Top = 0;
doc.PrintDocument.PrinterSettings.DefaultPageSettings.Margins.Bottom = 0;

PrintDocument printDoc = doc.PrintDocument;
printDoc.Print();
最后,我使用打开文档并创建一个PrintDocument发送到打印机

下面的代码现在可以在我的Dymo打印机上正确打印

PrinterSettings printerSettings = new PrinterSettings();
printerSettings.PrinterName = printerName;
printerSettings.DefaultPageSettings.PaperSize = paperSize;
printerSettings.DefaultPageSettings.Landscape = true;
printerSettings.DefaultPageSettings.Margins = new Margins(0, 0, 0, 0);

PdfiumViewer.PdfDocument pdfiumDoc = PdfiumViewer.PdfDocument.Load(fileName);
PrintDocument pd = pdfiumDoc.CreatePrintDocument(PdfiumViewer.PdfPrintMode.CutMargin);             
pd.PrinterSettings = printerSettings;
pd.Print();

我想Spire.Pdf加载文档的问题在于
DefaultPageSettings.PrintableArea
(只读)的大小不正确,因此文档最终在该区域被压缩。

我可以通过在服务器上保存文件副本来解决这个问题。如果我在打印文档之前“保存”文档,它将正确打印,即使我从同一个C#对象打印,也不会触碰新创建的文件

document.SaveToFile(HttpContext.Current.Server.MapPath(string.Format(@".\my-ticket-{0}-{1}.pdf", DateTime.Now.Ticks, Ticket.OrderNumber)));
PrintDocument printDoc = document.PrintDocument;
printDoc.Print();

我曾经在Dymo担任QA工程师,现在我是iText的QA工程师,它是Spire.pdf的竞争对手,所以我碰巧对硬件和pdf格式有一点经验。是否可以共享高分辨率照片或扫描好标签和拉伸标签?还有pdf文件?然后从Adobe和您自己的应用程序打印到prn文件,然后将该prn文件发送到打印机。作为Linux用户,我忘记了如何使用Windows,但这应该可以帮助您开始进行故障排除。根据过去的经验,我有一个预感,但我希望先查看您的文件。@AmedeeVanGasse我扫描了两个标签。左边的一个是正确的,另一个是拉伸的。是的,我已经猜到它会是这样的。您的PDF文件可能没有问题。我再也帮不了你了。我建议您联系Dymo技术支持,他们应该能够帮助您。请随意提及,一位前Dymo QA工程师告诉您与他们联系,这可能会让您更快地通过一级支持,更接近开发人员。Dymo的技术支持是按地区组织的(至少在我两年前离开那里时是这样),所以你必须在网站上查找。哦,Dymo的技术支持是免费的(电话费除外,但我建议你使用电子邮件)-你已经支付了足够的消耗品来支付该费用。:)