Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么在横向以合法格式打印时,右侧的打印文本会被切断?_C#_Winforms_Pdf_Printing_Remote Desktop - Fatal编程技术网

C# 为什么在横向以合法格式打印时,右侧的打印文本会被切断?

C# 为什么在横向以合法格式打印时,右侧的打印文本会被切断?,c#,winforms,pdf,printing,remote-desktop,C#,Winforms,Pdf,Printing,Remote Desktop,我有一个C#应用程序,其中包括打印各种报告。当我通过远程桌面访问应用程序,并尝试从我的应用程序以合法格式打印时,文本从右侧被切断。我已经贴了一封信 当在法律纸张上以横向方式从任何其他应用程序打印文本时,文本不会被切断(例如,从Word或其他PDF文件)。问题只发生在我的应用程序中 下面是我用于示例PDF的代码。应用程序的代码要复杂得多,但我相信如果我能用示例解决问题,那么应用程序的解决方案应该是相同的。以下是用于打印的代码: printDocument.OriginAtMargins = fal

我有一个C#应用程序,其中包括打印各种报告。当我通过远程桌面访问应用程序,并尝试从我的应用程序以合法格式打印时,文本从右侧被切断。我已经贴了一封信

当在法律纸张上以横向方式从任何其他应用程序打印文本时,文本不会被切断(例如,从Word或其他PDF文件)。问题只发生在我的应用程序中

下面是我用于示例PDF的代码。应用程序的代码要复杂得多,但我相信如果我能用示例解决问题,那么应用程序的解决方案应该是相同的。以下是用于打印的代码:

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),而不强制使用当前选择的纸张大小。这为调查开辟了新的途径。

这个问题的可能重复与被剪掉的文本无关,只是与纸张大小不同有关。我在相同测试中得到的纸张大小是正确的(例如,合法),但文本突然被截断。是的,因此可能是打印机驱动程序没有收到正确的页面大小。