javascript 打印网页成pdf文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript 打印网页成pdf文件相关的知识,希望对你有一定的参考价值。

就是将jsp页面打印成pdf文件
有源码的更好
谢谢

参考技术A 通过javascript实现PDF自动打印(2009-05-08 15:06:05)
protected void Page_Load(object sender, EventArgs e)

if (!IsPostBack)

string pdffile = createpdf(false);
iframe1.Attributes.Add("src", pdffile);



private string createpdf(bool print)

try

string filename = "Chap0106.pdf";
iTextSharp.text.Document doc = new iTextSharp.text.Document();
PdfWriter writer = iTextSharp.text.pdf.PdfWriter.getInstance(doc, new FileStream(Server.MapPath(filename), FileMode.OpenOrCreate));
doc.Open();
doc.Add(new Paragraph(6, "abcd"));
writer.setViewerPreferences(PdfWriter.HideMenubar | PdfWriter.HideToolbar);
if (print)

PdfAction.javaScript("myOnMessage();", writer);
writer.addJavaScript("this.print(true);function myOnMessage(aMessage) app.alert('Test',2); var msgHandlerObject = new Object();doc.onWillPrint = myOnMessage;this.hostContainer.messageHandler = msgHandlerObject;");

doc.Close();
return filename;

catch

return "";


protected void Button1_Click(object sender, EventArgs e)

string pdffile = createpdf(true);
iframe1.Attributes.Add("src", pdffile);


如题:
<body>
<object classid="clsid:CA8A9780-280D-11CF-A24D-444553540000" name="PDF1" width="760" height="633" border="0">
<param name="SRC" value="01.pdf"/>
</object>
<script language="JavaScript" type="text/javascript">
PDF1.SetShowToolbar(false);

</script>
</body>
在 pdf 文件里加上这样的属性就可以了

如何也通过类似“PDF1.SetShowToolbar(false); ”控制实现禁止对pdf内容的复制、以及打印!!!谢谢

javascript实现PDF自动打印

网页显示pdf文件,禁止保存和打印

1. 用网页打开 PDF文件。

2. 只可以浏览但是不许打印保存。

结果参照顶楼在jsf里实现如下代码:

//Get response
FacesContext faces = javax.faces.context.FacesContext.getCurrentInstance();
HttpServletResponse response = (HttpServletResponse) faces.getExternalContext().getResponse();

//打开源pdf文件
PdfReader reader = new PdfReader("./HelloWorld.pdf");
Document document = new Document(reader.getPageSizeWithRotation(1));
int n = reader.getNumberOfPages();

ByteArrayOutputStream baos = new ByteArrayOutputStream();
//将原pdf文件中的内容放入字节流baos中
PdfCopy copy = new PdfCopy(document, baos);

//隐藏工具栏并给pdf加密
copy.setViewerPreferences(PdfWriter.HideMenubar | PdfWriter.HideToolbar);
copy.setEncryption(false, null, "pdf", PdfWriter.AllowAssembly);

//往pdf中写入内容
document.open();
for(int i = 1; i <= n; i++)
PdfImportedPage page = copy.getImportedPage(reader, i);
copy.addPage(page);

document.close();

//设置响应类型并将pdf流写入响应
response.setContentType("application/pdf");
response.setContentLength(baos.size());
response.setHeader("Expires", "0");
response.setHeader("Cache-Control",
"must-revalidate, post-check=0, pre-check=0");
response.setHeader("Pragma", "public");
ServletOutputStream out = response.getOutputStream();
//将字节流baos中的内容写入响应流
baos.writeTo(out);
out.flush();

faces.responseComplete();
复制代码

以上代码的缺点:

1:加密只能实现打印和修改加密。

2:虽然隐藏了工具栏,但是可以通过快捷键F8来将工具栏显示出来

3:IE菜单栏中自带的保存功能也能将此pdf保存到本地

4:在客户端没有安装pdf阅读器的情况下,浏览器会直接提示用户是否下载,这也是和需求不符的。

最后经过不懈努力,找到了一个用<object></object>曲线救国的路线,哈哈,先来看看如下代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
</head>
<body>
<tr><td>
<p style="margin-top:-45px;margin-bottom:0px;">
<object classid="clsid:CA8A9780-280D-11CF-A24D-444553540000" id="Pdf1" width="100%" height="100%">
<param name="_Version" value="327680">
<param name="_ExtentX" value="2646">
<param name="_ExtentY" value="1323">
<param name="_StockProps" value="0">
<param name="SRC" value="C:\temp.pdf">
</object>
</p>
</td></tr>
</body>
</html>
复制代码

其中sytle的是用一种比较bt的办法影藏了pdf顶部的工具栏(可以用第一种方法,这个方法作为备用)。

这样即使用ie菜单栏中的保存功能也只是保存网页布局而不会把pdf保存下来。

另外这样即使本地没装pdf阅读器也不会让你下载该pdf了,而只是在相应位置出现叉叉而已。基本能够满足客户的需求了本回答被提问者采纳

以上是关于javascript 打印网页成pdf文件的主要内容,如果未能解决你的问题,请参考以下文章

如何把要打印的网页导出成pdf文件

网页打印怎么转成pdf

如何把网页或者WORD保存成PDF(没有打印机)

js将网页导出成pdf(js 打印指定div内容)2020-09-02

网页批量打印成PDF,并按条件合并成大PDF生成页码

html文件怎么转换成pdf文件