web-dev-qa-db-ja.com

印刷PDF ASP.Netからプレビューなし

ITextSharpを使用してPDFを生成しましたが、ASP.Netで非常にうまくプレビューできますが、プレビューせずにプリンターに直接送信する必要があります。ユーザーに印刷ボタンをクリックして、自動的にドキュメントを印刷してもらいたい。

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

そして、私はここにいます。

15
Nelson Miranda

最後にそれを作りましたが、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。

6
Nelson Miranda

PDFは、embedd-tagを使用してページに埋め込まれているか、フレームで開かれているだけですか、それをどのように表示していますか?

埋め込まれている場合は、オブジェクトが選択されていることを確認してから、print()を実行します。

埋め込まれたドキュメントへの参照を取得します。

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

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

ブラウザに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

0
Tim

また、この宝石を試してください:

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

私はそれをテストしていませんが、私がそれについて読んだことは、それをこの方法で使用して、ページを印刷するために使用している方法にかかわらず、ページコンテンツの代わりにmypdf.pdfを印刷させることができます。

詳細については、media = "print"を検索してください。

0
Stefan