I've been asked to export .odt file to PDF file with full content as image, in more common called "non-searchable" PDF.
The main goal is to keep content integrity when the PDF will be imported in another solution that will extract the images for them to be analysed.
If the content in the PDF is in Text format, the solution would have first to do a rendering of the PDF to convert its content to an image. At this point, there could be differences between original PDF content and the Image created...
I've already found how to set specific parameters and to export to PDF file, as shown in this function:
Code: Select all
'_________________________________________________________________________________
Sub Pdf_Locked_Export(oDoc as object, FolderExportPath as String, FileName as String)
dim aMediaDescriptor()
dim aFilterData()
'PDF version
REM 0=PDF 1.4
REM 1=PDF/A1 which disables any passwords in the export dialog
bas_PushArray aFilterData,MakePropertyValue("SelectPdfVersion",0)
'PDF parameters
bas_PushArray aFilterData,MakePropertyValue("UseTaggedPDF",false)
bas_PushArray aFilterData,MakePropertyValue("ExportBookmarks",true)
bas_PushArray aFilterData,MakePropertyValue("EmbedStandardFonts",true)
'Images
bas_PushArray aFilterData,MakePropertyValue("UseLosslessCompression",true)
bas_PushArray aFilterData,MakePropertyValue("Quality",100)
bas_PushArray aFilterData,MakePropertyValue("ReduceImageResolution",true)
bas_PushArray aFilterData,MakePropertyValue("MaxImageResolution",300)
'Viewer parameters
bas_PushArray aFilterData,MakePropertyValue("InitialView",1)
bas_PushArray aFilterData,MakePropertyValue("Magnification",1)
bas_PushArray aFilterData,MakePropertyValue("PageLayout",0)
bas_PushArray aFilterData,MakePropertyValue("CenterWindow",true)
bas_PushArray aFilterData,MakePropertyValue("OpenBookmarkLevels",1)
bas_PushArray aFilterData,MakePropertyValue("HideViewerToolbar",true)
bas_PushArray aFilterData,MakePropertyValue("HideViewerMenubar",true)
bas_PushArray aFilterData,MakePropertyValue("HideViewerWindowControls",true)
bas_PushArray aFilterData,MakePropertyValue("DisplayPDFDocumentTitle",true)
'Links
bas_PushArray aFilterData,MakePropertyValue("ExportBookmarksToPDFDestination",true)
bas_PushArray aFilterData,MakePropertyValue("ConvertOOoTargetToPDFTarget",true)
bas_PushArray aFilterData,MakePropertyValue("ExportLinksRelativeFsys",false)
bas_PushArray aFilterData,MakePropertyValue("PDFViewSelection",0)
'Sécurity
bas_PushArray aFilterData,MakePropertyValue("EncryptFile",true)
bas_PushArray aFilterData,MakePropertyValue("RestrictPermissions",true)
bas_PushArray aFilterData,MakePropertyValue("PermissionPassword","MyPassword")
bas_PushArray aFilterData,MakePropertyValue("Printing",2)
bas_PushArray aFilterData,MakePropertyValue("Changes",0)
bas_PushArray aFilterData,MakePropertyValue("EnableCopyingOfContent",false)
bas_PushArray aFilterData,MakePropertyValue("EnableTextAccessForAccessibilityTools",false)
bas_PushArray aMediaDescriptor,MakePropertyValue("FilterName","writer_pdf_Export")
bas_PushArray aMediaDescriptor,MakePropertyValue("FilterData",aFilterData)
oDoc.storeToURL(convertToUrl(FolderExportPath & FileName), aMediaDescriptor)
end sub
'_________________________________________________________________________________
sub bas_PushArray(xArray(),vNextElement)
Dim iUB,iLB as Integer
iLB = lBound(xArray())
iUB = uBound(xArray())
If iLB > iUB then
iUB = iLB
redim xArray(iLB To iUB)
else
iUB = iUB +1
redim preserve xArray(iLB To iUB)
endif
xArray(iUB) = vNextElement
end Sub
'_________________________________________________________________________________
function MakePropertyvalue(aName as string, avalue as variant ) as variant
dim Arg as new com.sun.star.beans.PropertyValue
Arg.name = aName
Arg.value = avalue
MakePropertyvalue = Arg
end function
'_________________________________________________________________________________
PDF export parameters
This creates the PDF well secured, but the content remains as text.
So I was wondering if there was a way to directly create a non-searchable PDF from LibreOffice or to convert the exported PDF to this needed format?
Maybe using Javascript or Python function?
Thanks in advance for any help, clue or idea...