Jasper Report - Set Author property in a PDF docum

2019-02-18 16:07发布

问题:

Is there a way to set the Author property to a PDF document by setting a parameter when calling Jasper from Java.

This is how I generate a Jasper report from Java.

      JasperPrint jasperPrint;
        String outFile = "39285923953222.pdf";
        HashMap hm = new HashMap();
        hm.put("ID",id);
        hm.put("FOOTER",Constants.FOOTER); // Set somehow a string for the author name

        Session session = this.sessionFactory.openSession();
        Connection con = session.connection();

        jasperPrint = JasperFillManager.fillReport(jasperPath + "myReport.jasper", hm, con);
        JasperExportManager.exportReportToPdfFile(jasperPrint, outPath + outFile);  

回答1:

Look at static field METADATA_AUTHOR in JRPdfExporterParameter.
Use JRPdfExporter instead of JasperExportManager.

Example :

JasperPrint jasperPrint = JasperFillManager.fillReport(jasperPath + "myReport.jasper", hm, con);

JRPdfExporter exporter = new JRPdfExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_FILE, outPath + outFile);
exporter.setParameter(JRPdfExporterParameter.METADATA_AUTHOR, "Adnan");
exporter.setParameter(JRPdfExporterParameter.METADATA_TITLE, "Title");
// ...
exporter.exportReport();


回答2:

Not sure if it is the right way to go, but you might want to look at jasperPrint.getPropertyNames() or jasperPrint.getPropertiesMap() and see if you have any author property in there.



回答3:

JRExporter became deprecated in 5.6 according to this post. I got it to work doing this:

    ...
    final JRPdfExporter exporter = new JRPdfExporter();
    exporter.setExporterInput(new SimpleExporterInput(jasperPrint));
    final SimplePdfExporterConfiguration configuration = new SimplePdfExporterConfiguration();
    configuration.setMetadataTitle(title);
    configuration.setMetadataAuthor(author);
    configuration.setMetadataCreator(creator);
    configuration.setMetadataSubject(subject);
    configuration.setMetadataKeywords(keywords);
    ...