John Henry wrote:
I have a need to invoke CutePDF from within a Python program.
All I need is to say "Print this to CUTEPDF and store as xyz.pdf".
Private Sub Print_PDF()
lRetVal = RegCreateKeyEx(HKEY_CURRENT_USER, "Software\Custom PDF
Printer", _
0&, vbNullString, REG_OPTION_NON_VOLATILE,
KEY_ALL_ACCESS, _
0&, hKey, lRetVal)
sValue = "C:\Sample.pdf"
RegSetValueExString hKey, "OutputFile", 0&, REG_SZ, sValue, Len
(sValue)
sValue = "1"
RegSetValueExString hKey, "BypassSaveAs", 0&, REG_SZ, sValue, Len
(sValue)
Dim worddoc As Word.Document
Set worddoc = wordapp.Documents.Open("C:\Sample.doc")
wordapp.ActivePrinter = "Custom PDF Printer"
wordapp.PrintOut
worddoc.Close
sValue = "0"
RegSetValueExString hKey, "BypassSaveAs", 0&, REG_SZ, sValue, Len
(sValue)
RegCloseKey (hKey)
Direct translation (untested since I don't have CutePDF installed)
<code>
import win32api
import win32con
import win32com
hKey, ret = win32api.RegCreateKeyEx (
win32con.HKEY_CURRENT_USER,
"Software\Custom PDF Printer",
win32con.KEY_ALL_ACCESS
)
win32api.RegSetValueEx (hKey, "OutputFile", None, win32con.REG_SZ,
r"c:\sample.pdf")
win32api.RegSetValueEx (hKey, "BypassSaveAs", None, win32con.REG_SZ, r"1")
word = win32com.client.gencache.EnsureDispatch ("Word.Application")
doc = word.Documents.Open (r"c:\sample.doc")
doc.ActivePrinter = "Custom PDF Printer"
word.Printout ()
doc.Close ()
win32api.RegSetValueEx (hKey, "BypassSaveAs", None, win32con.REG_SZ, r"0")
</code>
FWIW, I usually generate PDFs by printing to a Postscript printer
(some random Apple Laserthingy) and then using Ghostscript to
do the conversion. I'm happy to post if you're interested.
TJG
--
http://mail.python.org/mailman/listinfo/python-list