On 21-04-2013 14:08, Philip Rhoades wrote:
People,
When I record a macro to export to PDF with file-open password
protection, the resulting PDF does in fact have password protection.
However, if I run the previously recorded macro again, the resulting PDF
is NOT password protected! I have found a mention of this problem with
OO but haven't had any success using the suggested solution there with
LO . .
Another solution would be to use unoconv - but the version on Fedora 18
(0.5.2) does not seem to work with password protection either (although
it is in the help info) . .
Does anyone have a WORKING macro that will export PDFs with file-open
password protection?
Thanks,
Phil.
Ok after some searching.....
i found the answer in this discussion:
http://de.openoffice.info/viewtopic.php?f=1&t=55753&start=15
Here it is :
REM ***** BASIC *****
Sub ExportPDF
' Call the export-routine below with optional arguments for
passpharases and/or watermark-text:
' argument 1 = target file (path and PDF-filename like required
from your file-system)
' argument 2 = file open password,
' argument 3 = restriction password
' argument 4 = watermark text
'
' Examples:
' No special settings at all (export only):
' PdfExportWithFilter()
' Export to a special destination (no further settings):
' PdfExportWithFilter("D:\TESTPATH\TESTDOC.pdf")
' Export to a special destination with the to-open-password "test":
PdfExportWithFilter("C:\Temp\TESTDOC.PDF", "test")
' Export using the file-manager (no destination defined) with the
restriction-password "test":
' PdfExportWithFilter("", "", "test")
' Export using the file-manager with no passwords but a watermark:
' PdfExportWithFilter("", "", "", "THIS IS AN EXAMPLE!")
End Sub
Sub PdfExportWithFilter(Optional TargetFile As Variant, Optional
OpenPassword As String, Optional PermitPassword As String, Optional
WatermarkText As String)
' Sub "PdfExportWithFilter"
' Author: ejomi
' Date: 2012/09
' Arguments (all optional / can be left empty):
' TargetFile = The path and filename of the PDF-File (syntax
as required from your file-system)
' OpenPassword = Passphrase for opening the ready made PDF-File
' PermitPassword = Passphrases for setting user-restrictions to
the PDF-File
' WatermarkText = A text for a watermark to be drawn on every
page of the exported PDF file
' Details of the PDF-Export specifications and filters, see:
' http://wiki.openoffice.org/wiki/API/Tutorials/PDF_export
' --------------------------------- I N I T
-------------------------------------
' Define some local variables:
Dim oDoc As Object, Dispatcher As Object
Dim ExportFilter(33) As New com.sun.star.beans.PropertyValue
Dim PdfProperty(3) As New com.sun.star.beans.PropertyValue
Dim SetEncrypt As Boolean, SetRestricts As Boolean
' Automatically toggle the encrypt- and restriction-switches
' depending on a given passphrase for "File Open" and/or "User
Permissions":
If IsMissing(TargetFile) Then TargetFile = ""
If IsMissing(OpenPassword) Then OpenPassword = ""
If IsMissing(PermitPassword) Then PermitPassword = ""
If IsMissing(WatermarkText) Then WatermarkText = ""
' The Constant "url_pdf_out" forces a filemanager before exporting
the new PDF-File:
If TargetFile = "" Then
TargetFile = url_pdf_out
Else
TargetFile = ConvertToURL(TargetFile)
Endif
If OpenPassword <> "" Then SetEncrypt = True
If PermitPassword <> "" Then SetRestricts = True
' Get access to the current writer document:
oDoc = ThisComponent.CurrentController.Frame
' Initialize the UNO-Dispatcher:
Dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
' ------------------- D I S P L A Y - S E T T I N G S
---------------------------
ExportFilter(0).Name = "SelectPdfVersion"
' Specifies the version of PDF to emit.
' 0 = PDF 1.4 (default selection).
' 1 = PDF/A-1 (ISO 19005-1:2005)
ExportFilter(0).Value = 0
ExportFilter(1).Name = "PDFViewSelection"
' Specifies the way the exported PDF will be viewed by the user.
' 0 = The PDF will be exported with all the links external
' to the document treated as URI (= Default).
' 1 = The PDF will be exported in order to be viewed
' through a PDF reader application only.
' (Valid only if not exporting to PDF/A-1,
' e.g. SelectPdfVersion not set to 1).
' 2 = The PDF will be exported in order to be viewed through an
Internet browser,
' using the PDF plug-in provided with it. The bookmark of the
URI will be rendered
' compatible with the target bookmark generated with OOo PDF
Export feature
' (see ExportBookmarksToPDFDestination, below).
ExportFilter(1).Value = 0
ExportFilter(2).Name = "InitialView"
' Specifies how the PDF document should be displayed when opened:
' 0 = Select the default viewer mode, neither outlines or thumbnails.
' 1 = The document is opened with outline pane opened
' 2 = The document is opened with thumbnail pane opened
ExportFilter(2).Value = 0
ExportFilter(3).Name = "CenterWindow"
' Specifies that the PDF viewer window is centered to the screen:
ExportFilter(3).Value = True
ExportFilter(4).Name = "ResizeWindowToInitialPage"
' Specifies that the PDF viewer window is opened full screen when
the document is opened.
ExportFilter(4).Value = False
ExportFilter(5).Name = "InitialPage"
' Specifies the page on which a PDF document should be opened in the
viewer application:
ExportFilter(5).Value = 1
ExportFilter(6).Name = "PageLayout"
' Specifies the page layout to be used when the document is opened.
' 0= Display the pages according to the reader configuration.
' 1= Display one page at a time.
' 2= Display the pages in one column.
' 3= Display the pages in two columns odd pages on the right,
' to have the odd pages on the left the "FirstPageOnLeft" property
' should be used as well.
ExportFilter(6).Value = 0
ExportFilter(7).Name = "FirstPageOnLeft"
' Used with the value 3 of the "PageLayout" property above.
' TRUE if the first page (odd) should be on the left side of the screen.
ExportFilter(7).Value = True
ExportFilter(8).Name = "IsSkipEmptyPages"
' Specifies that automatically inserted empty pages are suppressed.
' This option is active only if storing Writer documents:
ExportFilter(8).Value = True
ExportFilter(9).Name = "UseTransitionEffects"
' Specifies slide transitions are exported to PDF.
' This option is active only if storing Impress documents:
ExportFilter(9).Value = True
ExportFilter(10).Name = "Magnification"
' Specifies the action to be performed when the PDF document is opened.
' 0= Opens with default zoom magnification.
' 1= Opens magnified to fit the entire page within the window.
' 2= Opens magnified to fit the entire page width within the window.
' 3= Opens magnified to fit the entire width of its boundig box
within the window (cuts out margins).
' 4= Opens with the zoom level specified in the Zoom property.
ExportFilter(10).Value = 0
ExportFilter(11).Name = "Zoom"
' Specifies the zoom level a PDF document is opened with.
' Only valid if "Magnification" is set to "4".
ExportFilter(11).Value = 100
ExportFilter(12).Name = "DisplayPDFDocumentTitle"
' Specifies that the title of the document (if present in the
document properties)
' is displayed in the PDF viewer window title bar.
ExportFilter(12).Value = True
ExportFilter(13).Name = "HideViewerMenubar"
' Specifies whether to hide the PDF viewer menubar when the document
is active:
ExportFilter(13).Value = True
ExportFilter(14).Name = "HideViewerToolbar"
' Specifies whether to hide the PDF viewer toolbar when the document
is active:
ExportFilter(14).Value = True
ExportFilter(15).Name = "HideViewerWindowControls"
' Specifies whether to hide the PDF viewer controls when the
document is active:
ExportFilter(15).Value = False
ExportFilter(16).Name = "OpenBookmarkLevels"
'Specifies how many bookmark levels should be opened in the reader
application.
' -1 = all bookmark levels are opened
' 1 to 10 = indicate a bookmark level (from 1 to 10)
ExportFilter(16).Value = -1
' ------------------------ L I N K - B E H A V I O U R
-------------------------
ExportFilter(17).Name = "ExportBookmarksToPDFDestination"
' Specifies that the bookmarks contained in the source file
' should be exported to the PDF file as Named Destination:
ExportFilter(17).Value = False
ExportFilter(18).Name = "ExportLinksRelativeFsys"
' Specifies that the file system related hyperlinks (file:// protocol)
' present in the document will be exported as relative to the source
document location:
ExportFilter(18).Value = True
ExportFilter(19).Name = "ConvertOOoTargetToPDFTarget"
' Specifies that the target documents with .od[tpgs] extension,
' will have that extension changed to .pdf when the link is exported
to PDF.
' The source document remains untouched.
ExportFilter(19).Value = True
' ------------------------- P A S S W O R D - S E T S
---------------------------
ExportFilter(20).Name = "DocumentOpenPassword"
' Contains the Password that allows the user
' to open the PDF file (only if "EncryptFile" is set to TRUE)
ExportFilter(20).Value = OpenPassword
ExportFilter(21).Name = "EncryptFile"
' If set to TRUE, it selects to encrypt the PDF document with a
password.
' The PDF file can be opened only when the user enters the correct
password.
ExportFilter(21).Value = SetEncrypt
ExportFilter(22).Name = "PermissionPassword"
' Contains the Password that allows the user
' to access some permissions restricted only if
"RestrictPermissions" is set to TRUE:
ExportFilter(22).Value = PermitPassword
ExportFilter(23).Name = "RestrictPermissions"
' If set to TRUE, selects to restrict some permissions.
' The permissions can be changed only when the user enters the
correct password.
ExportFilter(23).Value = SetRestricts
' -------------------------- P E R M I S S I O N S
------------------------------
ExportFilter(24).Name = "EnableCopyingOfContent"
' Specifies that the pages and the document content
' can be extracted to be used in other documents (copy and paste)
ExportFilter(24).Value = False
ExportFilter(25).Name = "Printing"
' Printing allowed from the document:
' 0 = The document cannot be printed.
' 1 = The document can be printed at low resolution only.
' 2 = The document can be printed at maximum resolution.
ExportFilter(25).Value = 1
ExportFilter(26).Name = "Changes"
' Changes allowed to the document:
' 0 = The document cannot be changed.
' 1 = Inserting deleting and rotating pages is allowed.
' 2 = Filling of form field is allowed.
' 3 = Both filling of form field and commenting is allowed.
' 4 = All the changes of the previous selections are permitted,
' with the only exclusion of page extraction (copy).
ExportFilter(26).Value = 0
ExportFilter(27).Name = "ExportNotes"
' Specifies if notes are exported to PDF:
ExportFilter(27).Value = False
ExportFilter(28).Name = "ExportBookmarksToPDFDestination"
' Specifies if notes pages are exported to PDF.
' (Notes pages are available in Impress documents only).
ExportFilter(28).Value = False
ExportFilter(29).Name = "ExportFormFields"
' Specifies whether form fields are exported as widgets
' or only their fixed print representation is exported.
ExportFilter(29).Value = False
ExportFilter(30).Name = "EnableTextAccessForAccessibilityTools"
' Document content can be extracted to be used in accessibility
applications.
ExportFilter(30).Value = False
ExportFilter(31).Name = "IsAddStream"
' Specifies that a stream is inserted to the PDF file
' which contains the original document for archiving purposes.
' (This option is active only if the PDF Import extension is installed):
ExportFilter(31).Value = False
If WatermarkText <> "" Then
ExportFilter(32).Name = "Watermark"
' Specifies the text for a watermark to be drawn on every page of
the exported PDF file.
ExportFilter(32).Value = WatermarkText
EndIf
' -------------------- PUT PROPERTIES TO THE PDF-DOCUMENT
------------------------
PdfProperty(0).Name = "URL"
PdfProperty(0).Value = TargetFile
PdfProperty(1).Name = "FilterName"
PdfProperty(1).Value = "writer_pdf_Export"
PdfProperty(2).Name = "FilterData"
PdfProperty(2).Value = ExportFilter
' Export the customized PDF-Document:
Dispatcher.executeDispatch(oDoc, ".uno:ExportDirectToPDF", "", 0,
PdfProperty())
End Sub
--
For unsubscribe instructions e-mail to: [email protected]
Problems? http://www.libreoffice.org/get-help/mailing-lists/how-to-unsubscribe/
Posting guidelines + more: http://wiki.documentfoundation.org/Netiquette
List archive: http://listarchives.libreoffice.org/global/users/
All messages sent to this list will be publicly archived and cannot be deleted