Python - конвертировать PDF в HTML через поток вместо пути - PullRequest
0 голосов
/ 21 мая 2019

Я пытаюсь преобразовать файл PDF в HTML с помощью PDF2HTML:

pdf_path = "path\to\pdf_file.pdf"
subprocess.run(["pdf2htmlEX.exe",pdf_path])

Это работает хорошо.Однако я бы хотел, чтобы pdf_path был потоком, а не путем на моем сервере.Мой пример использования - приложение Django, которое позволяет пользователям загружать файл PDF и преобразовывать его в страницу HTML, не сохраняя ничего на сервере.

Я попытался преобразовать загруженный файл PDF в BytesIO, а затем в поток.и пытается передать это:

from PyPDF2 import PdfFileReader, PdfFileWriter

# Request.FILES is from the Django Form
file_memory = request.FILES

# BytesIO file
file_handle_file = file_handle.file

pdf = PdfFileWriter()
pdf_file = PdfFileReader(file_handle_file)
page = pdf_file.getPage(0)
pdf.addPage(page)
pdf.write(open("output.pdf","wb")) 

subprocess.run(["pdf2htmlEX.exe",pdf])

Но это возвращает ошибку argument of type 'PdfFileWriter' is not iterable.Pdf.write записывает pdf в хранилище, и если я использую subprocess.run для получения этого файла (поэтому снова использую путь), он работает.

Кроме того, открытие потока не работает:

outputStream = open("test.pdf", "wb")
output.write(outputStream)
outputStream.close()

subprocess.run(["pdf2htmlEX.exe",outputStream])

Можно ли даже передать файл pdf из памяти в pdf2htmlEX вместо пути?Я также смотрел на то, чтобы сделать его base64 (base64.b64encode (file_handle_file.getvalue ()). Decode ()), но также безрезультатно.

Большое спасибо всем!

...