summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorSarper Akdemir <sarper.akdemir.extern@allotropia.de>2023-08-31 02:59:51 +0300
committerSarper Akdemir <sarper.akdemir.extern@allotropia.de>2023-09-04 20:53:40 +0200
commita45f72b8122d3bb4c0d5ac4252cf7e5a25d52291 (patch)
tree204ddf0145c1e00cce891e7062fc13f6b321f9dd /vcl
parent7803c5749365c6dca6583708c14d6229c9659572 (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.hxx1
-rw-r--r--vcl/source/gdi/pdfwriter_impl.cxx32
-rw-r--r--vcl/source/pdf/XmpMetadata.cxx8
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();
}