Printing PDF File from ASP.NET

0 comments
使用 PDF(Portable Document Format)文件格式的好處在於,不論使用何種電腦平台或作業系統,都能忠實重現文件的原貌,也不會因為印表機的不同而影響排版。因此,PDF 格式在不同設備上輸出列印的一致性,非常適合用在印表機列印輸出的需求。

在網頁設計實務上,需要動態產生文件及講求排版格式的列印功能亦頗為常見。本文將示範如何使用 iTextShap 建立 PDF 文件,並加入 JavaScript 指令碼透過 Acrobat API 將文件自動輸出至指定的印表機。

下列程式碼範例會假設已經在 ASP.NET Web 網頁建立列印按鈕,並指定如下的 Click 事件處理常式。範例中的 PrintButton_Click 方法,會在指定的目錄下將建立含有列印指令碼的 PDF 文件,並透過泛型處理常式將文件傳送到用戶端,然後輸出至使用者的印表機。
protected void PrintButton_Click(object sender, EventArgs e)
{
Document document = new Document();
MemoryStream ms = new MemoryStream();
PdfWriter writer = PdfWriter.GetInstance(document, ms);
document.Open();

// 加入自動列印指令碼
writer.AddJavaScript(@"
var pp = this.getPrintParams();
pp.interactive = pp.constants.interactionLevel.silent;
pp.pageHandling = pp.constants.handling.none;
var fv = pp.constants.flagValues;
pp.flags |= fv.setPageSize;
pp.flags |= (fv.suppressCenter | fv.suppressRotate);
this.print(pp);
");

document.Add(new Paragraph("Testing Silent Printing with iTextSharp."));
document.Close();

Response.ClearContent();
Response.ClearHeaders();
Response.ContentType = "application/pdf";
Response.AddHeader("Content-Disposition", "inline; filename=Report.pdf");
Response.BinaryWrite(ms.ToArray());
Response.End();
}

參考資料:
Silent Printing on Web based Java Application

繼續閱讀...