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
相关推荐
CHANG_THE_WORLD4 小时前
字体 Unicode 区块字符展示 PDF 生成器
pdf·libharu
Gq.xxu4 小时前
RAG实战之dify源码文件解析-pdf文件解析流程
开发语言·python·pdf
Kyln.Wu4 小时前
【python实用小脚本-131】Python 实现 HTML 到 PDF 转换:解决文档处理痛点的高效工具
python·pdf·html
KeThink17 小时前
国民经济行业分类 GB/T 4754—2017 (PDF和exce版本)
pdf·excel
开开心心_Every20 小时前
全能视频处理工具介绍说明
开发语言·人工智能·django·pdf·flask·c#·音视频
Right.W1 天前
生成PDF文件(基于 iText PDF )
spring cloud·pdf
heart000_12 天前
128K 长文本处理实战:腾讯混元 + 云函数 SCF 构建 PDF 摘要生成器
人工智能·自然语言处理·pdf
开开心心_Every2 天前
便捷的Office批量转PDF工具
开发语言·人工智能·r语言·pdf·c#·音视频·symfony
斯~内克2 天前
基于Vue.js和PDF-Lib的条形码生成与批量打印方案
前端·vue.js·pdf
Eiceblue3 天前
【免费.NET方案】CSV到PDF与DataTable的快速转换
开发语言·pdf·c#·.net