Seite 1 von 1

Python Marco - Pdf export

Verfasst: Sa 13. Jun 2015, 20:07
von poor
Hallo Freunde,

ich würde gern ein Makro in Python schreiben um ein pdf des aktuellen Dokuments zu generieren, was ich anschließend mit python manipulieren möchte. Außer 2-3 Python Macro-Beispiele habe ich keine API oder ähnliches finden können.

Wo finde ich die API oder Wie kann ich das aktuelle Dokument als pdf in einer Variable speichern?


Vielen Dank für die Hilfe,
Christian

Re: Python Marco - Pdf export

Verfasst: Sa 13. Jun 2015, 22:23
von komma4
Du kennst Google? Liefert mir 106.000 Treffer bei der Suche nach "Libreoffice python macro".

Die API zu LO findest Du beim Projekt.

Ich würde übrigens das Dokument ändern und dann exportieren, nicht im PDF ändern (wollen). Aber vielleicht kannst Du mit Python besser PDFs ändern, als im Netz "suchen" :twisted:

Ein Codestück aus dem alten oooforum (meist sehr schlecht erreichbar)

Code: Alles auswählen

# filter data
fdata = []
fdata1 = PropertyValue()
fdata1.Name = "SelectPdfVersion"
fdata1.Value = 1
fdata2 = PropertyValue()
fdata2.Name = "Quality"
fdata2.Value = 100
fdata.append(fdata1)
fdata.append(fdata2)

args = []
arg1 = PropertyValue()
arg1.Name = "FilterName"
arg1.Value = "writer_web_pdf_Export"
arg2 = PropertyValue()
arg2.Name = "FilterData"
arg2.Value = uno.Any(
"[]com.sun.star.beans.PropertyValue", tuple(fdata) )
args.append(arg1)
args.append(arg2)

Re: Python Marco - Pdf export

Verfasst: Sa 13. Jun 2015, 22:36
von poor
Danke für die Hilfe Winfried - Deine Idee funktioniert bestens:

Code: Alles auswählen

import uno

from com.sun.star.beans import PropertyValue

def pypdf_test():

    desktop = XSCRIPTCONTEXT.getDesktop()
    doc = desktop.getCurrentComponent()

    # filter data
    fdata = []
    fdata1 = PropertyValue()
    fdata1.Name = "SelectPdfVersion"
    fdata1.Value = 1
    fdata2 = PropertyValue()
    fdata2.Name = "Quality"
    fdata2.Value = 100
    fdata.append(fdata1)
    fdata.append(fdata2)

    args = []
    arg1 = PropertyValue()
    arg1.Name = "FilterName"
    arg1.Value = "writer_web_pdf_Export"
    arg2 = PropertyValue()
    arg2.Name = "FilterData"
    arg2.Value = uno.Any("[]com.sun.star.beans.PropertyValue", tuple(fdata) )
    args.append(arg1)
    args.append(arg2)
   
    url = "file:///home/poor/Desktop/123.pdf"
    doc.storeToURL( url, tuple(args) )
   
    #doc.close(True) 
Kannst du mir sagen wie ich einen File-Dialog bekomme? Habe einen neuen Thread dazu erstellt: http://www.libreoffice-forum.de/viewtop ... 357#p36357

Danke für die Links,
Christian