diff options
author | Sarper Akdemir <sarper.akdemir.extern@allotropia.de> | 2023-08-31 02:59:51 +0300 |
---|---|---|
committer | Sarper Akdemir <sarper.akdemir.extern@allotropia.de> | 2023-09-04 20:53:40 +0200 |
commit | a45f72b8122d3bb4c0d5ac4252cf7e5a25d52291 (patch) | |
tree | 204ddf0145c1e00cce891e7062fc13f6b321f9dd /vcl | |
parent | 7803c5749365c6dca6583708c14d6229c9659572 (diff) |
tdf#138792: PDF export: export metadata pdf:PDFVersion
Adds export of pdf:PDFVersion metadata.
Change-Id: Ic4c3eec3672839d0d125b64dfca6149912cd2458
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156329
Tested-by: Jenkins
Reviewed-by: Sarper Akdemir <sarper.akdemir.extern@allotropia.de>
Diffstat (limited to 'vcl')
-rw-r--r-- | vcl/inc/pdf/XmpMetadata.hxx | 1 | ||||
-rw-r--r-- | vcl/source/gdi/pdfwriter_impl.cxx | 32 | ||||
-rw-r--r-- | vcl/source/pdf/XmpMetadata.cxx | 8 |
3 files changed, 29 insertions, 12 deletions
diff --git a/vcl/inc/pdf/XmpMetadata.hxx b/vcl/inc/pdf/XmpMetadata.hxx index d94d6e690c3c..a144266497cf 100644 --- a/vcl/inc/pdf/XmpMetadata.hxx +++ b/vcl/inc/pdf/XmpMetadata.hxx @@ -27,6 +27,7 @@ public: OString msAuthor; OString msSubject; OString msProducer; + OString msPDFVersion; OString msKeywords; OString m_sCreatorTool; OString m_sCreateDate; diff --git a/vcl/source/gdi/pdfwriter_impl.cxx b/vcl/source/gdi/pdfwriter_impl.cxx index def3d4ee3ba5..00b59830f048 100644 --- a/vcl/source/gdi/pdfwriter_impl.cxx +++ b/vcl/source/gdi/pdfwriter_impl.cxx @@ -623,6 +623,25 @@ void appendPdfTimeDate(OStringBuffer & rBuffer, } } +const char* getPDFVersionStr(PDFWriter::PDFVersion ePDFVersion) +{ + switch (ePDFVersion) + { + case PDFWriter::PDFVersion::PDF_A_1: + case PDFWriter::PDFVersion::PDF_1_4: + return "1.4"; + case PDFWriter::PDFVersion::PDF_1_5: + return "1.5"; + case PDFWriter::PDFVersion::PDF_1_6: + return "1.6"; + default: + case PDFWriter::PDFVersion::PDF_A_2: + case PDFWriter::PDFVersion::PDF_A_3: + case PDFWriter::PDFVersion::PDF_1_7: + return "1.7"; + } +} + } // end namespace PDFPage::PDFPage( PDFWriterImpl* pWriter, double nPageWidth, double nPageHeight, PDFWriter::Orientation eOrientation ) @@ -1295,17 +1314,7 @@ PDFWriterImpl::PDFWriterImpl( const PDFWriter::PDFWriterContext& rContext, // write header OStringBuffer aBuffer( 20 ); aBuffer.append( "%PDF-" ); - switch( m_aContext.Version ) - { - case PDFWriter::PDFVersion::PDF_A_1: - case PDFWriter::PDFVersion::PDF_1_4: aBuffer.append( "1.4" );break; - case PDFWriter::PDFVersion::PDF_1_5: aBuffer.append( "1.5" );break; - case PDFWriter::PDFVersion::PDF_1_6: aBuffer.append( "1.6" );break; - default: - case PDFWriter::PDFVersion::PDF_A_2: - case PDFWriter::PDFVersion::PDF_A_3: - case PDFWriter::PDFVersion::PDF_1_7: aBuffer.append( "1.7" );break; - } + aBuffer.append(getPDFVersionStr(m_aContext.Version)); // append something binary as comment (suggested in PDF Reference) aBuffer.append( "\n%\303\244\303\274\303\266\303\237\n" ); if( !writeBuffer( aBuffer ) ) @@ -5952,6 +5961,7 @@ sal_Int32 PDFWriterImpl::emitDocumentMetadata() lcl_assignMeta(m_aContext.DocumentInfo.Author, aMetadata.msAuthor); lcl_assignMeta(m_aContext.DocumentInfo.Subject, aMetadata.msSubject); lcl_assignMeta(m_aContext.DocumentInfo.Producer, aMetadata.msProducer); + aMetadata.msPDFVersion = getPDFVersionStr(m_aContext.Version); lcl_assignMeta(m_aContext.DocumentInfo.Keywords, aMetadata.msKeywords); lcl_assignMeta(m_aContext.DocumentInfo.Creator, aMetadata.m_sCreatorTool); aMetadata.m_sCreateDate = m_aCreationMetaDateString; diff --git a/vcl/source/pdf/XmpMetadata.cxx b/vcl/source/pdf/XmpMetadata.cxx index 7b0df42dbb92..6dae3b86ebc1 100644 --- a/vcl/source/pdf/XmpMetadata.cxx +++ b/vcl/source/pdf/XmpMetadata.cxx @@ -122,7 +122,7 @@ void XmpMetadata::write() } // PDF properties - if (!msProducer.isEmpty() || !msKeywords.isEmpty()) + if (!msProducer.isEmpty() || !msKeywords.isEmpty() || !msPDFVersion.isEmpty()) { aXmlWriter.startElement("rdf:Description"); aXmlWriter.attribute("rdf:about", OString("")); @@ -139,6 +139,12 @@ void XmpMetadata::write() aXmlWriter.content(msKeywords); aXmlWriter.endElement(); } + if (!msPDFVersion.isEmpty()) + { + aXmlWriter.startElement("pdf:PDFVersion"); + aXmlWriter.content(msPDFVersion); + aXmlWriter.endElement(); + } aXmlWriter.endElement(); } |