保存PDF格式但不应该能够打印文件

时间:2015-12-02 12:24:55

标签: java pdf netbeans glassfish

我需要在JSP中显示以PDF格式呈现的报告,但如果您通过网络访问报告,则PDF应该是可打印的。该报告还允许用户将报告保存为PDF格式,但不允许打印保存的PDF。

请帮帮我。目前我们可以将报告保存为PDF但我们无法打印,当通过网络访问报告时,无法打印报告。

我正在使用NetBeans和GlassFish

目标:

  1. 保存报告但不允许打印报告。
  2. 如果通过网络访问,则打印报告。

1 个答案:

答案 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有一些意想不到的行为,所以试试看代码,看看会发生什么。