iTextSharp PDF printing

≡放荡痞女 提交于 2019-11-30 23:05:16

I found a way to do this here: http://wskidmore.com/2011/03/pdf-initial-view-settings-itextsharp/

Based on that, I wrote this code:

private void PrintMenu()
{
    ...
    var notUriPath = Server.MapPath("~/" + filePathName);

    var doc = new Document();
    var reader = new PdfReader(notUriPath);
    using (var memoryStream = new MemoryStream())
    {
        var writer = PdfWriter.GetInstance(doc, memoryStream);
        doc.Open();

        // this action leads directly to printer dialogue
        var jAction = PdfAction.JavaScript("this.print(true);\r", writer);
        writer.AddJavaScript(jAction);

        var cb = writer.DirectContent;
        doc.AddDocListener(writer);

        for (var p = 1; p <= reader.NumberOfPages; p++)
        {
            doc.SetPageSize(reader.GetPageSize(p));
            doc.NewPage();
            var page = writer.GetImportedPage(reader, p);
            var rot = reader.GetPageRotation(p);
            if (rot == 90 || rot == 270)
                cb.AddTemplate(page, 0, -1.0F, 1.0F, 0, 0, reader.GetPageSizeWithRotation(p).Height);
            else
                cb.AddTemplate(page, 1.0F, 0, 0, 1.0F, 0, 0);
        }

        reader.Close();
        doc.Close();
        File.WriteAllBytes(notUriPath, memoryStream.ToArray());
    }

    theIframeForPrint.Attributes.Add("src", fullFilePath);
}

I hope it helps!

You want to add Javascript to the PDF to open the print dialog, not the web page (unless you really do want the web page print dialog, not the PDF print dialog). I have done this before, but not with iTextSharp; but a quick Google search should tell you how to add Javascript using iTextSharp to open the print dialog.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!