我正在努力寻找通过Python 来强制将PDF文件转换为.docx文件的方法。
我看过其他与此相关的帖子,但在我的情况下,它们似乎都没有正常工作。
我正在使用
import os
import subprocess
for top, dirs, files in os.walk('/my/pdf/folder'):
for filename in files:
if filename.endswith('.pdf'):
abspath = os.path.join(top, filename)
subprocess.call('lowriter --invisible --convert-to doc "{}"'
.format(abspath), shell=True)
这给了我输出[1],但是,我在我的文件夹中找不到任何.docx文件。
我安装了LibreOffice 5.3。
关于它的任何线索?
提前谢谢!
答案 0 :(得分:1)
我不知道使用libreoffice将pdf
文件转换为Word
文件的方法。
但是,您可以从pdf
转换为html
,然后将html
转换为docx
。
首先,在命令行上运行命令。 (以下是在Linux上。所以你可能必须填写soffice二进制文件的路径名并在操作系统上使用输入文件的完整路径)
soffice --convert-to html ./my_pdf_file.pdf
然后
soffice --convert-to docx:'MS Word 2007 XML' ./my_pdf_file.html
你最终应该:
my_pdf_file.pdf
my_pdf_file.html
my_pdf_file.docx
现在将命令包装在subprocess
代码
答案 1 :(得分:0)
这应该可以解决您的问题。
import os
import subprocess
path = '/my/pdf/folder'
for files in os.listdir(path):
for filename in files:
flipfilename = filename[::-1]
ext,trash = flipfilename.split('.',1)
if ext = 'pdf':
abspath = os.path.join(path, filename)
subprocess.call('lowriter --invisible --convert-to doc "{}"'
.format(abspath), shell=True)
也许尝试subprocess.Popen吗?
答案 2 :(得分:0)
下面的代码对我有用。
import win32com.client
word = win32com.client.Dispatch("Word.Application")
word.visible = 1
pdfdoc = 'NewDoc.pdf'
todocx = 'NewDoc.docx'
wb1 = word.Documents.Open(pdfdoc)
wb1.SaveAs(todocx, FileFormat=16) # file format for docx
wb1.Close()
word.Quit()
答案 3 :(得分:0)
我的方法没有遵循使用子系统的相同方法。但是,这是通过阅读PDF文档的所有页面并将它们移至docx文件的工作。注意:仅适用于文本;图片和其他对象通常会被忽略。
#Description: This python script will allow you to fetch text information from a pdf file
#import libraries
import PyPDF2
import os
import docx
mydoc = docx.Document() # document type
pdfFileObj = open('pdf/filename.pdf', 'rb') # pdffile loction
pdfReader = PyPDF2.PdfFileReader(pdfFileObj) # define pdf reader object
# Loop through all the pages
for pageNum in range(1, pdfReader.numPages):
pageObj = pdfReader.getPage(pageNum)
pdfContent = pageObj.extractText() #extracts the content from the page.
print(pdfContent) # print statement to test output in the terminal. codeline optional.
mydoc.add_paragraph(pdfContent) # this adds the content to the word document
mydoc.save("pdf/filename.docx") # Give a name to your output file.
答案 4 :(得分:0)
我将它用于多个文件
####
from pdf2docx import Converter
import os
# # # dir_path for input reading and output files & a for loop # # #
path_input = '/pdftodocx/input/'
path_output = '/pdftodocx/output/'
for file in os.listdir(path_input):
cv = Converter(path_input+file)
cv.convert(path_output+file+'.docx', start=0, end=None)
cv.close()
print(file)
答案 5 :(得分:0)
我已经用 pdf2docx 成功做到了:
UPDATE users AS u
JOIN (
SELECT identifier, JSON_OBJECTAGG(name, money) AS accounts
FROM user_accounts
GROUP BY identifier
) AS a ON u.identifier = a.identifier
SET u.accounts = a.accounts