From 2b68e8bc0303432625a87d6dd60d5e6c3de9be72 Mon Sep 17 00:00:00 2001 From: Tomaž Vajngerl Date: Tue, 17 Dec 2024 23:48:52 +0900 Subject: pdf: write correct conformance XPM metadata for PDF/A-4 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Also write pdfaid:rev when we write metadata for PDF/A-4 (revision 2020). Change-Id: Idb1864ca2b66aa43e8c2f118e945d5fb37932935 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178676 Tested-by: Jenkins CollaboraOffice Reviewed-by: Miklos Vajna Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178780 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl --- vcl/source/gdi/pdfwriter_impl.cxx | 9 +++++++++ vcl/source/pdf/XmpMetadata.cxx | 22 +++++++++++++--------- 2 files changed, 22 insertions(+), 9 deletions(-) (limited to 'vcl/source') diff --git a/vcl/source/gdi/pdfwriter_impl.cxx b/vcl/source/gdi/pdfwriter_impl.cxx index 7a521e27dbf6..e43dbe1b1cac 100644 --- a/vcl/source/gdi/pdfwriter_impl.cxx +++ b/vcl/source/gdi/pdfwriter_impl.cxx @@ -5880,6 +5880,15 @@ sal_Int32 PDFWriterImpl::emitDocumentMetadata() lcl_assignMeta(m_aContext.DocumentInfo.Subject, aMetadata.msSubject); lcl_assignMeta(m_aContext.DocumentInfo.Producer, aMetadata.msProducer); aMetadata.msPDFVersion = getPDFVersionStr(m_aContext.Version); + if (m_nPDFA_Version == 4) + { + // if we have embedded files we need to use conformance level "F" + aMetadata.msConformance = m_aEmbeddedFiles.empty() ? ""_ostr : "F"_ostr; + } + else + { + aMetadata.msConformance = "B"_ostr; + } lcl_assignMeta(m_aContext.DocumentInfo.Keywords, aMetadata.msKeywords); lcl_assignMeta(m_aContext.DocumentInfo.Contributor, aMetadata.maContributor); lcl_assignMeta(m_aContext.DocumentInfo.Coverage, aMetadata.msCoverage); diff --git a/vcl/source/pdf/XmpMetadata.cxx b/vcl/source/pdf/XmpMetadata.cxx index 47d76f187d02..c7e6b17deb3d 100644 --- a/vcl/source/pdf/XmpMetadata.cxx +++ b/vcl/source/pdf/XmpMetadata.cxx @@ -27,12 +27,7 @@ constexpr const char* constPadding = " " "\n"; } -XmpMetadata::XmpMetadata() - : mbWritten(false) - , mnPDF_A(0) - , mbPDF_UA(false) -{ -} +XmpMetadata::XmpMetadata() = default; void XmpMetadata::write() { @@ -62,10 +57,19 @@ void XmpMetadata::write() aXmlWriter.content(sPdfVersion); aXmlWriter.endElement(); - aXmlWriter.startElement("pdfaid:conformance"); - aXmlWriter.content("B"_ostr); - aXmlWriter.endElement(); + if (mnPDF_A == 4) + { + aXmlWriter.startElement("pdfaid:rev"); + aXmlWriter.content("2020"_ostr); + aXmlWriter.endElement(); + } + if (!msConformance.isEmpty()) + { + aXmlWriter.startElement("pdfaid:conformance"); + aXmlWriter.content(msConformance); + aXmlWriter.endElement(); + } aXmlWriter.endElement(); } -- cgit