使用Python在Photoshop中打开PDF

0 投票
3 回答
2358 浏览
提问于 2025-04-17 14:43

我想用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

撰写回答