使用Python在Photoshop中打开PDF
我想用Python在Photoshop中打开一个PDF文件。我知道怎么用Python打开Photoshop的(.psd)文件,但我想知道有没有办法指定用哪个程序来打开一个文件。
到目前为止,我打开Photoshop文档的方法是:
psd = "path\to\photoshop\document"
os.startfile(psd)
但是当我用os.startfile打开一个PDF时,它是用Adobe Acrobat打开的。我想要的是在Photoshop中打开这个PDF,有什么办法吗?
3 个回答
0
在Photoshop中,有一些选项可以用来打开PDF文件,这些选项叫做 Photoshop.PDFOpenOptions
你需要使用win32com来启动Photoshop这个应用程序。下面是一个示例代码
import win32com.client
import os, glob
folderin = r'D:\in'
if (__name__ == '__main__'):
psApp = win32com.client.Dispatch('Photoshop.Application')
for infile in glob.glob(os.path.join(folderin, '*.pdf')):
options = win32com.client.Dispatch('Photoshop.PDFOpenOptions')
options.CropPage = 0 # BoundingBox
options.Resolution = 300 # Pixels
options.Mode = 1 # Grayscale
options.BitsPerChannel = 8 # 8 bits per channel
options.AntiAlias = True
options.ConstrainProportions = True #Deprecated for Adobe Photoshop CS3
doc = psApp.Open(infile, options)
doc.flatten
doc.Trim(1)
doc.Close(2)
psApp.Quit()
0
os.startfile
这个函数的作用是用默认的应用程序打开指定的文件。比如说,如果你把PDF文件的默认打开方式改成Photoshop,那么你就能达到想要的效果,但这样一来,在其他情况下打开PDF文件就会变得非常麻烦。
如果想要更好地实现这个功能,你需要使用Photoshop的COM接口来编写脚本。我自己没有尝试过,不过这个教程看起来可能会对你有帮助。
1
from comtypes.client import GetActiveObject
# Start up Photoshop application
# app = Dispatch('Photoshop.Application')
# Or get Reference to already running Photoshop application instance
app = GetActiveObject("Photoshop.Application")
fileName = "C:\Git\PS_Samples_Files\MyPDFFile.pdf"
docRef = app.Open(fileName)
更多示例可以在这里找到:https://github.com/lohriialo/photoshop-scripting-python