我在<iframe>
中显示的PDF如下:
<iframe src="/itextPdfServlet" height="600px" width="700px"></iframe>
我想为此禁用打印选项。我怎样才能做到这一点?
我的servlet
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
String fullPath = (String) request.getSession().getAttribute("fullPath");
response.setContentType("application/pdf");
ServletOutputStream out = null;
try{
File file = new File( fullPath );
FileInputStream fileIn = new FileInputStream( file );
out = response.getOutputStream();
Document document = new Document(PageSize.A4);
PdfWriter writer = PdfWriter.getInstance(document, out);
document.open();
PdfContentByte cb = writer.getDirectContent();
PdfReader reader = new PdfReader(fileIn);
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream("fullPath"));
stamper.setEncryption("reader_password".getBytes(), "permission_password".getBytes(),
~(PdfWriter.ALLOW_COPY | PdfWriter.ALLOW_PRINTING ), PdfWriter.STANDARD_ENCRYPTION_128);
stamper.close();
PdfImportedPage page = writer.getImportedPage(reader, 1);
document.newPage();
cb.addTemplate(page, 0, 0);
document.add(new Paragraph("my timestamp"));
response.setHeader("Expires", "0");
response.setHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0");
response.setHeader("Pragma", "public");
document.close();
}catch(Exception e){
}
}
答案 0 :(得分:2)
像敌人一样对待访客或客户可能不符合您的最佳利益。您可以在生成文件时禁用PDF文件选项中的打印:
PdfReader reader = new PdfReader("testpdf.pdf");
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream("my-pdf-file.pdf"));
stamper.setEncryption("reader_password".getBytes(), "permission_password".getBytes(), ~(PdfWriter.ALLOW_COPY | PdfWriter.ALLOW_PRINTING ), PdfWriter.STANDARD_ENCRYPTION_128);
stamper.close();
但我知道至少有一个不关心这些选项的PDF查看器。我知道很多可以制作屏幕截图的工具,所以即使你的PDF让我生气,我也会打印截图。有屏幕自动化工具甚至可以为我翻页,为每个页面制作一个截图,一个小脚本将从中编译一个新的PDF。
您还可以尝试在Web浏览器中禁用JavaScript打印。这会迫使我安装像Tampermonkey或类似工具一样的工具,将你的脚本从我的浏览器中踢出来。
通常,更好的方法是在PDF文件中放置水印,说明谁下载/购买了文件然后骚扰它们,如果PDF文件泄露出来的话。这样,你就不会烦扰每个人。
那就是说,考虑一下你的PDF价值多少以及起诉某人会花多少钱(金钱和反馈明智)。大多数时候,将你的钱投入到优质的服务中会比你打印PDF文件的人所能获得的收入多得多(他们还必须对这些版画做些什么才能对你的收入,权利产生影响。 。)
答案 1 :(得分:0)
我从未使用过iText,但我认为这可能对你有所帮助: iText Java disable print pdf