当前位置: 首页 > news >正文

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

  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
http://www.xdnf.cn/news/1036351.html

相关文章:

  • C++:编译和链接拓展
  • R语言非结构化文本挖掘入门指南
  • tcp, udp , 与 select .
  • 创客匠人:AI重构知识IP定位与变现效率新范式
  • 多态取代条件表达式举例
  • 【Photoshop】使用置换将字体和背景融为一体
  • flask JWT 认证
  • 了解Redis的使用
  • 【AS32系列MCU调试教程】性能优化:Eclipse环境下AS32芯片调试效率提升
  • CSS预编译语言less
  • 键盘按键枚举 Key 说明文档
  • iOS swiftUI的实用举例
  • 人工智能学习15-Numpy-花式索引和索引技巧
  • linux常用基础命令_新
  • Java 数据类型选择题
  • 使用大模型预测短暂性脑缺血发作(TIA)的全流程系统技术方案大纲
  • Python Flask 框架学习笔记
  • Linux操作系统之运维常用命令
  • 华为OD机试_2025 B卷_字符串分割(Python,100分)(附详细解题思路)
  • aflplusplus:开源的模糊测试工具!全参数详细教程!Kali Linux教程!(四)
  • 22 - PSA模块
  • 解惑1、为何大容量电容滤低频,小容量电容滤高频
  • 数据库资源帖
  • 同旺科技 USB TO SPI / I2C适配器(专业版)--EEPROM读写——A
  • 代码随想录算法训练营day4
  • (15)python+ selenium自动化测试 - 回顾2
  • 采用微服务的预期收益是什么?我们如何衡量成功?
  • 大IPD之——学习华为市场洞察,为战略找到方向(四)
  • FastGPT实战:从0搭建AI知识库与MCP AI Agent系统
  • Java求职者面试题解析:Spring、Spring Boot、MyBatis框架与源码原理