PDF/A-1b dc:title 的合规性问题
PDF/A-1b compliance problem with dc:title
问题:
我正在尝试创建一个 PDF/A-1b 兼容文件,从 java 开始使用 JasperReports。
我正在使用 Adobe Acrobat Pro DC 通过 preflight 工具检查文件,这给我一个关于字段 dc:title
的错误,这是错误的屏幕截图:
我试过以任何可能的方式设置 属性,但我仍然收到此错误,我不明白为什么。我试过在 http://purl.org/dc/elements/1.1/dc:title 上阅读,但我没有发现任何有用的东西。
我怀疑这份关于元数据 - > 高级 -> http://purl.org/dc/elements/1.1 的报告,我看到 dc:title
是空的,dc:title[1]
是填充的,但我不知道如何设置第一个。
代码片段
Session session = getMyConnection();
SessionImpl sessionImpl = (SessionImpl) session;
Connection conn = sessionImpl.connection();
String title = "Test title";
Map<String, Object> hm = new HashMap<>();
hm.put(JRHibernateQueryExecuterFactory.PARAMETER_HIBERNATE_SESSION, session);
hm.put("ID", getTestId();
hm.put("reportTitle", title); //Title here
hm.put("info.title", title); //Title here
JasperReport jasperReport = JasperCompileManager
.compileReport("c:/eglobal/TEST_REPORT.jrxml");
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, hm, conn);
jasperPrint.setProperty(PdfExporterConfiguration.PROPERTY_METADATA_TITLE, title); //Title here
JRPdfExporter exporter = new JRPdfExporter();
SimplePdfExporterConfiguration configuration = new SimplePdfExporterConfiguration();
configuration.setPdfaConformance(PdfaConformanceEnum.PDFA_1B);
configuration.setIccProfilePath("c:/eglobal/AdobeRGB1998.icc");
configuration.setMetadataTitle(title); //Title here
configuration.setDisplayMetadataTitle(true);
exporter.setExporterInput(new SimpleExporterInput(jasperPrint));
exporter.setExporterOutput(new SimpleOutputStreamExporterOutput("c:/eglobal/TEST_REPORT.PDF"));
exporter.setConfiguration(configuration);
exporter.exportReport();
如您所见,标题以各种可能的方式设置(请参阅 //Title here
评论):我已经分别尝试过它们中的每一个,但没有任何变化。
图书馆
这些是我正在使用的库
<jasperVersion>6.16.0</jasperVersion>
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports-fonts</artifactId>
<version>${jasperVersion}</version>
</dependency>
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>${jasperVersion}</version>
</dependency>
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports-metadata</artifactId>
<version>${jasperVersion}</version>
</dependency>
在 JasperReport 库中将代码读入 JRPdfExporter
时,我发现一条评论说:
iText 2.1.7 does not properly write localized properties and
keywords. XMP metadata might be non conforming, include the Adobe XMP
library to correct
所以我在 Jasper Report 的 pom.xml
中发现了一个特定的 Adobe 库(在该 pom 中设置为可选):
<dependency>
<groupId>com.adobe.xmp</groupId>
<artifactId>xmpcore</artifactId>
<version>5.1.3</version>
</dependency>
在我的 pom 中添加这个依赖项解决了问题
问题:
我正在尝试创建一个 PDF/A-1b 兼容文件,从 java 开始使用 JasperReports。
我正在使用 Adobe Acrobat Pro DC 通过 preflight 工具检查文件,这给我一个关于字段 dc:title
的错误,这是错误的屏幕截图:
我试过以任何可能的方式设置 属性,但我仍然收到此错误,我不明白为什么。我试过在 http://purl.org/dc/elements/1.1/dc:title 上阅读,但我没有发现任何有用的东西。
我怀疑这份关于元数据 - > 高级 -> http://purl.org/dc/elements/1.1 的报告,我看到 dc:title
是空的,dc:title[1]
是填充的,但我不知道如何设置第一个。
代码片段
Session session = getMyConnection();
SessionImpl sessionImpl = (SessionImpl) session;
Connection conn = sessionImpl.connection();
String title = "Test title";
Map<String, Object> hm = new HashMap<>();
hm.put(JRHibernateQueryExecuterFactory.PARAMETER_HIBERNATE_SESSION, session);
hm.put("ID", getTestId();
hm.put("reportTitle", title); //Title here
hm.put("info.title", title); //Title here
JasperReport jasperReport = JasperCompileManager
.compileReport("c:/eglobal/TEST_REPORT.jrxml");
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, hm, conn);
jasperPrint.setProperty(PdfExporterConfiguration.PROPERTY_METADATA_TITLE, title); //Title here
JRPdfExporter exporter = new JRPdfExporter();
SimplePdfExporterConfiguration configuration = new SimplePdfExporterConfiguration();
configuration.setPdfaConformance(PdfaConformanceEnum.PDFA_1B);
configuration.setIccProfilePath("c:/eglobal/AdobeRGB1998.icc");
configuration.setMetadataTitle(title); //Title here
configuration.setDisplayMetadataTitle(true);
exporter.setExporterInput(new SimpleExporterInput(jasperPrint));
exporter.setExporterOutput(new SimpleOutputStreamExporterOutput("c:/eglobal/TEST_REPORT.PDF"));
exporter.setConfiguration(configuration);
exporter.exportReport();
如您所见,标题以各种可能的方式设置(请参阅 //Title here
评论):我已经分别尝试过它们中的每一个,但没有任何变化。
图书馆
这些是我正在使用的库
<jasperVersion>6.16.0</jasperVersion>
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports-fonts</artifactId>
<version>${jasperVersion}</version>
</dependency>
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>${jasperVersion}</version>
</dependency>
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports-metadata</artifactId>
<version>${jasperVersion}</version>
</dependency>
在 JasperReport 库中将代码读入 JRPdfExporter
时,我发现一条评论说:
iText 2.1.7 does not properly write localized properties and keywords. XMP metadata might be non conforming, include the Adobe XMP library to correct
所以我在 Jasper Report 的 pom.xml
中发现了一个特定的 Adobe 库(在该 pom 中设置为可选):
<dependency>
<groupId>com.adobe.xmp</groupId>
<artifactId>xmpcore</artifactId>
<version>5.1.3</version>
</dependency>
在我的 pom 中添加这个依赖项解决了问题