打印圖像和文本時出現奇怪的問題。當我們在機器上首次打印時,只有背景上移並離開,並打印在錯誤的位置。 正文打印正確。 當我們再次打印相同的東西時,一切都很好.... BG和文字..? 卸載並重新安裝應用程序或重新啓動機器不會改變,所有內容都可以保持正常打印。僅在首次打印時出現Hardmargin的奇怪打印問題(WinForms)
所以,因爲只有bg圖像打印錯誤,我們懷疑問題在於HardMargin屬性。 (只有該方法使用HardMargin)
爲什麼只發生在第一次執行的問題對我們來說是個謎......? 有沒有人有任何線索?
private void DrawBackground(PrintPageEventArgs ev, string bgFilePath, float offsetX, float offsetY)
{
try
{
System.Drawing.Image img = System.Drawing.Image.FromFile(bgFilePath);
float w = (float)Width;
float h = (float)Height;
float x = ev.PageSettings.HardMarginX + (offsetX);
float y = ev.PageSettings.HardMarginY + (offsetY);
ev.Graphics.DrawImage(img, x, y, w, h);
}
catch (Exception ex)
{
//Errors.CatchError
}
}
//Method for printing text (on top of background)
RectangleF printRect = new RectangleF();
printRect.X = offsetX + (rtfPrintscale * (float)v.X);
printRect.Y = offsetY + (rtfPrintscale * (float)v.Y);
printRect.Width = rtfPrintscale * (float)v.Width;
printRect.Height = rtfPrintscale * (float)v.Height;
............................................ ................. 在回答回答1:
嗨JDMX,
你的意思是有道理的。我正在想同一條路。
我將解釋究竟發生了什麼:
我安裝了應用程序在我的筆記本進行測試。在這檯筆記本電腦上,我最近安裝了用於在無線打印機上打印的打印機驅動
當生成打印預覽時,我注意到背景圖片放置不正確。它的y值爲負值。我認爲這是代碼中的一個錯誤,所以回到開發機器並進行測試......一切正常。所以我在更多的機器上測試了它,...仍然一切正常。
所以我回到筆記本電腦,並打印出來。打印與打印預覽相同。擋了,我再次生成了一個打印預覽,現在一切都放在正確的?
所以我認爲這是一個與appsettings的問題,所以我卸載了一個reistalled ...仍然一切都打印正確。所以我重新啓動,有沒有用..
我們的問題是,我們甚至不能複製或調試錯誤...
是否有可能只是爲了測試出有什麼我們可以工作的打印機驅動程序與??
BTW:我以多種方式設置頁邊距:
ThePrintDocument.OriginAtMargins = true;
ThePrintDocument.DefaultPageSettings.Margins = new System.Drawing.Printing.Margins(0, 0, 0, 0);
...
ThePrintDocument.DefaultPageSettings.Margins.Left = 0;
ThePrintDocument.DefaultPageSettings.Margins.Top = 0;
ThePrintDocument.DefaultPageSettings.Margins.Bottom = 0;
ThePrintDocument.DefaultPageSettings.Margins.Right = 0;
...編輯:解決的辦法:......... ...................................
嗯,這裏是我們認爲正在發生的事情:
1)Printersettings有100
2)您可以設置單元中的預設保證金毫米
3)設置OriginArMargins爲true
4)將邊距設爲0
實際上發生了什麼事是,「原產地」設置爲默認的馬100的解釋爲100毫米。因此,您的內容現在以100毫米的邊距打印。
您需要做的是首先將邊距設置爲0,然後將originatmargins設置爲true。
HTH。
呃,設置printRect當HardMargin你在哪裏正確嗎? – 2010-02-19 15:55:35
打印文本是通過另一種使用非託管win32調用(無hardmargin)的方法完成的...無論如何,文本總是打印良好,它的DrawImage和DrawRectangle有問題。 (因爲錯誤的.NET Hardmargin ???) 問題也惡化了,我們不能在任何機器上重現行爲,而我們不知道發生了什麼...... – 2010-02-22 10:16:55
它看起來像唯一的方法您將能夠嘗試重現該錯誤是從一個乾淨的操作系統開始。安裝編輯器env和打印驅動程序並運行測試。每次測試後,你將不得不吹掉該操作系統並重新開始。您可能需要查看某種硬盤映像軟件,以便您不必花費數小時等待重新加載。您也可能希望查看是否發生這種情況與其他打印機或不同的操作系統。最後,您可能只需要運行虛擬打印,以便在完成真實打印之前先打印出第一張打印件。 – JDMX 2010-03-02 14:59:01