當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