Mustafa Görmezer

  • Schrift vergrößern
  • Standard-Schriftgröße
  • Schriftgröße verkleinern
Home Know How-Sammlung Python Scripte PDF im Batch mit OpenOffice und Python

PDF im Batch mit OpenOffice und Python

E-Mail Drucken PDF
Mit Python lässt sich OpenOffice wunderbar zur Konvertierung von Dokumenten im Batch automatisieren. Das folgende Python Script ist ein Office zu PDF Batch Converter, basierend auf der OpenOffice PyUNO API. Es wird am besten mit dem Python Interpreter aus OpenOffice aufgerufen und konvertiert alle Dokumente in einem angegebenen Verzeichnis zu PDF.

Vorraussetzung ist natürlich, dass die PyUNO API bei der OpenOffice-Installation mitinstalliert und OpenOffice Im Servermodus gestartet wurde:

soffice "-accept=socket,host=localhost,port=2002;urp;"

Und hier ein beispielhafter Aufruf des Programms:

c:\\programme\\OpenOffice\\program\\python.bat c:\\converter\\ooconvert.py c:\\testdocs\\doc

Und nun der Python Quellcode:

# For a list of possible export formats see
# http://www.openoffice.org/files/documents/25/111/filter_description.html
# or
# /opt/OpenOffice.org/share/registry/data/org/openoffice/Office/TypeDetection.xcu

import sys, os, uno
from com.sun.star.beans import PropertyValue

export_format="writer_pdf_Export"
export_extension="pdf"

def usage():
    print """Usage: %s in_dir out_dir
All files in in_dir will be opened with OpenOffice.org and
saved to out_dir
You must start OpenOffice with this line before starting
this script:
  soffice "-accept=socket,host=localhost,port=2002;urp;"
    """ % (os.path.basename(sys.argv[0]))

def do_file(file, desktop, out_url):
    # Load File
    file=os.path.abspath(file)
    url="file:///%s" % file
    properties=[]
    p=PropertyValue()
    p.Name="Hidden"
    p.Value=True
    properties.append(p)
    doc=desktop.loadComponentFromURL(
        url, "_blank", 0, tuple(properties));
    if not doc:
        print "Failed to open '%s'" % file
        return
    # Save File
    properties=[]
    p=PropertyValue()
    p.Name="Overwrite"
    p.Value=True
    properties.append(p)
    p=PropertyValue()
    p.Name="FilterName"
    p.Value=export_format
    properties.append(p)
    p=PropertyValue()
    p.Name="Hidden"
    p.Value=True
    basename=os.path.basename(file)
    idx=basename.rfind(".")
    assert(idx!=-1)
    basename=basename[:idx]
    url_save="%s/%s.%s" % (out_url, basename, export_extension)
    try:
        doc.storeToURL(
            url_save, tuple(properties))
    except:
        print "Failed while writing: '%s'" % file
    doc.dispose()
def main():
    if len(sys.argv)!=3:
        usage()
        sys.exit(1)
    in_dir=sys.argv[1]
    out_dir=sys.argv[2]
    out_url="file://%s" % os.path.abspath(out_dir)
    print out_url
    # Init: Connect to running soffice process
    context = uno.getComponentContext()
    resolver=context.ServiceManager.createInstanceWithContext(
        "com.sun.star.bridge.UnoUrlResolver", context)
    try:
        ctx = resolver.resolve(
            "uno:socket,host=localhost,port=2002;urp;StarOffice.ComponentContext")
    except:
        print "Could not connect to running openoffice."
        usage()
        sys.exit()

    smgr=ctx.ServiceManager
    desktop = smgr.createInstanceWithContext("com.sun.star.frame.Desktop",ctx)
    files=os.listdir(in_dir)
    files.sort()

    for file in files:
        print "Processing %s" % file
        file=os.path.join(in_dir, file)
        do_file(file, desktop, out_url)

if __name__=="__main__":
    main()
Zuletzt aktualisiert am Mittwoch, 23. März 2011  

Schnipsel

Metadaten und URLs extrahieren mit PDFx

PDFx ermöglicht es, Metadaten und URLs aus PDF-Dokumenten zu extrahieren. Es ist ein Python-Programm für die Kommandozeile und kann auch als Python-Modul aus anderen Anwendungen heraus verwendet werden. Das Programm wurde unter der Apache Lizenz veröffentlicht.

 
Excel-Dateien lesen mit Python

Microsoft Excel Dateien lassen sich mit der Python Bibliothek XLRD Plattformunabhängig lesen und schreiben. Dieser Artikel von Mike Driscoll zeigt ein BEispiel, wie man es ohne Office-Installation macht.

Anzeigen

 

Statistik

Seitenaufrufe : 7831854

Wer ist online

Wir haben 270 Gäste online