2008-11-06 3 views
14

iTextSharp를 사용하여 pdf를 생성 했으므로 ASP.Net에서 미리 볼 수 있지만 미리보기없이 프린터로 직접 보내야합니다. 사용자가 인쇄 버튼을 클릭하면 자동으로 문서가 인쇄되기를 원합니다.미리보기없이 ASP.Net에서 PDF 인쇄하기

페이지를 자바 스크립트 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

embedd-tag가있는 페이지에 PDF가 삽입되어 있습니까, 아니면 방금 프레임에 열렸는지 또는 어떻게 표시합니까?

삽입 된 경우 개체가 선택되었는지 확인한 다음 print()를 수행하십시오.

임베디드 문서를 참조하십시오.

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

내가 그것을 테스트 havent 한,하지만 나는 그것에 대해 읽고, 그것을 대신 인쇄 할 것을 mypdf.pdf을 수 있도록 이런 방식으로 사용할 수 있습니다 또한

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

,이 보석을 시도 페이지 내용을 인쇄하는 데 사용하는 방법에 관계없이

자세한 내용은 media = "print"를 검색하십시오.

+0

확실히 해 드리겠습니다을 사용하는 경우 그것은 좀 더 까다로운. –

+0

좋은 생각이지만 작동시키지 못했습니다. Chrome과 FF는 IE9가 빈 페이지를 제공하는 것으로 무시합니다. –

0

당신은 브라우저에 pdf를로드하자마자 사용자가 인쇄 대화 상자를 얻을 수 있도록 pdf에 javascript를 포함시킬 수 있습니다.

내가 iTextSharp에 대해 잘 모르겠지만, 내가 사용하는 자바 스크립트 iTextSharp를 들어

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

, 난, 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과 자바 스크립트에 새로 온 사람하고 있다는 점이다 나는 완전한 소스 코드가없는 경우 나는 당신의 제안을 코드화 할 수는 없지만 적어도 첫 단계는 html과 javascript에서 얼마나 많은 코드를 배워야하는지 매우 놀랐다. Thnx.

1

당신이 pdfsharp하지만이 방법은 IE8에 빈 페이지를 인쇄 찾을

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";