JasperReport生成PDF/A类型文档

当JasperReport导出的文档为PDF/A模式时,该PDF为只读可以防止被修改。

  1. 设置导出参数

    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:2001
         exportConfig.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里面。

  1. 定义导出字体

创建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>
  1. 定义全局默认字体

创建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
相关推荐
NON-JUDGMENTAL1 天前
《Local_Pdf_Chat_RAG 深度学习笔记:PDF 本地化对话的 RAG 原理与实践》
笔记·pdf
Metaphor6921 天前
Java 旋转 PDF 页面:使用 Spire.PDF 实现高效页面处理
java·经验分享·pdf
拓端研究室1 天前
专题:2025零售数字化与即时零售竞争洞察报告|附130+份报告PDF、数据仪表盘汇总下载
pdf·零售
精致先生2 天前
多模态PDF解析
pdf·大模型·rag
啦啦9117142 天前
Print Conductor打印软件安装教程!一款非常好用的批量打印软件!支持PDF、Word、Excel、图片等
pdf·excel
yz17800414103 天前
window pdf文件批量转高清图片png、jpg
pdf·bash
老歌老听老掉牙3 天前
PDF转图片工具:基于PyQt5的完整实现与深度解析
python·qt·pdf
winfredzhang4 天前
python图片处理与PDF生成程序详解
python·pdf·图片·解压
vectorlogic4 天前
万兴PDF专家免费版下载安装教程
其他·pdf
伊织code4 天前
python-poppler - PDF文档处理Python绑定库
开发语言·python·pdf·python-poppler