desktop/source/lib/init.cxx |   30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

New commits:
commit 3eb9eb9906c93fd7b1d1d8461bd34ea5a1ef2fa3
Author:     Gabriel Masei <gabriel.ma...@1and1.ro>
AuthorDate: Mon Nov 15 21:05:17 2021 +0200
Commit:     Jan Holesovsky <ke...@collabora.com>
CommitDate: Thu Nov 25 12:12:00 2021 +0100

    lok: add pdf version option for export
    
    Change-Id: I02c1edecd291309bf028e6e5a0f04a578ac1b639
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/125255
    Tested-by: Jenkins
    Reviewed-by: Jan Holesovsky <ke...@collabora.com>

diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx
index 2191a87f5b87..5b6c941e2d08 100644
--- a/desktop/source/lib/init.cxx
+++ b/desktop/source/lib/init.cxx
@@ -2908,6 +2908,33 @@ static int doc_saveAs(LibreOfficeKitDocument* pThis, 
const char* sUrl, const cha
 
         bool bFullSheetPreview = sFullSheetPreview == "true";
 
+        // Select a pdf version if specified a valid one. If not specified 
then ignore.
+        // If invalid then fail.
+        sal_Int32 pdfVer = 0;
+        if ((aIndex = aFilterOptions.indexOf(",PDFVer=")) >= 0)
+        {
+            int bIndex = aFilterOptions.indexOf("PDFVEREND");
+            OUString sPdfVer;
+            sPdfVer = aFilterOptions.subView(aIndex+8, bIndex-(aIndex+8));
+            aFilterOptions = OUString::Concat(aFilterOptions.subView(0, 
aIndex)) + aFilterOptions.subView(bIndex+9);
+
+            if (sPdfVer.equalsIgnoreAsciiCase("PDF/A-1b"))
+                pdfVer = 1;
+            else if (sPdfVer.equalsIgnoreAsciiCase("PDF/A-2b"))
+                pdfVer = 2;
+            else if (sPdfVer.equalsIgnoreAsciiCase("PDF/A-3b"))
+                pdfVer = 3;
+            else if (sPdfVer.equalsIgnoreAsciiCase("PDF-1.5"))
+                pdfVer = 15;
+            else if (sPdfVer.equalsIgnoreAsciiCase("PDF-1.6"))
+                pdfVer = 16;
+            else
+            {
+                SetLastExceptionMsg("wrong PDF version");
+                return false;
+            }
+        }
+
         // 'TakeOwnership' == this is a 'real' SaveAs (that is, the document
         // gets a new name).  When this is not provided, the meaning of
         // saveAs() is more like save-a-copy, which allows saving to any
@@ -2944,6 +2971,9 @@ static int doc_saveAs(LibreOfficeKitDocument* pThis, 
const char* sUrl, const cha
         if (bFullSheetPreview)
             aFilterDataMap["SinglePageSheets"] <<= true;
 
+        if (pdfVer)
+            aFilterDataMap["SelectPdfVersion"] <<= pdfVer;
+
         if (!aFilterDataMap.empty())
         {
             aSaveMediaDescriptor["FilterData"] <<= 
aFilterDataMap.getAsConstPropertyValueList();

Reply via email to