2014-02-17 95 views
2

我對c#很陌生,需要一些幫助來格式化打印文檔。C#中的格式打印文檔#

我已經成功地通過這個代碼交談的打印機:

private void Print(string printer) 
    { 
     PrintDocument PrintDoc = new PrintDocument(); 

     PrintDoc.PrinterSettings.PrinterName = printer; 

     PrintDoc.PrintPage += new PrintPageEventHandler(PrintPage); 
     PrintDoc.Print(); 
    } 

    void PrintPage(object sender, PrintPageEventArgs e) 
    { 
     e.Graphics.DrawLine(new Pen(Color.Black), new Point(0, 0), new Point(100, 100)); 
     e.Graphics.DrawString("Hello World", new Font("Times New Roman", 12), new SolidBrush(Color.Black), new Point(45, 45)); 

    } 

它打印了我的「Hello World」的字符串。很明顯,PrintPage方法是我在網上找到的代碼。 可悲的是我無法找到一個方法來

一)設置格式的文件我上打印的尺寸(這是138毫米X99毫米橫向格式)

B)告訴打印機在哪裏打印我的文章究竟。

該論文是一種預先打印的形式,我必須在特定字段中編寫我的文本。

所以我在尋找一種方式讓我的打印機格式化的文檔,如:

<field1> 
    <x> 2cm </x> 
    <y> 1cm </y> 
    <text> textfield1 </text> 
</field1> 
<field2> 
    .... 

我無法找到如何做到這一點的信息。所以,如果有人能告訴我如何做到這一點還是有一個鏈接到一個很好的教程,我會非常心存感激

回答

2

設置紙張

printDocument.DefaultPageSettings.PaperSize = new PaperSize("Custom Name", width, height); 
printDocument.DefaultPageSettings.Landscape = true; 

寬度和高度是百分之幾的大小英寸

請參閱this中的教程在預印紙張上打印文本的SO問題。

爲了避免在實驗過程中出現紙張浪費,請在預覽過程中將預印紙作爲圖像進行掃描並將其設置爲PrintPageHanlder中的背景。

void printDocument_PrintPage(object sender, PrintPageEventArgs e) 
{ 
    if (printDocument.PrintController.IsPreview) 
    { 
     Image image = Image.FromFile("ScannedImagePath"); 
     e.Graphics.DrawImage(image,0,0) 
    } 
    // print other text here after drawing the background 
}   
+0

謝謝,那就是我一直在尋找的東西。 – FNR

+0

@FNR - 很高興幫助。不要忘記upvote :) – Junaith

+0

我喜歡upvote您的帖子,可惜我只是註冊,所以沒有足夠的聲譽upvote您的評論。我錯過了4分似乎^^; – FNR