遍历 .doc 文件以将它们转换为 .pdf (Python)
Looping over the .doc files to convert them to .pdf (Python)
我正在寻找将 .doc 文件转换为 .pdf 的解决方案 Python 2.7.x 在 [=] 中处理 .doc 文件似乎并不那么直接21=],与 .docx 和 pdf 相比。到目前为止,最合适和最有效的解决方案似乎对我来说 this 尽管当我尝试扩展它以循环遍历给定目录中的 .doc 文件时,我遇到了一个错误:
_ctypes.COMError: (-2146823114, None, (u"Sorry, we couldn't find your file. Was it moved, renamed, or deleted?\r (C:\windows\system32\PrivateCourse_AR.doc)", u'Microsoft Word', u'wdmain11.chm', 24654, None))
代码如下:
import os
import comtypes.client
os.chdir('C:\Users\Domi\PycharmProjects\STStransl-auto\doc')
path = os.getcwd()
print path
input = os.listdir(path)
print input
print len(input)
wdFormatPDF = 17 #pdf
i=0
output = '.\doc2txt_{}'.format(i)
word = comtypes.client.CreateObject('Word.Application')
for file in input:
if file.endswith('.doc'):
print file
doc = word.Documents.Open(file)
doc.SaveAs(output, FileFormat=wdFormatPDF)
i += 1
doc.Close()
word.Quit()
欢迎并非常感谢任何有关代码或如何有效处理 Python 中的 .doc 文件的建议。我正在开发一个自动化脚本来处理 .docx 和 .pdf 文件(合并、提取文本并将文本拆分为多个文件)。有了这些就没有任何问题。遗憾的是,我也有很多 .doc 文件。非常感谢。
请注意,错误中提到了您的文件名,但在系统路径中
C:\windows\system32\PrivateCourse_AR.doc
那是因为您实际上并没有调用 Word 子进程,而是使用 MSWord 的更复杂的通信协议,显然这里 MSWord 是 运行 使用另一个当前目录。因此在这种情况下传递相对文件路径失败(幸运的是 MSWord 提供了未找到文件的绝对路径)
要解决这个问题,只需执行以下操作:
word.Documents.Open(os.path.abspath(file))
使路径相对于你的脚本(在正确的目录中)
save
部分可能是相同的 issue/fix:
doc.SaveAs(os.path.abspath(output), FileFormat=wdFormatPDF)
旁白:始终对 windows 文件路径使用原始前缀,您可能会对 C:\temp
之类的路径感到惊讶(制表符而不是 \t
,写入 r"C:\temp"
)
我正在寻找将 .doc 文件转换为 .pdf 的解决方案 Python 2.7.x 在 [=] 中处理 .doc 文件似乎并不那么直接21=],与 .docx 和 pdf 相比。到目前为止,最合适和最有效的解决方案似乎对我来说 this 尽管当我尝试扩展它以循环遍历给定目录中的 .doc 文件时,我遇到了一个错误:
_ctypes.COMError: (-2146823114, None, (u"Sorry, we couldn't find your file. Was it moved, renamed, or deleted?\r (C:\windows\system32\PrivateCourse_AR.doc)", u'Microsoft Word', u'wdmain11.chm', 24654, None))
代码如下:
import os
import comtypes.client
os.chdir('C:\Users\Domi\PycharmProjects\STStransl-auto\doc')
path = os.getcwd()
print path
input = os.listdir(path)
print input
print len(input)
wdFormatPDF = 17 #pdf
i=0
output = '.\doc2txt_{}'.format(i)
word = comtypes.client.CreateObject('Word.Application')
for file in input:
if file.endswith('.doc'):
print file
doc = word.Documents.Open(file)
doc.SaveAs(output, FileFormat=wdFormatPDF)
i += 1
doc.Close()
word.Quit()
欢迎并非常感谢任何有关代码或如何有效处理 Python 中的 .doc 文件的建议。我正在开发一个自动化脚本来处理 .docx 和 .pdf 文件(合并、提取文本并将文本拆分为多个文件)。有了这些就没有任何问题。遗憾的是,我也有很多 .doc 文件。非常感谢。
请注意,错误中提到了您的文件名,但在系统路径中
C:\windows\system32\PrivateCourse_AR.doc
那是因为您实际上并没有调用 Word 子进程,而是使用 MSWord 的更复杂的通信协议,显然这里 MSWord 是 运行 使用另一个当前目录。因此在这种情况下传递相对文件路径失败(幸运的是 MSWord 提供了未找到文件的绝对路径)
要解决这个问题,只需执行以下操作:
word.Documents.Open(os.path.abspath(file))
使路径相对于你的脚本(在正确的目录中)
save
部分可能是相同的 issue/fix:
doc.SaveAs(os.path.abspath(output), FileFormat=wdFormatPDF)
旁白:始终对 windows 文件路径使用原始前缀,您可能会对 C:\temp
之类的路径感到惊讶(制表符而不是 \t
,写入 r"C:\temp"
)