2008-11-06 136 views
14

我已經使用iTextSharp生成了pdf,我可以在ASP.Net中很好地預覽它,但是我需要直接將其發送到打印機而無需預覽。我希望用戶點擊打印按鈕並自動打印文檔。從ASP.Net打印PDF,無需預覽

我知道,一個頁面可以直接使用JavaScript window.print()被髮送到打印機,但我不知道如何使它爲PDF。

編輯:它不是嵌入式的,我產生像這樣;

   ... 
       FileStream stream = new FileStream(Request.PhysicalApplicationPath + "~1.pdf", FileMode.Create); 
       Document pdf = new Document(PageSize.LETTER); 
       PdfWriter writer = PdfWriter.GetInstance(pdf, stream); 
       pdf.Open(); 
       pdf.Add(new Paragraph(member.ToString())); 
       pdf.Close(); 

       Response.Redirect("~1.pdf"); 
       ... 

而我在這裏。

回答

1

,是pdf埋設於使嵌入標籤的頁面,或只是在框架中打開或你怎麼展示呢?

如果其嵌入式,只要確保該對象被選中,然後執行打印()。

獲取嵌入文檔的引用。

var x = document.getElementById("mypdfembeddobject"); 
x.click(); 
x.setActive(); 
x.focus(); 
x.print(); 
0

也試試這個寶石:

<link ref="mypdf" media="print" href="mypdf.pdf"> 

我還沒有測試它,但我看了一下,它可以通過這種方式來讓mypdf.pdf代替印刷頁面內容,無論你用什麼方法打印頁面。

搜索媒體=「打印」簽出更多。

+0

我發現這種方法打印在IE8一個空白頁的多一點棘手。 – 2010-08-03 10:51:36

0

您可以在PDF中嵌入的JavaScript,使用戶只要瀏覽器加載PDF得到的打印對話框。

我不知道有關iTextSharp的,但我用JavaScript是

var pp = this.getPrintParams(); 
pp.interactive = pp.constants.interactionLevel.automatic; 
this.print(pp); 

對於iTextSharp的,檢查出http://itextsharp.sourceforge.net/examples/Chap1106.cs

5

最後我做到了,但我不得不使用一個IFRAME,我在aspx中定義了一個IFrame,並沒有設置src屬性,在我生成的cs文件中生成了pdf文件,並將iFrame的src屬性設置爲生成的pdf文件名,就像這樣;

Document pdf = new Document(PageSize.LETTER); 
PdfWriter writer = PdfWriter.GetInstance(pdf, 
new FileStream(Request.PhysicalApplicationPath + "~1.pdf", FileMode.Create)); 
pdf.Open(); 

//This action leads directly to printer dialogue 
PdfAction jAction = PdfAction.JavaScript("this.print(true);\r", writer); 
writer.AddJavaScript(jAction); 

pdf.Add(new Paragraph("My first PDF on line")); 
pdf.Close(); 

//Open the pdf in the frame 
frame1.Attributes["src"] = "~1.pdf"; 

,這把的伎倆,但是,我認爲我應該實現您的解決方案斯特凡,問題是,我是新來asp.net和javascript,如果我沒有一個完整的源代碼我無法編碼你的建議,但至少是第一步,我非常驚訝在HTML和JavaScript我需要學習多少代碼。日Thnx。

1

,如果你正在使用pdfsharp但相當可行

PdfDocument document = new PdfDocument(); 
PdfPage page = document.AddPage(); 
XGraphics gfx = XGraphics.FromPdfPage(page); 
XFont font = new XFont("Verdana", 20, XFontStyle.BoldItalic); 
// Draw the text 
gfx.DrawString("Hello, World!", font, XBrushes.Black, 
    new XRect(0, 0, page.Width, page.Height), 
    XStringFormats.Center); 

// real stuff starts here 

// current version of pdfsharp doesn't support actions 
// http://www.pdfsharp.net/wiki/WorkOnPdfObjects-sample.ashx 
// so we got to get close to the metal see chapter 12.6.4 of 
// http://partners.adobe.com/public/developer/pdf/index_reference.html 
PdfDictionary dict = new PdfDictionary(document); // 
dict.Elements["/S"] = new PdfName("/JavaScript"); // 
dict.Elements["/JS"] = new PdfString("this.print(true);\r"); 
document.Internals.AddObject(dict); 
document.Internals.Catalog.Elements["/OpenAction"] = 
    PdfInternals.GetReference(dict); 
document.Save(Server.MapPath("2.pdf")); 
frame1.Attributes["src"] = "2.pdf";