Как объединить файлы pdf с помощью python, не сохраняя их в локальном каталоге
У меня есть несколько файлов pdf, которые загружены на удаленный сервер. У меня есть URL для каждого файла, и мы можем скачать эти PDF файлы, посетив эти URL.
Мой вопрос в том,
Я хочу объединить все pdf файлы в один файл (но, не сохраняя эти файлы в локальной директории). Как я могу это сделать (в модуле python 'PyPDF2')?
Пожалуйста, переместитесь в pypdf
. По сути это то же самое, что и PyPDF2
, но разработка будет продолжаться там (я являюсь сопровождающим обоих проектов).
На ваш вопрос есть ответ в документации:
Вместо записи в файл, вы пишете в io.ByteIO
поток:
from io import ByteIO
# e.g. writer = PdfWriter()
# ... do what you want to do with the PDFs
with BytesIO() as bytes_stream:
writer.write(bytes_stream)
bytes_stream.seek(0)
data = bytes_stream.read() # that is now the "bytes" represention
Чтобы объединить PDF файлы без сохранения их локально, вы можете использовать библиотеку requests для загрузки содержимого каждого файла, а затем передать содержимое классу PdfFileReader в библиотеке PyPDF2.
import requests
import PyPDF2
from io import BytesIO
def merge_pdfs_remotely(urls, output_filename):
# Create a list of file-like objects from the URLs
file_streams = [BytesIO(requests.get(url).content) for url in urls]
# Create the PDF merger object
merger = PyPDF2.PdfFileMerger()
# Add each PDF file to the merger
for stream in file_streams:
merger.append(PyPDF2.PdfFileReader(stream))