Java 保存PDF格式,但不能打印文件

Java 保存PDF格式,但不能打印文件,java,pdf,netbeans,glassfish,Java,Pdf,Netbeans,Glassfish,我需要在JSP中显示以PDF格式呈现的报告,但是如果您通过web访问报告,则PDF应该是可打印的。报告还允许用户将报告保存为PDF格式,但不允许打印保存的PDF 请帮帮我。目前,我们可以将报告保存为PDF格式,但无法打印。当通过web访问报告时,无法打印报告 我用的是网虫和玻璃鱼 目标: 保存报告,但不允许打印报告 如果通过web访问报告,则打印报告 您可能需要为PDF设置权限。在创建PDF的过程中,应在代码中添加如下内容: import com.itextpdf.text.DocumentEx

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

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

我用的是网虫和玻璃鱼

目标:

  • 保存报告,但不允许打印报告
  • 如果通过web访问报告,则打印报告

  • 您可能需要为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();
    }
    
    我的回答是以实例为基础的

    编辑:您可能会发现,他们在其中提供了以下解决方案:

    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();
    

    但有人指出,在AdobeReader9.3中,打印选项没有被正确禁用。我在最新版本的Adobe Reader中遇到了一些意外行为,请尝试一下代码,看看会发生什么。

    您使用的是哪个pdf实用程序?谢谢您的回复,是的。目前我们正在使用iText库。但我们只能禁用“打印”按钮并将文件另存为pdf。但我们还需要在web应用程序上启用“打印”按钮,并在保存的pdf文件上禁用“打印”按钮。我编辑了答案,因此现在它包含了我想要提供的信息,谢谢您的观察。谢谢您的回复。我尝试使用上面提供的代码,当通过web应用程序访问PDF时,可以打印PDF,但当我尝试将其保存为PDF格式时,PDF也可以打印。有可能做到这一点吗?请尝试删除“PdfWriter.ALLOW|PRINTING |”并在不使用所有者密码的情况下打开(也就是说,使用用户密码打开它,如果没有设置用户密码,则完全不使用密码)。