4

IS_COMPRESSED = trueプロパティを Jasper PDF レポートに適用するにはどうすればよいですか?

これは私が持っているものですが、PDFレポートを作成すると、圧縮が有効になっていないクローンと同じサイズになります:

File pdfFile = new File (pdfDirectory.getAbsolutePath() + File.separator +  reportName + ".pdf");
File jrPrintFile = new File(jrprintFileLocation.getAbsolutePath() + File.separator + templateName + ".jrprint");

JasperPrint jasperPrint = (JasperPrint)JRLoader.loadObject(jrPrintFile);

JRPdfExporter jrPdfExporter = new JRPdfExporter();

jrPdfExporter.setParameter(JRPdfExporterParameter.IS_COMPRESSED, true);
jrPdfExporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
jrPdfExporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, pdfFile.getAbsolutePath());

jrPdfExporter.exportReport();
4

2 に答える 2

7

これは古い質問かもしれませんが、PDFファイルを圧縮する方法を調べるのに時間を費やしたので、答えを共有したいと思います...

setParameterメソッドの代替手段は非推奨であり、同じことを行うには、ドキュメントには PdfExporterConfiguration の実装を使用する必要があることが示されていますSimplePdfExporterConfigurationと呼ばれる単純なものが提供されており、次のように使用する必要があります。

SimplePdfExporterConfiguration configuration = new SimplePdfExporterConfiguration();
configuration.setCompressed(true);

ソースとして XML を使用した PDF 生成の完全な例:

Document document = JRXmlUtils.parse(JRLoader.getLocationInputStream(PATH_XML));

//report parameters
Map params = new HashMap();
//document as a parameter
params.put(JRXPathQueryExecuterFactory.PARAMETER_XML_DATA_DOCUMENT, document);
//other parameters needed for the report generation
params.put("parameterName", parameterValue);

JasperPrint jasperPrint = JasperFillManager.fillReport(PATH_JASPER, params);

JRPdfExporter exporter = new JRPdfExporter();
exporter.setExporterInput(new SimpleExporterInput(jasperPrint));
exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(PATH_PDF));

//configuration
SimplePdfExporterConfiguration configuration = new SimplePdfExporterConfiguration();
configuration.setCompressed(true);

//set the configuration
exporter.setConfiguration(configuration);
//finally exporting the PDF
exporter.exportReport();

ファイルを 4 mb から 1.9 mb に圧縮することができました。誰かがより良い代替手段またはより良い方法を知っている場合は、この回答にコメントしてください。

于 2016-08-09T19:54:06.130 に答える
1

圧縮プロパティ (net.sf.jasperreports.export.pdf.compressed) が各サブレポートに埋め込まれ、「true」に設定されるまで、レポートによって出力される PDF ファイルのサイズは変わらないことがわかりました。

その後、レポートによって作成された PDF のサイズは 4MB から 1MB 強に縮小しました。悪くない。

于 2015-07-07T15:22:49.353 に答える