PDF/A-1b dc:title 的合规性问题

PDF/A-1b compliance problem with dc:title

问题:

我正在尝试创建一个 PDF/A-1b 兼容文件,从 java 开始使用 JasperReports。 我正在使用 Adob​​e 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 中发现了一个特定的 Adob​​e 库(在该 pom 中设置为可选):

    <dependency>
        <groupId>com.adobe.xmp</groupId>
        <artifactId>xmpcore</artifactId>
        <version>5.1.3</version>
    </dependency>

在我的 pom 中添加这个依赖项解决了问题