【问题标题】:PDF/A-1b compliance problem with dc:titledc:title 的 PDF/A-1b 合规性问题
【发布时间】:2026-01-11 20:05:02
【问题描述】:

问题:

我正在尝试创建一个符合 PDF/A-1b 的文件,从使用 JasperReports 的 java 开始。 我正在使用 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] 已填充,但我不知道如何设置第一个。

代码 sn-p

    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>

【问题讨论】:

    标签: java maven itext jasper-reports pdfa


    【解决方案1】:

    在将代码读入 JasperReport 库中的 JRPdfExporter 时,我发现一条评论说:

    iText 2.1.7 未正确编写本地化属性和 关键词。 XMP 元数据可能不符合要求,包括 Adob​​e XMP 图书馆改正

    所以我在 Jasper Report 的 pom.xml 中发现有一个特定的 Adob​​e 库(在 pom 中设置为可选):

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

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

    【讨论】: