首页 > 解决方案 > 通过在python中追加合并PDF

问题描述

是否可以合并PDF而不覆盖?

例如,在这个取自合并 PDF 文件的代码中:

from PyPDF2 import PdfFileMerger

pdfs = ['file1.pdf', 'file2.pdf', 'file3.pdf', 'file4.pdf']

merger = PdfFileMerger()

for pdf in pdfs:
    merger.append(pdf)

merger.write("result.pdf")  # writing line
merger.close()

在“写作线”中,我们创建了一个全新的 PDF 文件,因此,我们拥有的文件越多,花费的时间就越多,这不是最佳的。我认为,如果我们有现有的 PDF 文件而不是空的PdfFileMerger(),并将每个新的 PDF 附加到它等等,代码可以优化很多。

是否可以使用 PDF?

标签: pythonpdfmerge

解决方案


如果您对其他选项持开放态度,那么您可以使用Aspose.PDF Cloud SDK for Python来附加/合并 PDF 文档,而无需创建新的空 PDF 文件。目前,API 处理来自云存储(Amazon S3、DropBox、Google Drive Storage、Google Cloud Storage、Windows Azure Storage、FTP Storage 和 Aspose Cloud Storage)的文件。但是,在未来,我们计划支持请求正文(流)。

import os
import asposepdfcloud
from asposepdfcloud.apis.pdf_api import PdfApi
from shutil import copyfile

# Get Client ID and Secret from https://cloud.aspose.com
pdf_api_client = asposepdfcloud.api_client.ApiClient(
    ClientSecret='xxxxxxxxxxxxxxxxxxxxx',
    ClientId='xxxx-xxxx-xxxx-xxxx-xxxxxxxx')

pdf_api = PdfApi(pdf_api_client)

file_name_list = ['4pages.pdf', '02_pages.pdf', 'Sample.pdf']
for file_name in file_name_list:
    pdf_api.upload_file(file_name,file_name)
        
result_name = 'MergingResult.pdf'
        
i = 0
for el in file_name_list:
        file_name_list[i] = el
        i += 1

merge_documents = asposepdfcloud.models.MergeDocuments(file_name_list)

opts = {
              "merge_documents" : merge_documents
        }

response = pdf_api.put_merge_documents(result_name, **opts)

#download PDF file from storage
response_download = pdf_api.download_file(result_name)
copyfile(response_download, result_name)
print(response_download)

PS:我是 Aspose 的开发布道者。


推荐阅读