Python 如何从一个DOCX文件按页编写单独的DOCX文件?

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可以解释文

我有一个由几百页组成的MS Word文档

每一页都是相同的,除了一个人的名字在每一页上是唯一的。(一页代表一个用户)

我想使用这个word文档并自动保存每个页面,这样我就可以得到几百个word文档,每个人一个,而不是一个由每个人组成的文档,然后可以分发给不同的人

我一直在使用模块
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标记吗?