vcl/inc/pdf/XmpMetadata.hxx | 1 + vcl/source/gdi/pdfwriter_impl.cxx | 5 ++++- vcl/source/gdi/pdfwriter_impl.hxx | 4 ++++ vcl/source/pdf/XmpMetadata.cxx | 16 ++++++++++++++++ 4 files changed, 25 insertions(+), 1 deletion(-)
New commits: commit 06cbfe71c77cfd61b747b7f80dee37e59cff0118 Author: Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk> AuthorDate: Thu Dec 19 21:09:24 2019 +0100 Commit: Tomaž Vajngerl <qui...@gmail.com> CommitDate: Sun Dec 29 15:12:49 2019 +0100 pdf: support for PDF/UA in PDFWriter, write flag to the metadata This adds support for PDF/UA to the PDFWriter in form of a bool flag and writes into the XmpMetadata that the document is supposed to be PDF/UA compliant (even if it may not be). Change-Id: If187152d3860397fc629e272c5b3888fca34e790 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/85909 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <qui...@gmail.com> diff --git a/vcl/inc/pdf/XmpMetadata.hxx b/vcl/inc/pdf/XmpMetadata.hxx index d9f9cacc45b4..cc3f8da1a34c 100644 --- a/vcl/inc/pdf/XmpMetadata.hxx +++ b/vcl/inc/pdf/XmpMetadata.hxx @@ -31,6 +31,7 @@ public: OString msProducer; OString msKeywords; sal_Int32 mnPDF_A; + bool mbPDF_UA; public: XmpMetadata(); diff --git a/vcl/source/gdi/pdfwriter_impl.cxx b/vcl/source/gdi/pdfwriter_impl.cxx index 891d5db93a7b..e55efc180bb3 100644 --- a/vcl/source/gdi/pdfwriter_impl.cxx +++ b/vcl/source/gdi/pdfwriter_impl.cxx @@ -1307,6 +1307,7 @@ void PDFWriterImpl::PDFPage::appendWaveLine( sal_Int32 nWidth, sal_Int32 nY, sal m_nAccessPermissions(0), m_bIsPDF_A1( false ), m_bIsPDF_A2( false ), + m_bIsPDF_UA( false ), m_rOuterFace( i_rOuterFace ) { m_aStructure.emplace_back( ); @@ -5225,7 +5226,7 @@ static void escapeStringXML( const OUString& rStr, OUString &rValue) // emits the document metadata sal_Int32 PDFWriterImpl::emitDocumentMetadata() { - if( !m_bIsPDF_A1 && !m_bIsPDF_A2 ) + if (!m_bIsPDF_A1 && !m_bIsPDF_A2 && !m_bIsPDF_UA) return 0; //get the object number for all the destinations @@ -5240,6 +5241,8 @@ sal_Int32 PDFWriterImpl::emitDocumentMetadata() else if (m_bIsPDF_A2) aMetadata.mnPDF_A = 2; + aMetadata.mbPDF_UA = m_bIsPDF_UA; + if (!m_aContext.DocumentInfo.Title.isEmpty()) { OUString aTempString; diff --git a/vcl/source/gdi/pdfwriter_impl.hxx b/vcl/source/gdi/pdfwriter_impl.hxx index 6316b7daa92d..6c1dd623951e 100644 --- a/vcl/source/gdi/pdfwriter_impl.hxx +++ b/vcl/source/gdi/pdfwriter_impl.hxx @@ -982,6 +982,10 @@ i12626 bool m_bIsPDF_A1; /* true if PDF/A-2a is output */ bool m_bIsPDF_A2; + + /* PDF/UA support enabled */ + bool m_bIsPDF_UA; + PDFWriter& m_rOuterFace; /* diff --git a/vcl/source/pdf/XmpMetadata.cxx b/vcl/source/pdf/XmpMetadata.cxx index d9033f4875ae..281183c205e8 100644 --- a/vcl/source/pdf/XmpMetadata.cxx +++ b/vcl/source/pdf/XmpMetadata.cxx @@ -26,6 +26,7 @@ constexpr const char* constPadding = " " XmpMetadata::XmpMetadata() : mbWritten(false) , mnPDF_A(0) + , mbPDF_UA(false) { } @@ -107,6 +108,21 @@ void XmpMetadata::write() aXmlWriter.endElement(); } + // PDF/UA + if (mbPDF_UA) + { + OString sPdfUaVersion = OString::number(1); + aXmlWriter.startElement("rdf:Description"); + aXmlWriter.attribute("rdf:about", OString("")); + aXmlWriter.attribute("xmlns:pdfuaid", OString("http://www.aiim.org/pdfua/ns/id/")); + + aXmlWriter.startElement("pdfuaid:part"); + aXmlWriter.content(sPdfUaVersion); + aXmlWriter.endElement(); + + aXmlWriter.endElement(); + } + // PDF properties if (!msProducer.isEmpty() || !msKeywords.isEmpty()) { _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits