DocRaptor — это потрясающий пакет, который позволяет вам конвертировать HTML-документ в PDF. Работает с Python 2 и Python 3.
Вот некоторые особенности DocRaptor:
- Поддержка документов любого размера, постраничная оплата.
- Поддержка слоев и изменения размеров для каждой страницы.
- Асинхронная генерация для длинных или больших документов.
- 99,99% гарантия бесперебойной работы
- Существует бесплатная версия
Установка 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)