|
#!/usr/bin/python
|
|
|
|
import uno, sys
|
|
|
|
from unohelper import Base, systemPathToFileUrl, absolutize
|
|
from os import getcwd
|
|
from os.path import splitext
|
|
from com.sun.star.beans import PropertyValue
|
|
|
|
def establish_connection(port):
|
|
local_ctx = uno.getComponentContext()
|
|
local_smgr = local_ctx.ServiceManager
|
|
|
|
resolver = local_smgr.createInstanceWithContext("com.sun.star.bridge.UnoUrlResolver", local_ctx)
|
|
ctx = resolver.resolve("uno:socket,host=localhost,port=%s;urp;StarOffice.ComponentContext" % port)
|
|
smgr = ctx.ServiceManager
|
|
|
|
desktop = smgr.createInstanceWithContext("com.sun.star.frame.Desktop", ctx)
|
|
|
|
return desktop
|
|
|
|
def load_file(desktop, path):
|
|
cwd = systemPathToFileUrl(getcwd())
|
|
file_url = absolutize(cwd, systemPathToFileUrl(path))
|
|
sys.stderr.write(file_url + "\n")
|
|
|
|
in_props = (
|
|
# PropertyValue("Hidden", 0 , True, 0),
|
|
)
|
|
return desktop.loadComponentFromURL(file_url, "_blank", 0, in_props)
|
|
|
|
|
|
def write_pdf(doc, path):
|
|
out_props = (
|
|
PropertyValue("FilterName", 0, "writer_pdf_Export", 0),
|
|
PropertyValue("Overwrite", 0, True, 0),
|
|
)
|
|
|
|
(dest, ext) = splitext(path)
|
|
dest = dest + ".pdf"
|
|
dest_url = absolutize(systemPathToFileUrl(getcwd()), systemPathToFileUrl(dest))
|
|
sys.stderr.write(dest_url + "\n")
|
|
doc.storeToURL(dest_url, out_props)
|
|
doc.dispose()
|
|
|
|
def main():
|
|
if len(sys.argv) <= 2:
|
|
sys.exit(1)
|
|
|
|
try:
|
|
desktop = establish_connection(sys.argv[1])
|
|
except:
|
|
sys.exit(2)
|
|
|
|
try:
|
|
doc = load_file(desktop, sys.argv[2])
|
|
if not doc:
|
|
sys.exit(3)
|
|
except:
|
|
sys.exit(3)
|
|
|
|
try:
|
|
write_pdf(doc, sys.argv[2])
|
|
except:
|
|
sys.exit(4)
|
|
|
|
sys.exit(0)
|
|
|
|
main()
|