Конвертируем HTML в PDF, like a boss, используя DocRaptor

DocRaptor — это потрясающий пакет, который позволяет вам конвертировать HTML-документ в PDF. Работает с Python 2 и Python 3.

Вот некоторые особенности DocRaptor:

  1. Поддержка документов любого размера, постраничная оплата.
  2. Поддержка слоев и изменения размеров для каждой страницы.
  3. Асинхронная генерация для длинных или больших документов.
  4. 99,99% гарантия бесперебойной работы
  5. Существует бесплатная версия

Установка DocRaptor

Чтобы установить DocRaptor с помощью pip, введите следующую команду:

pip install docraptor

Вы также можете использовать easy_intall:

easy_install install docraptor

Создание PDF-файлов

Создать PDF из своего HTML-документа довольно просто, просто отправьте свой HTML-код в DocRaptor, и вы получите ответ.

import docraptor

docraptor.configuration.username = "ВСТАВЬТЕ_КЛЮЧ_СЮДА"
# docraptor.configuration.debug = True

doc_api = docraptor.DocApi()

response = doc_api.create_doc({
    "test": True,
    "document_url": "https://docraptor.com/documentation/api",
    "name": "docraptor-python.pdf",
    "document_type": "pdf",
})

with open('output.pdf', "wb") as f:
f.write(response)

Запустите скрипт, и он создаст файл PDF с именем output.pdf.

Предыдущий код генерирует PDF синхронно. Вот так вы можете создавать PDF-файлы асинхронно:

import docraptor
import time

docraptor.configuration.username = "ВСТАВЬТЕ_КЛЮЧ_ОТ_АПИ" 
# docraptor.configuration.debug = True
doc_api = docraptor.DocApi()

try:

create_response = doc_api.create_async_doc({
    "test": True, # тестовые документы создаются бесплатно, но с водяными знаками
    # "document_content": "Hello World", # отдаем непосредственно содержимое
    "document_url": "https://docraptor.com/documentation/api",  # или отдаем URL 
    "name": "docraptor-python.pdf", # этот параметр помогает дает имя файлу на выходе
    "document_type": "pdf", # выбираем тип документа
    "javascript": True, # подключаем javascript
    # "prince_options": {
    # "media": "screen", # использование стилей экрана вместо стилей печати
    # "baseurl": "http://hello.com", # симулировать URL при использовании document_content
    # },
})

while True:
    status_response = doc_api.get_async_doc_status(create_response.status_id)
    if status_response.status == "completed":
        doc_response = doc_api.get_async_doc(status_response.download_id)
        file = open("./docraptor-python.pdf", "wb")
        file.write(doc_response)
        file.close
        print("Создал PDF docraptor-python.pdf в текущей директории")
        break
    elif status_response.status == "failed":
        print("не вышло")
        print(status_response)
        break
    else:
       time.sleep(1)

except docraptor.rest.ApiException as error:
    print(error)
    print(error.message)
    print(error.code)
    print(error.response_body)