itextsharp生成pdf后的直接打印问题

简介: 原文 itextsharp生成pdf后的直接打印问题 小弟这两天用itextsharp生成pdf文档,生成的pdf可以直接保存在指定路径的文件夹下,可是user不想保存,想要点一下button,就可以直接打印,我搞了半天也没找到合适的方法,还希望有做过这方面的,给些建议.多谢多谢啦 我的代码是这样的:  iTextSharp.

原文 itextsharp生成pdf后的直接打印问题

小弟这两天用itextsharp生成pdf文档,生成的pdf可以直接保存在指定路径的文件夹下,可是user不想保存,想要点一下button,就可以直接打印,我搞了半天也没找到合适的方法,还希望有做过这方面的,给些建议.多谢多谢啦
我的代码是这样的:
  iTextSharp.text.Rectangle page = new Rectangle(683,850);
 iTextSharp.text.Document document = new iTextSharp.text.Document(page, 71, 43, 60, 28);
            try
            {
                // and directs a PDF-stream to a file
                PdfWriter.GetInstance(document, new FileStream("C:\\" + DateTime.Now.ToString("yyyyMMdd") +  ".pdf", FileMode.Create));
                document.Open();
        //我增加的文档内容部分
            }
            catch (Exception e)
            {
            }
            // close the document
            document.Close();
        }

解决方法:

我把我的解决办法也贴出来吧,
1,把生成PDF文档到MemoryStream.
MemoryStream pdfdata = new MemoryStream();
PdfWriter writer = PdfWriter.GetInstance(document, pdfdata);
2,在PdfWriter中加javescript.

StringBuilder script = new StringBuilder();
                script.Append("this.print({bUI: true,bSilent: true,bShrinkToFit: false});");

                writer.ViewerPreferences = PdfWriter.HideMenubar | PdfWriter.HideToolbar | PdfWriter.HideWindowUI;
                writer.AddJavaScript(script.ToString());
3,输出到客户端缓存.

        protected void submit_Click(object sender, EventArgs e)
        {
            MemoryStream PDFData =1中的返回值;
            Response.Clear();
            Response.ClearContent();
            Response.ClearHeaders();
            Response.ContentType = "application/pdf";
            Response.Charset = string.Empty;
            Response.Cache.SetCacheability(System.Web.HttpCacheability.Public);
            Response.AddHeader("Content-Disposition",
            "inline; filename=" + Title.Replace(" ", "").Replace(":", "-") + ".pdf");

            Response.OutputStream.Write(PDFData.GetBuffer(), 0, PDFData.GetBuffer().Length);
            Response.OutputStream.Flush();
            Response.OutputStream.Close();
        }
4,我在页面上放一个iframe(width=0,height=0),就是让他不可见,让pdf文档在他下面打开,就会执行打印动作.
 <form id="form1" runat="server" target="iframe1">
        <div><center>        
        <br />
        <asp:Button ID="submit" runat="server" OnClick="submit_Click" Text="Print PO" />
         </center></div>
    </form>
    <iframe name="iframe1" width="0" height="0">      
    </iframe>
希望对想和我实现一样功能的朋友有些参考价值.

目录
相关文章
|
JavaScript 前端开发
React+html2canvas+jspdf+antd快速实现前端pdf预览及打印
文章的总结目标实际上就是一个前端pdf打印组件,由於能在往后的其他项目中得以快速上手,并能根据所在项目需要快速自定义扩展,因此組件非常简陋直白,文章是实践过程的记录产物,并不保证完全正确,仅作参考。
React+html2canvas+jspdf+antd快速实现前端pdf预览及打印
Java预览及打印PDF的三种方法
Java预览及打印PDF的三种方法
3318 1
Java预览及打印PDF的三种方法
|
前端开发
前端项目实战127-JsPDF转化pdf进行打印
前端项目实战127-JsPDF转化pdf进行打印
145 0
|
JavaScript
打印二维码和图片pdf
打印二维码和图片pdf
126 0
|
Java Linux 数据安全/隐私保护
wkhtmltopdf+itext实现html生成pdf文件的打印下载(适用于linux及windows)
目中遇到个根据html转Java的功能,在java中我们itext可以快速的实现pdf打印下载的功能,在itext中我们一般有以下三中方式实现 配置pdf模板,通过Adobe Acrobat 来设置域最后通过代码将数据填充进去 通过FreeMarker或thymeleaf配置html模板填充数据 Jsoup+XMLWorkerHelper 对于上述的三种方式,我简述下我的体验:第一种方式对于入门简单,如果我们需求中的pdf文件是表格或者报表的样式还是很好实现的,但如果遇到要求和html样式一致的话就基本歇菜了。
3393 0