为什么在我的Python脚本Mac OS中,docx2pdf模块无法将docx转换为pdf?

12 浏览
0 Comments

为什么在我的Python脚本Mac OS中,docx2pdf模块无法将docx转换为pdf?

我正在使用Python 3.8和docx2pdf 0.1.7。我已经尝试了很长时间,在我的脚本中找到一个将docx转换为pdf的方法。我尝试了各种方法,但迄今为止都没有成功。

有一个叫做docx2pdf的模块,应该可以将我刚刚创建的文件转换为pdf,但似乎不起作用,我无法弄清楚原因。我尝试在我的脚本中运行它,还尝试作为子进程运行它,但都没有成功。模块的文档在这里。

我认为这是一个相当不知名的模块,因为我在互联网上找不到任何答案,所以希望有人知道如何解决这个问题。

这是我正在使用的代码:

从docx导入文档

从docx.shared导入Pt

从tkinter导入*

从docx2pdf导入转换

根= Tk()

#然后一些与此问题无关的代码

def更新程序()

doc = Document('./Contract.docx')

#然后一些根据tkinter输入更新文档的代码

#根据GUI中的一些输入保存它

doc.save('/Users/Jem/Documents/Huurovereenkomsten/Specifiek/{}/contract{}.docx'.format(nospaceadres,

naamhuurder.get()))

#到这里都没问题

convert('/Users/Jem/Documents/Huurovereenkomsten/Specifiek/{}/contract{}.docx'.format(nospaceadres,

naamhuurder.get()))#这应该将其转换为相同名称的pdf文件,保存在相同的文件夹中

#一些对于这个问题也无关的Tkinter GUI代码

root.mainloop()

但首先,它给了我这个:

0%| | 0/1 [00:02 |?,?it / s]

然后它在我Macbook上打开MS Word,并告诉我它需要许可/权限打开docx。然后我必须选择文档,这样它才有权打开它。之后,它打开了docx,但什么也没发生。

之后,它给了我这个:

{'input':'/Users/Jem/Documents/Huurovereenkomsten/Specifiek/slotlaan73/contractabc.docx','output':'/Users/Jem/Documents/Huurovereenkomsten/Specifiek/slotlaan73/contractabc.pdf','result':'error','error':'Error:Er heeft zich een fout voorgedaan。 '}

'Er heeft zich een fout voorgedaan.'是荷兰语,意思是:发生了一个错误。

有人知道这是为什么,或者我可以做什么来使它工作,以便将docx转换为pdf吗?

0
0 Comments

问题的出现的原因:

- 代码中使用了tkinter库和docx2pdf模块来实现将docx文件转换为pdf文件的功能。

- 在代码中,使用了askopenfile函数来手动选择要转换的docx文件。

解决方法:

- 如果不想每次都手动选择文件,可以将文件的路径直接指定给file变量,而不使用askopenfile函数。

- 需要将以下代码段:

file = askopenfile(filetypes = [('Word Files','*.docx')])

替换为:

file = "path/to/your/file.docx"

其中"path/to/your/file.docx"是要转换的docx文件的路径。

- 这样,每次运行脚本时,都会自动使用指定的文件进行转换。

以下是修改后的代码:

import tkinter as tk 
import tkinter.ttk as ttk
from  tkinter.filedialog import askopenfile
from tkinter.messagebox  import showinfo
from docx2pdf import convert
win = tk.Tk()
win.title("Word To PDF Converter")
def openfile():
    # 将文件的路径直接指定给file变量
    file = "path/to/your/file.docx"
    convert(file)
    showinfo("Done","File Successfully Converted")
label = tk.Label(win,text='Choose File: ')
label.grid(row=0,column=0,padx=5,pady=5)
button = ttk.Button(win,text='Select',width=30,command=openfile)
button.grid(row=0,column=1,padx=5,pady=5)
win.mainloop()

0