如何使用 birt 报告引擎生成密码保护的 pdf api

How to generate password protected pdf using birt report engine api

我已成功使用 BIRT 报告引擎 api 使用外部 oracle 数据源生成 pdf。为了生成设计,我使用了 eclipse BIRT 报告设计器。我的下一个任务是将此 pdf 设置为受密码保护。 请指导做同样的事情。 下面是生成 pdf

的代码
package com.birt.Main;
import org.eclipse.birt.core.exception.BirtException;
import org.eclipse.birt.core.framework.Platform;
import org.eclipse.birt.report.engine.api.EngineConfig;
import org.eclipse.birt.report.engine.api.EngineException;
import org.eclipse.birt.report.engine.api.IReportRunnable;
import org.eclipse.birt.report.engine.api.IRunAndRenderTask;
import org.eclipse.birt.report.engine.api.PDFRenderOption;
import org.eclipse.birt.report.engine.api.ReportEngine;

public class MainPdf {

    public static void main(String[] args){
        try {
            EngineConfig config = new EngineConfig();

            Platform.startup(config);

            ReportEngine engine = new ReportEngine(config);
            String reportDesign = "new_report.rptdesign";
            IReportRunnable reportRunnable = engine.openReportDesign(reportDesign);
            IRunAndRenderTask runAndRender = engine.createRunAndRenderTask(reportRunnable);

            PDFRenderOption option = new PDFRenderOption();
            option.setOutputFileName("output/resample/mypdf.pdf");
            option.setOutputFormat("pdf");
            runAndRender.setRenderOption(option);
            runAndRender.run();
            runAndRender.close();
            engine.destroy();
            Platform.shutdown();
        } catch (EngineException e) {
            e.printStackTrace();
        } catch (BirtException e) {
            e.printStackTrace();
        }
    }

} 

我使用的是 org.eclipse.birt.runtime 的 4.2.0 以下版本 生成的 pdf 的屏幕截图

I got it done through itext library . Here is the added code

PdfReader reader = new PdfReader("output/resample/temp.pdf");
            PdfStamper stamper = new PdfStamper(reader, new FileOutputStream("output/resample/mypdf.pdf"));
            stamper.setEncryption(USER_PASS.getBytes(), OWNER_PASS.getBytes(),
                    PdfWriter.ALLOW_PRINTING, PdfWriter.ENCRYPTION_AES_128);
            stamper.close();
            reader.close();
            System.out.println("Done");

temp.pdf 是使用 BIRT 生成的。 使用的资源是here