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)

