我已经安装了'pyobjc-framework-Quartz'库
pip install pyobjc-framework-Quartz
在Python2中,以下行可以完美地工作:
provider = Quartz.CGDataProviderCreateWithFilename(input_file_path)
pdf = Quartz.CGPDFDocumentCreateWithProvider(provider)
但是在Python3中,我得到错误消息:
provider = Quartz.CGDataProviderCreateWithFilename(input_file_path)
ValueError: depythonization 'char', got 'str' of 1
我已经尝试转换为char*
from ctypes import *
path = c_char_p(input_file_path)
但似乎什么都不起作用。有人能解释一下这个错误吗?
谢谢,瑞安
我已经算出来了。问题是python3中的字符串input_file_path
是一个Unicode字符串,需要在objc api中使用之前转换为二进制字符串。
input_file_path_converted = input_file_path.encode('utf-8')
provider = Quartz.CGDataProviderCreateWithFilename(input_file_path_converted)
。
(不过它只适用于带有标准"ascii"的文件名;范围#…)