C# 为什么在横向以合法格式打印时,右侧的打印文本会被切断?
我有一个C#应用程序,其中包括打印各种报告。当我通过远程桌面访问应用程序,并尝试从我的应用程序以合法格式打印时,文本从右侧被切断。我已经贴了一封信 当在法律纸张上以横向方式从任何其他应用程序打印文本时,文本不会被切断(例如,从Word或其他PDF文件)。问题只发生在我的应用程序中 下面是我用于示例PDF的代码。应用程序的代码要复杂得多,但我相信如果我能用示例解决问题,那么应用程序的解决方案应该是相同的。以下是用于打印的代码:C# 为什么在横向以合法格式打印时,右侧的打印文本会被切断?,c#,winforms,pdf,printing,remote-desktop,C#,Winforms,Pdf,Printing,Remote Desktop,我有一个C#应用程序,其中包括打印各种报告。当我通过远程桌面访问应用程序,并尝试从我的应用程序以合法格式打印时,文本从右侧被切断。我已经贴了一封信 当在法律纸张上以横向方式从任何其他应用程序打印文本时,文本不会被切断(例如,从Word或其他PDF文件)。问题只发生在我的应用程序中 下面是我用于示例PDF的代码。应用程序的代码要复杂得多,但我相信如果我能用示例解决问题,那么应用程序的解决方案应该是相同的。以下是用于打印的代码: printDocument.OriginAtMargins = fal
printDocument.OriginAtMargins = false;
printDocument.DefaultPageSettings.PaperSize = new System.Drawing.Printing.PaperSize("Legal", 850, 1400);
printDocument.DefaultPageSettings.Landscape = true;
printDocument.DefaultPageSettings.Margins.Left = 0;
printDocument.DefaultPageSettings.Margins.Top = 0;
printDocument.DefaultPageSettings.Margins.Right = 0;
printDocument.DefaultPageSettings.Margins.Bottom = 0;
printDocument.Print();
以及PrintPage事件中的代码:
Graphics g = event_args.Graphics;
Font test_font = new Font("Times New Roman", 12);
g.DrawString("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
test_font,
System.Drawing.Brushes.Black,
new PointF(0, 0));
g.DrawString("-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+",
test_font,
System.Drawing.Brushes.Black,
new PointF(0, 10));
请注意,文本并不是在页面末尾剪切的,而是在离左侧11.65英寸处剪切的(参见测试PDF,非常清晰)。我不知道为什么它会被切断,但我需要整个14英寸的空间,这样你就可以了解这个秘密了
更新:使用(谢谢Jongware)中提供的测试,以下是纸张尺寸和可打印区域
My paper size: [PaperSize Legal Kind = Custom Height=1400 Width=850]
Paper size for printer CutePD Writer (redirected 23) = [PaperSize custom Kind=Custom Height=1400 Width=850]
Printable Area for printer CutePD Writer (redirected 23) = {X=0,Y=0,Width=826,8333,Height=1169,333}
现在有趣的是,如果我尝试在服务器本地PDF writer上打印,我会得到以下结果:
My paper size: [PaperSize Legal Kind = Custom Height=1400 Width=850]
Paper size for printer CutePDF Writer = [PaperSize custom Kind=Custom Height=1400 Width=850]
Printable Area for printer CutePDF Writer = {X=0,Y=0,Width=850,Height=1400}
因此,当重定向到安装在远程桌面服务器之外的打印机时,它似乎将使用打印机的默认值(在本例中为A4),而不强制使用当前选择的纸张大小。这为调查开辟了新的途径。这个问题的可能重复与被剪掉的文本无关,只是与纸张大小不同有关。我在相同测试中得到的纸张大小是正确的(例如,合法),但文本突然被截断。是的,因此可能是打印机驱动程序没有收到正确的页面大小。