Добавить содержимое байтов в PDF-файл с помощью Python - PullRequest
0 голосов
/ 16 мая 2018

У меня есть пустой файл PDF. Я получил некоторое содержимое в байтах и ​​записал в этот файл PDF. Я снова получил несколько байтов и хочу добавить их в существующий файл PDF. Я пытался открыть PDF-файл в режимах «ab» и «a + b», но содержимое не перезаписывается. Пожалуйста, помогите мне достичь этого.

Вот код -

get_view_pdf_url = "http://localhost:8000/api/3.0/sites/a18ab9c9-c523-4848-9199-8c50e100ac36/views/e948dd8c-31b1-480a-8123-fecf47b1c682/pdf"
reqPDF = requests.get(get_view_pdf_url, data=b'', headers={'x-tableau-auth': token})
reqPDF.raise_for_status()
print((reqPDF.content))
filename = "C:/Users/pinki.sharma/Desktop/Work/tempmon/pinkiTest.pdf"
with open(filename, 'wb') as f:
    f.write(reqPDF.content)
    f.close()

get_view_pdf1_url = "http://localhost:8000/api/3.0/sites/a18ab9c9-c523-4848-9199-8c50e100ac36/views/910d1215-59cb-4d63-95fd-7a2b224f18bc/pdf"
reqPDF1 = requests.get(get_view_pdf1_url, data=b'', headers={'x-tableau-auth': token})
reqPDF1.raise_for_status()
print((reqPDF1.content))

with open(filename, 'a+b') as f1:
    f1.write(reqPDF1.content)
    f1.close()

1 Ответ

0 голосов
/ 17 мая 2018

PDF-файлы - это сложные структурированные документы, если вы просто приклеиваете один за другим 2 полных PDF-файла, вы получите больший файл, но увидите только последний документ.

Как будто у вас есть 10 страниц, и вы склеиваете одну поверх другой - ваш стек становится все больше и тяжелее, но вы можете получить доступ только к верхнему.

Если вы хотитедобавить страницы одного PDF в другой, вы должны вставить их в правильные части первого PDF - один из способов сделать это описан в этот ответ @ImportanceOfBeingErnest:

Вы можете использовать pyPdf для этого.

    # Merge two PDFs
    from pyPdf import PdfFileReader, PdfFileWriter

    output = PdfFileWriter()
    pdfOne = PdfFileReader(file( "some\path\to\a\PDf", "rb"))
    pdfTwo = PdfFileReader(file("some\other\path\to\a\PDf", "rb"))

    output.addPage(pdfOne.getPage(0))
    output.addPage(pdfTwo.getPage(0))

    outputStream = file(r"output.pdf", "wb")
    output.write(outputStream)
    outputStream.close()

пример взят здесь

...