JasperReport生成PDF/A类型文档
当JasperReport导出的文档为PDF/A模式时,该PDF为只读可以防止被修改。
- 设置导出参数
JRPdfExporter exporter = new JRPdfExporter();exporter.setExporterInput(SimpleExporterInput.getInstance(jasperPrints));exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(filePath));// 设置支持SVG显示// SimplePdfReportConfiguration pdfReportConfiguration = new SimplePdfReportConfiguration();// pdfReportConfiguration.setForceSvgShapes(true);// exporter.setConfiguration(pdfReportConfiguration);// 配置 PDF 属性SimplePdfExporterConfiguration exportConfig = new SimplePdfExporterConfiguration();exportConfig.setPdfVersion(PdfVersionEnum.VERSION_1_7);exportConfig.setPdfaConformance(PdfaConformanceEnum.PDFA_1A); //高级配置:PDF/X-1a:2001exportConfig.setIccProfilePath("D:/CNFRD2.ICC");exportConfig.setMetadataAuthor("作者姓名");exportConfig.setMetadataCreator("创建者姓名");exportConfig.setMetadataTitle("PDF 标题");exportConfig.setMetadataSubject("PDF 主题");exportConfig.setMetadataKeywords("关键字1, 关键字2");exporter.setConfiguration(exportConfig);exporter.exportReport();
其中ICC文件可以在Windows系统找到对应的内容,具体路径在C:\Windows\System32\spool\drivers\color里面。
- 定义导出字体
创建jasperreports_extension.properties文件在resources目录下:
net.sf.jasperreports.extension.registry.factory.simple.font.families=net.sf.jasperreports.engine.fonts.SimpleFontExtensionsRegistryFactory
net.sf.jasperreports.extension.simple.font.families.fonts=jasperreport/fonts/fonts.xml
其中fonts.xml文件内容如下所示
<?xml version="1.0" encoding="UTF-8"?><fontFamilies><fontFamily name="Microsoft YaHei UI"><normal>classpath:jasperreport/fonts/mysh.ttf</normal><bold>classpath:jasperreport/fonts/mysh.ttf</bold><italic>classpath:jasperreport/fonts/mysh.ttf</italic><boldItalic>classpath:jasperreport/fonts/mysh.ttf</boldItalic><pdfEncoding>Identity-H</pdfEncoding><pdfEmbedded>true</pdfEmbedded><exportFonts><export key="net.sf.jasperreports.html">'Microsoft YaHei UI'</export></exportFonts></fontFamily><fontFamily name="思源黑体 CN Regular"><normal>classpath:jasperreport/fonts/AlibabaPuHuiTi-2-55-Regular.ttf</normal><bold>classpath:jasperreport/fonts/AlibabaPuHuiTi-2-55-Regular.ttf</bold><italic>classpath:jasperreport/fonts/AlibabaPuHuiTi-2-55-Regular.ttf</italic><boldItalic>classpath:jasperreport/fonts/AlibabaPuHuiTi-2-55-Regular.ttf</boldItalic><pdfEncoding>Identity-H</pdfEncoding><pdfEmbedded>true</pdfEmbedded><exportFonts><export key="net.sf.jasperreports.html">'思源黑体 CN Regular'</export></exportFonts></fontFamily><fontFamily name="思源黑体 CN Bold"><normal>classpath:jasperreport/fonts/AlibabaPuHuiTi-2-85-Bold.ttf</normal><bold>classpath:jasperreport/fonts/AlibabaPuHuiTi-2-85-Bold.ttf</bold><italic>classpath:jasperreport/fonts/AlibabaPuHuiTi-2-85-Bold.ttf</italic><boldItalic>classpath:jasperreport/fonts/AlibabaPuHuiTi-2-85-Bold.ttf</boldItalic><pdfEncoding>Identity-H</pdfEncoding><pdfEmbedded>true</pdfEmbedded><exportFonts><export key="net.sf.jasperreports.html">'思源黑体 CN Bold'</export></exportFonts></fontFamily><fontFamily name="思源黑体 CN Medium"><normal>classpath:jasperreport/fonts/AlibabaPuHuiTi-2-65-Medium.ttf</normal><bold>classpath:jasperreport/fonts/AlibabaPuHuiTi-2-65-Medium.ttf</bold><italic>classpath:jasperreport/fonts/AlibabaPuHuiTi-2-65-Medium.ttf</italic><boldItalic>classpath:jasperreport/fonts/AlibabaPuHuiTi-2-65-Medium.ttf</boldItalic><pdfEncoding>Identity-H</pdfEncoding><pdfEmbedded>true</pdfEmbedded><exportFonts><export key="net.sf.jasperreports.html">'思源黑体 CN Medium'</export></exportFonts></fontFamily>
</fontFamilies>
- 定义全局默认字体
创建jasperreports.properties文件在resources目录下:
#全局使用的默认字体
net.sf.jasperreports.default.font.name=Microsoft YaHei UI
net.sf.jasperreports.default.font.size=12
net.sf.jasperreports.default.pdf.font.name=Microsoft YaHei UI
net.sf.jasperreports.default.pdf.font.size=12
net.sf.jasperreports.default.pdf.encoding=Identity-H
net.sf.jasperreports.default.pdf.embedded=true