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");
...
そして、私はここにいます。
最後にそれを作りましたが、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。
PDFは、embedd-tagを使用してページに埋め込まれているか、フレームで開かれているだけですか、それをどのように表示していますか?
埋め込まれている場合は、オブジェクトが選択されていることを確認してから、print()を実行します。
埋め込まれたドキュメントへの参照を取得します。
var x = document.getElementById("mypdfembeddobject");
x.click();
x.setActive();
x.focus();
x.print();
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";
ブラウザに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
また、この宝石を試してください:
<link ref="mypdf" media="print" href="mypdf.pdf">
私はそれをテストしていませんが、私がそれについて読んだことは、それをこの方法で使用して、ページを印刷するために使用している方法にかかわらず、ページコンテンツの代わりにmypdf.pdfを印刷させることができます。
詳細については、media = "print"を検索してください。