1

Dymo LabelWriter 450で印刷する必要があるラベルを含む PDF を C# Web アプリケーションで作成します。

ラベルを作成して印刷するには、Spire.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();
4

2 に答える 2

1

最終的にPdfiumViewerを使用してドキュメントを開き、プリンターに送信する 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(読み取り専用) のサイズが間違っているため、ドキュメントが最終的にその領域で圧縮されることだと思います。

于 2016-04-06T11:06:35.643 に答える
0

サーバーにファイルのコピーを保存することで、これを解決できました。ドキュメントを印刷する前に「保存」すると、同じ 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();
于 2016-08-24T22:21:08.973 に答える