生成自动打印的PDF

Joe*_*man 11 c# pdf asp.net itextsharp

我有一个生成PDF的ASP.NET Web应用程序.我正在使用iTextSharp.会发生什么是您单击按钮并下载.我的雇主希望能够单击按钮并使用打印对话框打开它.

yms*_*yms 12

方法1:在PDF文件中使用嵌入式javascript您可以尝试使用javascript调用创建iText PDFAction对象this.print(false)(您可以使用new PdfAction(PdfAction.PRINTDIALOG)此方法),并将其与pdf文件的OpenAction事件相关联.

iText Java中的代码应如下所示:

PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("file.pdf"));
...
PdfAction action = new PdfAction(PdfAction.PRINTDIALOG);
writer.setOpenAction(action);
...
Run Code Online (Sandbox Code Playgroud)

它在C#中应该不会太差异.

作为旁注,通过在文档类中将属性"AutoPrint"设置为TRUE(适用通常的免责声明),Amyuni PDF Creator .Net也可以实现这一点.

acPDFCreatorLib.Initialize();
acPDFCreatorLib.SetLicenseKey("Amyuni Tech.", "07EFCDA00...BC4FB9CFD");
Amyuni.PDFCreator.IacDocument document = pdfCreator1.Document;

// Open a PDF document from file
System.IO.FileStream file1 = new System.IO.FileStream("test_input.pdf", FileMode.Open, FileAccess.Read, FileShare.Read);

IacDocument document = new IacDocument(null);

if (document.Open(file1, ""))
{
    //Set AutoPrint
    document.Attribute("AutoPrint").Value = true;

    //Save the document
    System.IO.FileStream file2 = new System.IO.FileStream("test_output.pdf", System.IO.FileMode.Create, System.IO.FileAccess.Write);
    document.Save(file2, Amyuni.PDFCreator.IacFileSaveOption.acFileSaveView);
}

// Disposing the document before closing the stream clears out any data structures used by the Document object
document.Dispose();

file1.Close();

// terminate library to free resources
acPDFCreatorLib.Terminate();
Run Code Online (Sandbox Code Playgroud)

这种方法需要在将负责打印的阅读器中打开PDF文件,并且其缺点是如果文件是在本地保存的,则每次稍后打开文件时都会显示打印对话框.

方法2:使用浏览器中的javascript与显示文件的阅读器进行通信.
我在这个SO问题中发现了另一种可能值得尝试的方法:

<html>
<script language="javascript">
timerID = setTimeout("exPDF.print();", 1000);
</script>
<body>
<object id="exPDF" type="application/pdf" data="111.pdf" width="100%" height="500"/>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

我们的想法是在浏览器中使用javascript来指示PDF阅读器打印文件.此方法适用于嵌入在HTML页面中的PDF文件.