2017-10-16 105 views
1

我想用jasper创建不可打印的pdf,但是用户可以显示pdf,但是他们不能打印PDF。我不想要任何pdf密码限制。我已经研究过碧玉的文档,但是我找不到任何关于它的事情。在java中使用jasper或itext可以创建不可打印的pdf吗?

有无论如何解决我的问题?我已经感谢你的帮助。

+0

碧玉不允许你这样做。您可以对文件进行一些属性更改。您可以限制打印该文件。 – Lokesh

回答

1

可以使用的iText的PdfStamper进行后处理您的PDF:

byte[] pdfContent = /* your PDF content here */; 
ByteArrayOutputStream stampedPdfContent = new ByteArrayOutputStream(); 
PdfReader reader = new PdfReader(pdfContent); 
PdfStamper stamper = new PdfStamper(reader, stampedPdfContent); 
stamper.setEncryption(null, null, ~(PdfWriter.ALLOW_PRINTING), PdfWriter.STANDARD_ENCRYPTION_128); 
stamper.close(); 
pdfContent = stampedPdfContent.toByteArray(); // your PDF is now non printable 
+0

是的,这是另一种方法来实现 – Lokesh

+0

OP说*“我不希望任何pdf密码限制。”*严格地说,这不包括你的解决方案,因为你使用密码加密(即使它是一个默认密码和一个随机生成,未知之一)。 – mkl

+0

@mkl问题在于,在PDF格式中,打印限制与设置“权限密码”相关。例如,请参阅Adobe网站上的此页(https://helpx.adobe.com/acrobat/how-to/security-permissions-protect-pdf-files.html)。所以,如果你想禁止打印,你必须设置密码。 –

相关问题