Python 如何从一个DOCX文件按页编写单独的DOCX文件?
我有一个由几百页组成的MS Word文档 每一页都是相同的,除了一个人的名字在每一页上是唯一的。(一页代表一个用户) 我想使用这个word文档并自动保存每个页面,这样我就可以得到几百个word文档,每个人一个,而不是一个由每个人组成的文档,然后可以分发给不同的人 我一直在使用模块Python 如何从一个DOCX文件按页编写单独的DOCX文件?,python,python-3.x,xml,openxml,python-docx,Python,Python 3.x,Xml,Openxml,Python Docx,我有一个由几百页组成的MS Word文档 每一页都是相同的,除了一个人的名字在每一页上是唯一的。(一页代表一个用户) 我想使用这个word文档并自动保存每个页面,这样我就可以得到几百个word文档,每个人一个,而不是一个由每个人组成的文档,然后可以分发给不同的人 我一直在使用模块python docx 我正在为如何完成这项任务而奋斗 据我所研究,不可能在每个页面上循环,因为这些页面不是在.docx文件中确定的,而是由程序(即Microsoft Word)生成的 但是Python Dox可以解释文
python docx
我正在为如何完成这项任务而奋斗
据我所研究,不可能在每个页面上循环,因为这些页面不是在.docx文件中确定的,而是由程序(即Microsoft Word)生成的
但是Python Dox可以解释文本,因为每个页面都是相同的,所以当你看到这个文本(在给定页面上的最后一个文本)时,我不能对Python说这是页面的结尾,这一点之后的任何东西都是一个新的页面。 理想情况下,如果我可以写一个循环,考虑这样一个点,并创建一个文档,直到那一点,并重复所有的页面,这将是伟大的。它还需要拍摄所有格式/图片
我并不反对其他方法,比如先转换成PDF格式(如果可以的话)有什么想法吗?我也有同样的问题。不幸的是,我找不到按页拆分.docx的方法。解决方案是首先使用python docx或docx2python(无论您喜欢什么)在每个页面上迭代,提取唯一的(个人)信息并将其放入列表中,这样您就可以得到:
people = ['person_A', 'person_B', 'person_C', ....]
然后将.docx另存为pdf将pdf按页面拆分,然后将其另存为person_a.pdf等,如下所示:
from PyPDF2 import PdfFileWriter, PdfFileReader
inputpdf = PdfFileReader(open("document.pdf", "rb"))
for i in range(inputpdf.numPages):
output = PdfFileWriter()
output.addPage(inputpdf.getPage(i))
with open(f"{people[i]}.pdf", "wb") as outputStream:
output.write(outputStream)
结果是一堆一页的pdf保存为Person_a.pdf、Person_B.pdf等。
希望能有所帮助。我建议使用另一个软件包将word文档拆分为单独的页面。目前,它与云存储(Aspose云存储、Amazon S3、DropBox、Google驱动器存储、Google云存储、Windows Azure存储和FTP存储)配合使用。然而,在不久的将来,它将支持来自请求主体(流)的流程文件 附言:我是Aspose的开发者宣传员
# For complete examples and data files, please go to https://github.com/aspose-words-cloud/aspose-words-cloud-python
import os
import asposewordscloud
import asposewordscloud.models.requests
from shutil import copyfile
# Please get your Client ID and Secret from https://dashboard.aspose.cloud.
client_id='xxxxx-xxxxx-xxxx-xxxxx-xxxxxxxxxxx'
client_secret='xxxxxxxxxxxxxxxxxx'
words_api = asposewordscloud.WordsApi(client_id,client_secret)
words_api.api_client.configuration.host='https://api.aspose.cloud'
remoteFolder = 'Temp'
localFolder = 'C:/Temp'
localFileName = '02_pages.docx'
remoteFileName = '02_pages.docx'
#upload file
words_api.upload_file(asposewordscloud.models.requests.UploadFileRequest(open(localFolder + '/' + localFileName,'rb'),remoteFolder + '/' + remoteFileName))
#Split DOCX pages as a zip file
request = asposewordscloud.models.requests.SplitDocumentRequest(name=remoteFileName, format='docx', folder=remoteFolder, zip_output= 'true')
result = words_api.split_document(request)
print("Result {}".format(result.split_result.zipped_pages.href))
#download file
request_download=asposewordscloud.models.requests.DownloadFileRequest(result.split_result.zipped_pages.href)
response_download = words_api.download_file(request_download)
copyfile(response_download, 'C:/'+ result.split_result.zipped_pages.href)
@scanny您能给出您的意见吗?您能分享两个连续样本页面的开放XML标记吗?