HI. Ich möchte mir ein kleines Automatisierungsscript schreiben, dass Officedateien (meist .doc) in pdf Dateien umwandelt. Normalerweise gehe ich dazu diesen Weg per Hand: Ich öffne das Dokument, lasse es von Office in eine Postscriptdatei drucken (spezieller Drucker Treiber) und wandle diese dann mit Ghostscript um. Ghostscript lässt sich von der Kommandozeile wunderbar bedienen, aber Office nicht. Deswegen bin ich auf der Suche, wie ich über die win32com Schnittstelle eine Datei drucken kann. das öffnen bekomme ich schon hin, auch dass dies im Hintergrund geschieht. Aber ich finde einfach keine Docu zu den Befehlen, da diese alle nur dynamisch zur Verfügung stehen. Wo kann ich mir anschauen, wie der Druckbefhel ausschaut, wie ich den Drucker einstelle und wie ich die Temporäre Datei angebe? Schnittstelle sind ja schön und gut, aber nur wenn sie leicht und durchsichtig sind.
thx Milan
win32com
Du könntest eine VB6-Dll schreiben und mit win32com aufrufen. In VB6 gibts nämlich die Funktion SendKeys. Da könntest Du Strg+P usw. an M$ Office schicken.
Da die COM Methoden ja eigentlich die gleichen sind, hier ein Link der sich mit Word, COM und Delphi beschäftig:
http://www.delphi-source.de/tipps/COM_OLE_DDE/
Allerdins ist die Frage wie man den Druckertreiber wechselt... evt. könntestet Du ein Word Makro ausführen.
http://www.delphi-source.de/tipps/COM_OLE_DDE/
Allerdins ist die Frage wie man den Druckertreiber wechselt... evt. könntestet Du ein Word Makro ausführen.
Noch was gefunden:
http://perlmonks.thepen.com/185754.html
http://perlmonks.thepen.com/185754.html
Danke, hat mir sehr geholfen. Ich glaube die Keywörter, die ich brauche, jetzt zu kennen. Werde ich nachher, wenn mit meinem anderem Kram hier fertig bin, mal testen und geb dann den Code frei.
Zuletzt geändert von Milan am Sonntag 14. November 2004, 21:32, insgesamt 2-mal geändert.
Code: Alles auswählen
import win32com.client
word = win32com.client.Dispatch('Word.Application')
word.Visible=0
doc=word.Documents.Open(filename)
doc.PrintOut(PrintToFile=1,PrToFileName="c:\\temp\\test1.ps",Copies=1,ActivePrinter=u"Acrobat Distiller on FILE:")
doc.Close()
word.Quit()
Code: Alles auswählen
raceback (most recent call last):
File "<pyshell#14>", line 1, in -toplevel-
f.PrintOut(PrintToFile=1,PrToFileName="c:\\temp\\test1.ps",Copies=1)
TypeError: PrintOut() got an unexpected keyword argument 'PrToFileName'
Hmm ich habe auch ein problem mit Wordfiles, vielleicht kann ich hier einhaken :
Ich versuche eigentlich nur folgendes, nachdem ich merkte das ich es nicht mit einfachen Textfiles zu tun habe, sondern mit word-docs :
Ich will also einfach nur eine Liste aller Zeilen in dem Worddokument, geht aber nicht
Ich habe auch keine Ahnung, weil ich einfach mal mit dem Codesnippt von oben rumgespielt habe. Hat jemand eine Idee ?
Gruß,
Gunnar
P.S.
Im Zweifel muss das Worddokument eben in ein textfile kopiert werden..das geht auch per hand..diese Frage ist also mehr interessehalber !
Ich versuche eigentlich nur folgendes, nachdem ich merkte das ich es nicht mit einfachen Textfiles zu tun habe, sondern mit word-docs :
Code: Alles auswählen
import sys
import win32com.client
class Conform:
def __init__(self):
word = win32com.client.Dispatch('Word.Application')
word.Visible=0
cutlist = word.Documents.Open(sys.argv[1])
#cutlist = open (sys.argv[1], 'r')
cutted_cutlist = cutlist.readlines()
cutlist.close ()
word.Quit()
print cutted_cutlist
if __name__ == '__main__':
rubbeldiekatz = Conform()
Ich habe auch keine Ahnung, weil ich einfach mal mit dem Codesnippt von oben rumgespielt habe. Hat jemand eine Idee ?
Gruß,
Gunnar
P.S.
Im Zweifel muss das Worddokument eben in ein textfile kopiert werden..das geht auch per hand..diese Frage ist also mehr interessehalber !
Wie kommst Du denn darauf?Gunnar hat geschrieben:Code: Alles auswählen
cutted_cutlist = cutlist.readlines()
Code: Alles auswählen
cutted_cutlist=word.Documents[0].Content.Text
Es gibt für alles eine rationale Erklärung.
Außerdem gibt es eine irrationale.
Wie man Fragen richtig stellt
Außerdem gibt es eine irrationale.
Wie man Fragen richtig stellt