我需要在JSP中显示以PDF格式呈现的报告,但如果您通过网络访问报告,则PDF应该是可打印的。该报告还允许用户将报告保存为PDF格式,但不允许打印保存的PDF。
请帮帮我。目前我们可以将报告保存为PDF但我们无法打印,当通过网络访问报告时,无法打印报告。
我正在使用NetBeans和GlassFish
目标:
答案 0 :(得分:0)
您可能需要为PDF设置权限。在创建PDF期间的代码中,您应该添加如下内容:
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfStamper;
import com.itextpdf.text.pdf.PdfWriter;
import java.io.File;
import java.io.FileOutputStream;
public void manipulatePdf(String src, String dest) throws IOException, DocumentException {
PdfReader reader = new PdfReader(src);
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));
stamper.setEncryption("Hello".getBytes(), "World".getBytes(),
PdfWriter.ALLOW_PRINTING, PdfWriter.ENCRYPTION_AES_128 | PdfWriter.DO_NOT_ENCRYPT_METADATA);
stamper.close();
reader.close();
}
我的回答基于示例found here。
编辑:你也可能会发现 this question很有用,他们提供了这个解决方案:
PdfReader reader = new PdfReader("my-old-file.pdf");
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream("my-new-file.pdf"));
stamper.setEncryption("my-owner-password".getBytes(), "my-user-password".getBytes(),
PdfWriter.AllowPrinting | PdfWriter.AllowCopy, PdfWriter.STRENGTH40BITS);
stamper.close();
但有人表示,在Adobe Reader 9.3中,打印选项未被正确禁用。我对最新版本的Adobe Reader有一些意想不到的行为,所以试试看代码,看看会发生什么。