PDFShift: подробный обзор облачного HTML-to-PDF API
PDFShift занимает узкую, но важную нишу: это не программа для чтения и не визуальный редактор готовых PDF, а облачный API, который получает HTML-код или адрес веб-страницы и возвращает PDF либо растровое изображение. Такой подход рассчитан прежде всего на разработчиков и автоматизированные системы: интернет-магазин может выпускать счета, CRM — коммерческие предложения, внутренний сервис — отчёты, а веб-приложение — снимки страниц без самостоятельного развёртывания Chromium. На сентябрь 2026 года сервис действует, использует API версии v3 и поддерживается французской компанией S.A.S.U PDFShift.
| Параметр | Актуальное состояние |
|---|---|
| Тип продукта | Облачный SaaS и REST API для HTML-to-PDF и HTML-to-image |
| Оператор | S.A.S.U PDFShift, Франция; управляющий директор — Cyril Nicodème |
| Основной вход | HTML-код или URL; также сохранённые HTML-шаблоны |
| Выход | PDF, PNG, JPEG, WebP |
| Рендеринг | Chromium; в API доступны версии процессора 116 и 142, новые пользователи автоматически используют актуальную версию |
| Доступ | HTTPS API, веб-панель, Playground и документация; отдельного desktop-клиента нет |
| Бесплатный режим | Зарегистрированный Free — до 50 кредитов в месяц; sandbox не расходует кредиты, но добавляет водяной знак |
| Оплата | Подписка по объёму кредитов; один кредит покрывает до 5 МБ результата |
| Статус | Сервис активен; официальная статус-страница 11 сентября 2026 года показывала все компоненты online |
Скачать PDFShift
Новейшая версия для Виндовс, macOS и Линукс. Удобный редактор PDF под российские реалии.
Скачивать PDFShift как установщик для Windows, macOS или Linux не нужно: актуальный продукт предоставляется как облачная служба. Безопасная точка входа — официальный сайт PDFShift, откуда доступны регистрация, Dashboard, Playground и документация API. Файлы с названием PDFShift, предлагаемые сторонними каталогами в виде EXE, DMG или APK, не соответствуют основной поставке продукта и не требуются для работы с официальным API.
Для интеграции можно вообще не устанавливать специальный SDK: достаточно HTTP-клиента, способного отправить POST-запрос с JSON на конечную точку API. Официальный сайт показывает примеры для Python, Node.js, PHP и Ruby, а документация описывает протокол независимо от языка. Поэтому «редакция» PDFShift фактически определяется версией API и серверного процессора, а не номером локального приложения. В актуальной документации основной путь конвертации — v3/convert/pdf.
Что такое PDFShift
PDFShift — коммерческий SaaS компании S.A.S.U PDFShift, зарегистрированной во Франции. Юридическая информация сервиса указывает адрес в Париже, регистрационный номер 843 913 807 и управляющего директора Cyril Nicodème. Компания позиционирует сервис как средство автоматического преобразования HTML-документов и веб-страниц в PDF через API. Это важно для точной идентификации: PDFShift не следует смешивать с настольными редакторами PDF, мобильными сканерами, виртуальными принтерами или библиотеками, которые запускаются внутри приложения пользователя.
Основной объект работы — HTML. В параметре source можно передать строку с разметкой либо URL, который сервер PDFShift загрузит сам. После рендеринга сервис возвращает бинарный PDF или, для других конечных точек, PNG, JPEG либо WebP. Отдельный набор API для шаблонов позволяет хранить HTML на стороне сервиса и генерировать документ по сохранённому шаблону и данным.
Основные функции PDFShift
Преобразование HTML и URL в PDF
Ключевая операция выполняется POST-запросом к /v3/convert/pdf. Источник может быть HTML-кодом либо доступным по сети URL. Сервер загружает страницу в Chromium, дожидается условий готовности и печатает результат в PDF. Если исходная страница требует Basic Authentication, дополнительных HTTP-заголовков или cookies, эти данные можно передать отдельными параметрами. Это позволяет рендерить не только публичные страницы, но и контролируемые веб-ресурсы, если архитектура доступа допускает передачу соответствующих учётных данных сервису.
Для динамических страниц предусмотрены несколько способов синхронизации. Параметр delay задерживает захват до 10 секунд; timeout может задавать предел загрузки до 900 секунд; wait_for ждёт, пока глобальная JavaScript-функция вернёт истинное значение, максимум 30 секунд; wait_for_network управляет ожиданием сетевого покоя. Есть отдельная настройка ignore_long_polling, полезная для страниц с WebSocket или длительными соединениями, которые не должны блокировать печать. При необходимости JavaScript можно полностью отключить.
Управление печатной геометрией
PDFShift поддерживает стандартные форматы Letter, Legal, Tabloid, Ledger, A0–A5 и пользовательские размеры. Можно переключить landscape, задать поля строкой в CSS-подобном синтаксисе или объектом для каждой стороны, изменить масштаб от 0,1 до 2, напечатать выбранные страницы и отключить фоны. Параметр remove_blank анализирует последнюю страницу и удаляет её только если на ней действительно нет содержимого; скрытые данные, колонтитулы или элементы, вытолкнутые на страницу, могут сохранить её в результате.
Колонтитулы, метаданные, водяные знаки и защита
Верхний и нижний колонтитулы задаются отдельно от основного документа. Их CSS не наследуется из body, поэтому стили нужно включать непосредственно в содержимое header и footer. Документация поддерживает переменные даты печати, заголовка, URL, номера текущей и общего числа страниц. Для PDF можно добавить метаданные, включая автора, заголовок, тему и ключевые слова.
Водяной знак бывает текстовым или графическим, с управлением шрифтом, прозрачностью, поворотом и положением. Защита PDF включает пользовательский и владельческий пароли, а также запреты печати, копирования и модификации. Документация указывает 128-битное шифрование и отдельно предупреждает, что соблюдение permission-флагов зависит от PDF-просмотрщика: некоторые программы не строго разделяют права владельца и пользователя.
PNG, JPEG и WebP
PDFShift уже не ограничивается одним PDF: документация v3 описывает конечные точки для PNG, JPEG и WebP. Для снимков доступны полностраничный захват, выбор элемента CSS-селектором или clip-область; для WebP указывается масштаб DPI 1, 2 или 4. Это расширяет продукт до сервиса веб-рендеринга: одна инфраструктура может формировать PDF для скачивания и изображения для превью, карточек или Open Graph.
Шаблоны и повторная генерация
Templates API умеет создавать, перечислять, читать, обновлять и удалять HTML-шаблоны. Шаблон идентифицируется slug, имеет имя и HTML-содержимое. Отдельная операция генерирует по шаблону HTML, PDF, JPEG, PNG или WebP. Это полезно, когда макет счета или сертификата меняется редко, а данные подставляются часто: приложение не обязано пересылать весь HTML при каждом запросе.
Асинхронная обработка и доставка результата
Если указать webhook, API отвечает 202 и переводит операцию в очередь, а после завершения отправляет POST на заданный адрес. Для результата через управляемое PDFShift хранилище ссылка указывает на Amazon S3 и сохраняется два дня. Параметр filename также меняет ответ: вместо бинарного файла возвращается JSON со ссылкой. Для более контролируемой схемы документация позволяет записывать результат непосредственно в собственный Amazon S3; общий справочник также заявляет поддержку Google Cloud Storage для экспорта в пользовательское облако.
Интерфейс и удобство использования
У PDFShift нет традиционного окна с панелью страниц, лентой инструментов и кнопкой «Сохранить как». Рабочая модель состоит из четырёх зон: официальный сайт с учётной записью и тарифом, Dashboard для API-ключей и параметров аккаунта, Playground для пробных запросов и документация с описанием полей. В production пользователь обычно взаимодействует уже не с веб-интерфейсом, а с собственным кодом и HTTP-ответами.
Порог входа поэтому зависит не от знания PDF, а от навыков веб-разработки. Разработчик, знакомый с REST, JSON, HTTP-кодами и секретами окружения, получает довольно прямую модель: source задаёт содержимое, дополнительные поля управляют печатью, а тело ответа содержит файл или служебный JSON. Для пользователя, который хочет вручную открыть документ и переставить страницы мышью, эта логика будет значительно сложнее настольного редактора.
Документация и названия параметров представлены на английском; подтверждённой русской локализации панели или справочника нет. При этом API не привязан к языку программирования: запрос можно сформировать из любого окружения, способного работать с HTTPS и JSON. Официальные примеры снижают стартовый порог для Python, Node.js, PHP и Ruby, но являются примерами, а не отдельными обязательными клиентами.
Поддерживаемые форматы и совместимость
Входной формат PDFShift — HTML в двух формах: исходная строка или URL веб-страницы. В Templates API хранится тот же HTML. Сервис не документирует импорт DOCX, ODT, XLSX, EPUB, DjVu или существующего PDF как исходника для конвертации. Если бизнес-данные из таких форматов должны попасть в PDFShift, их сначала нужно преобразовать в HTML другим компонентом.
Выходные форматы актуальной документации: PDF, PNG, JPEG и WebP. Для шаблонов также можно получить HTML. Результат может вернуться непосредственно в HTTP-ответе, в Base64 при включённом encode, через временную ссылку, асинхронный webhook либо в собственное объектное хранилище при поддерживаемой схеме экспорта.
Совместимость с операционными системами практически определяется вашим клиентским приложением: API можно вызывать с Windows, macOS, Linux, контейнера, serverless-функции или backend-сервера. Сам рендер выполняется в инфраструктуре PDFShift. В параметре X-Processor-Version документация на момент проверки принимала Chromium 116 и 142, причём новые пользователи автоматически используют более свежий процессор. Это полезно для воспроизводимости: проект может временно закрепить поддерживаемую версию движка, если обновление Chromium меняет печатный макет.
Полученный обычный PDF можно открыть в любом совместимом просмотрщике. Если задача заключается именно в локальном чтении множества форматов, а не в серверной генерации, PDFShift и Sumatra PDF не конкурируют: Sumatra PDF — Windows-просмотрщик PDF, EPUB, MOBI, DjVu, XPS, комиксов и ряда изображений, тогда как PDFShift создаёт новый файл из веб-контента.
Производительность и стабильность
Для аутентифицированных запросов общий rate limit указан как до 250 документов в минуту; sandbox ограничен 10 документами в минуту. Неаутентифицированные вызовы имеют отдельное ограничение 2 запроса в минуту, а справка по аутентификации дополнительно ограничивает этот режим десятью конвертациями в день. При превышении лимита API возвращает HTTP 429 и заголовки с лимитом, остатком и временем сброса.
FAQ сервиса указывает до 50 параллельных конвертаций по умолчанию и объясняет, что пакетная параллельная обработка использует очередь и webhook. Для бесплатного тарифа на ценовой странице указан timeout 30 секунд; FAQ говорит о 30 секундах для Free и 100 секундах для платных планов по умолчанию. При этом поле timeout в запросе технически допускает значение до 900 секунд, но фактически доступный предел может зависеть от аккаунта и тарифа.
Стабильность облачного API всегда включает сетевую и серверную зависимость. Официальная статус-страница 11 сентября 2026 года показывала все сервисы online. В истории есть инциденты, то есть абсолютную безотказность предполагать нельзя: приложение должно обрабатывать 408, 429 и 5xx, задавать разумные повторные попытки и не считать отправку запроса гарантией готового документа.
Карта критических зависимостей
| Зависимость | Зачем нужна | Что произойдёт при отказе | Как снизить риск |
|---|---|---|---|
| Интернет и доступ к api.pdfshift.io | Передача HTML и получение результата | Новая генерация не выполняется | Очередь задач, повтор с backoff, контроль статуса API |
| API-ключ | Аутентификация и нормальные лимиты | Запрос может перейти в жёстко ограниченный неаутентифицированный режим | Хранить ключ в секретах, мониторить 401/403, ротировать ключи |
| Доступность исходного URL | Нужна при source в виде ссылки | PDFShift не сможет загрузить страницу или ресурсы | Проверять HTTP-статус, при необходимости передавать auth, headers и cookies |
| Внешние CSS, шрифты, изображения и JS | Определяют итоговый вид | Макет может стать неполным или ожидание затянется | Фиксировать версии ресурсов, использовать wait_for, при критичности встраивать ресурсы в HTML |
| Webhook и объектное хранилище | Нужны для асинхронной доставки | Готовый документ может не попасть в бизнес-процесс | Идемпотентный обработчик, повторная сверка логов, собственный S3 для постоянного хранения |
| Chromium-процессор | Рендерит веб-страницу | Обновление может повлиять на пиксельную вёрстку | Регрессионные эталоны и явный X-Processor-Version при необходимости |
Лицензирование и версии
PDFShift распространяется как SaaS по подписке с бесплатным уровнем. Официальная страница цен указывает Free на 50 кредитов в месяц без платы. Один кредит покрывает до 5 МБ сгенерированного результата: например, файл 14 МБ расходует три кредита. Это принципиально отличается от тарифов «один документ = одна операция» и означает, что размер тяжёлых отчётов влияет на стоимость.
Для зарегистрированного Free на странице цен указан максимальный размер 15 МБ и timeout 30 секунд. Отдельно существует режим без API-ключа: документация аутентификации называет предел 2 МБ, до десяти конвертаций в день, отсутствие параллельных запросов, 30-секундный timeout и обязательный водяной знак. Поэтому нельзя переносить ограничения анонимного теста на полноценный бесплатный аккаунт.
Sandbox включается параметром sandbox=true, не списывает кредиты и добавляет водяной знак; лимит — 10 документов в минуту. Это не пробный период с датой окончания, а режим разработки. Для production без тестового водяного знака нужен действующий API-ключ и доступная квота.
Официальный FAQ приводит конкретный коммерческий пример: Boost стоит 24 доллара в месяц, включает 2500 кредитов, а сверхлимитная конвертация при включённом overage тарифицируется по 0,03 доллара за кредит. Overage по умолчанию выключен. Сервис отправляет уведомления при расходе 50, 80 и 100 процентов квоты. Для годовой оплаты FAQ обещает оплату десяти месяцев вместо двенадцати. Более высокие объёмы выбираются через интерактивный калькулятор на странице Pricing или согласуются с поставщиком, поэтому перед покупкой следует сверить актуальную ступень и налоги.
Полная стоимость использования
Цена PDFShift складывается не только из числа «документов». Первый фактор — объём результата: каждые начатые 5 МБ требуют отдельного кредита. Второй — повторные генерации при ошибках в шаблоне; здесь помогает sandbox, потому что он не расходует квоту. Третий — overage: если его включить, бизнес-процесс продолжит работать после исчерпания пакета, но сверхлимит попадёт в отдельный счёт.
Четвёртый фактор — хранение и доставка. Бинарный ответ можно сохранить сразу в своей системе без промежуточной постоянной ссылки. Если использовать filename или webhook с управляемым PDFShift хранилищем, временный файл держится в S3 два дня. Для долгоживущих архивов разумнее сразу отправлять результат в собственное хранилище и учитывать его стоимость отдельно. Пятый фактор — эксплуатация интеграции: мониторинг 429/5xx, управление ключами, регрессионные проверки шаблонов после обновления Chromium и поддержка webhook тоже требуют инженерного времени.
Системные требования
Клиентская сторона
Поставщик не публикует минимальные требования к процессору, оперативной памяти или версии Windows/macOS, потому что сам PDFShift не устанавливается на пользовательский компьютер. Нужен доступ к интернету и программное окружение, способное отправлять HTTPS-запросы, формировать JSON и принимать бинарные ответы. Для ручной настройки аккаунта нужен веб-браузер, но конкретный перечень поддерживаемых браузеров в официальных материалах не задан.
Сервер и сеть
Production-система должна иметь исходящий доступ к API PDFShift и, если используется webhook, публично или маршрутизируемо доступную конечную точку для входящего POST. При передаче source как URL сама страница и необходимые ей ресурсы должны быть достижимы из инфраструктуры PDFShift. Закрытые ресурсы можно загрузить с Basic Authentication, дополнительными HTTP-заголовками и cookies, но это нужно согласовать с политикой безопасности организации.
Требования к исходному HTML
Отдельного «минимального стандарта HTML» сервис не объявляет: документ рендерится Chromium. Чем меньше макет зависит от нестабильных внешних запросов, случайных задержек JavaScript и недоступных шрифтов, тем воспроизводимее итог. Для долгих приложений предусмотрены delay, wait_for, wait_for_network и timeout; для lazy-load изображений есть отдельный параметр, прокручивающий страницу для их загрузки.
Преимущества и недостатки PDFShift
Плюсы и минусы
Плюсы ✔️
- Не нужно обслуживать браузерный рендерер. Chromium, его обновления и серверная печать находятся на стороне PDFShift.
- Гибкое управление PDF. Поддерживаются размеры страниц, поля, масштаб, диапазоны страниц, колонтитулы, метаданные, водяные знаки и пароли.
- Работа с динамическими страницами. Есть ожидание сети, задержка, пользовательский JavaScript и условие wait_for.
- Несколько выходных форматов. Помимо PDF доступны PNG, JPEG и WebP.
- Удобный режим разработки. Sandbox не списывает кредиты, что позволяет отлаживать интеграцию без расхода production-квоты.
- Асинхронные сценарии. Webhook и параллельная обработка подходят для очередей и фоновой генерации.
- Контроль доставки. Можно получить файл напрямую или отправлять результат в собственное объектное хранилище.
Минусы ❌
- Облачная зависимость. Без сети и доступности внешнего API новые документы не генерируются.
- Не редактор существующих PDF. Нет типичного GUI для ручного изменения текста, страниц, OCR и интерактивной правки готового файла.
- Стоимость зависит от размера. Документы крупнее 5 МБ расходуют несколько кредитов на одну генерацию.
- Нужны навыки разработки. Основной интерфейс — REST API, а не кнопки настольной программы.
- Динамический веб-контент требует дисциплины. Шрифты, сторонние ресурсы и JavaScript могут влиять на стабильность макета и время рендера.
- Некоторые security-флаги PDF не абсолютны. Сам поставщик предупреждает, что часть просмотрщиков может трактовать ограничения печати и копирования по-разному.
Сравнение с аналогами
| Продукт | Модель | Что принимает | Бесплатный уровень | Ключевое отличие |
|---|---|---|---|---|
| PDFShift | Облачный REST API | HTML или URL | 50 кредитов в месяц после регистрации; отдельный sandbox | Кредиты зависят от размера результата; PDF и изображения, webhook, шаблоны |
| DocRaptor | Облачный API | HTML | 5 документов в месяц и бесплатные test-документы по условиям сервиса | Тарификация по документам; официальный Basic — 15 долларов за 125 документов в месяц |
| PDFMonkey | Облачный API с шаблонным редактором | HTML-шаблон плюс данные | 20 документов в месяц; новым аккаунтам доступен 30-дневный Pro trial | Сильнее ориентирован на управляемые шаблоны и командную работу; Starter — 5 евро за 300 документов |
| Gotenberg | Самостоятельно развёртываемый Docker API | URL, HTML, Markdown и офисные документы через разные модули | Нет SaaS-квоты: расходы связаны с собственной инфраструктурой | Подходит, когда Chromium и данные должны оставаться в вашем контуре; требует администрирования контейнеров |
| Sumatra PDF | Локальное Windows-приложение | Готовые PDF и другие документы для чтения | Бесплатное ПО с открытым исходным кодом | Это просмотрщик, а не HTML-to-PDF API; дополняет PDFShift на этапе чтения результата |
PDFShift логичнее выбирать, когда требуется быстро встроить HTML-to-PDF в backend и не хочется обслуживать собственный headless Chromium. DocRaptor конкурирует напрямую, но считает документы иначе и имеет другую ценовую сетку. PDFMonkey удобнее, если бизнес-пользователям важнее управление шаблонами и сохранёнными документами, чем «тонкий» API рендеринга. Gotenberg привлекательнее для self-hosted среды, где внешняя передача данных нежелательна или запрещена.
Sumatra PDF занимает другое место в цепочке. Он нужен после генерации: открыть, прочитать, поискать или распечатать готовый PDF на Windows. Если задача — локально создавать PDF из приложений через печать, ближе по модели будет doPDF. Для офлайн-набора PDF-инструментов под Windows уместен PDF24 Creator, а для полноценной визуальной правки готового файла — Adobe Acrobat Pro или Sejda PDF Editor.
Инструкция по установке
У PDFShift нет установки в классическом смысле, поэтому корректная процедура — подключение облачного API. Она одинакова для Windows, macOS и Linux, если выбранный язык программирования умеет отправлять HTTPS-запросы.
Первичное подключение
- Откройте официальный сайт PDFShift и создайте аккаунт, если нужен нормальный бесплатный лимит и PDF без обязательного анонимного водяного знака.
- В Dashboard создайте API-ключ. Документация требует передавать его в заголовке X-API-Key; ключ следует хранить как секрет, а не включать в клиентский JavaScript или публичный репозиторий.
- Выберите способ интеграции: прямой REST-запрос или пример для вашего языка. Специальная библиотека не является обязательной.
- Сначала включите sandbox=true и отправьте минимальный HTML. Проверьте HTTP 200, тип ответа и содержимое файла. Водяной знак на этом этапе ожидаем и не означает ошибку.
- Добавьте печатные параметры: format, margin, landscape, header/footer и ожидание динамического контента только после того, как базовая конвертация стабильна.
- Выполните один контрольный production-запрос без sandbox и сравните результат с эталоном. Убедитесь, что X-Credits-Used и размер файла соответствуют ожиданиям.
- Для фоновых операций настройте webhook и обработку 202, а для синхронных — сохранение бинарного ответа. В обоих случаях обрабатывайте 408, 429 и 5xx как отдельные ветви.
Удаление и отключение
Так как локального приложения нет, «удаление» означает деактивацию интеграции. Сначала остановите новые задания, дождитесь очереди webhook, сохраните нужные результаты в своём хранилище и удалите сохранённые шаблоны через Templates API, если они больше не нужны. Затем отзовите API-ключи в Dashboard и удалите секреты из CI/CD и серверных переменных. Подписку можно отменить через аккаунт до следующего продления; условия сервиса указывают, что отмена вступает в силу на очередную дату продления. Локальный SDK, если вы ставили стороннюю или языковую библиотеку, удаляется обычным менеджером пакетов вашего проекта.
Практические кейсы
Автоматический счёт из HTML-шаблона
Цель: выпускать одинаково оформленные счета после оплаты. Подготовка: HTML-макет с фиксированными стилями, тестовые данные, локально доступные или стабильные внешние шрифты. Шаги: сохраните макет как template либо формируйте HTML в приложении; подставьте номер заказа, позиции и итоги; запросите PDF; сохраните бинарный ответ в хранилище заказа. Проверка: сверяйте число страниц, номер счёта, итоговую сумму и ненулевой размер файла. Ограничение: крупные встроенные изображения увеличивают итоговый размер и расход кредитов.
Архивная копия динамической веб-страницы
Цель: получить PDF страницы после завершения клиентского рендеринга. Подготовка: URL, который доступен серверам PDFShift, и явный сигнал готовности в JavaScript либо предсказуемое сетевое состояние. Шаги: передайте URL в source; если страница долго грузит данные, используйте wait_for; для ресурсов с lazy loading включите соответствующую опцию; при необходимости передайте cookies или заголовки. Проверка: сравните ключевой текст и число блоков с веб-версией. Ограничение: бесконечные long-polling или WebSocket-соединения могут мешать ожиданию сети, поэтому их нужно исключать из критерия готовности.
Изображение страницы для превью
Цель: получить PNG, JPEG или WebP вместо PDF. Подготовка: тот же HTML или URL, что и для печатной версии, плюс понимание требуемого фрагмента. Шаги: выберите соответствующую конечную точку; задайте fullpage, CSS-селектор или clip, но не несколько режимов одновременно; для WebP выберите допустимый коэффициент DPI. Проверка: контролируйте MIME-тип, размеры и наличие ожидаемого элемента. Ограничение: растровый результат не заменяет PDF, если пользователю нужен текстовый поиск, печатная пагинация или многостраничный документ.
Асинхронная партия документов
Цель: не держать HTTP-соединение открытым при массовой генерации. Подготовка: устойчивый HTTPS webhook, хранилище результатов и идентификатор задания в вашей системе. Шаги: отправьте конвертацию с webhook; считайте 202 подтверждением постановки в очередь, а не завершения; принимайте callback и сначала проверяйте наличие error; после успешного ответа загрузите или зафиксируйте файл. Проверка: число подтверждённых callback должно совпадать с числом заданий, а повторные уведомления не должны создавать дубли. Ограничение: временная ссылка управляемого хранилища живёт два дня, поэтому архивирование нужно делать самостоятельно.
Документ с повышенными требованиями к приватности
Цель: сократить промежуточное хранение чувствительного PDF. Подготовка: юридическая проверка сценария, собственный bucket и минимальный набор передаваемых данных. Шаги: используйте прямой бинарный ответ или собственное хранилище; для применимых сценариев API содержит флаги is_gdpr и is_hipaa, которые блокируют несовместимые способы, способные сохранить чувствительный документ на управляемом PDFShift S3; не включайте log_request без необходимости. Проверка: убедитесь, что итог оказался только в разрешённом хранилище и временная публичная ссылка не создавалась. Ограничение: флаги API не заменяют оценку рисков, DPA, BAA и внутреннюю политику обработки данных.
Навигатор по сбоям
| Симптом | Что проверить | Безопасное действие | Контроль результата |
|---|---|---|---|
| 401 или 403 | X-API-Key, права и формат заголовка | Не печатать ключ в лог; проверить секрет и при необходимости ротировать | Повторный запрос проходит аутентификацию и не попадает в анонимные лимиты |
| 408 | Долгие ресурсы, wait_for, network idle | Упростить страницу, исправить условие готовности, увеличить допустимый timeout в пределах аккаунта | Документ формируется без случайной задержки |
| 429 | Rate-limit заголовки и параллелизм | Остановить агрессивные повторы, ждать reset, применять backoff | Очередь разгружается без новых волн 429 |
| Пустые изображения или шрифты | Доступность внешних ресурсов | Встроить критические ресурсы или исправить URL и авторизацию | Эталонные элементы присутствуют в PDF |
| Лишняя последняя страница | Колонтитул, скрытый элемент, CSS page-break | Исправить макет; remove_blank использовать только как страховку | Количество страниц стабильно на тестовом наборе |
| Webhook не завершает заказ | Доступность endpoint, error в payload, идемпотентность | Повторно сверить журнал операции и восстановить состояние из своего task-id | Один документ соответствует одному бизнес-событию |
Контроль перед сохранением и передачей
- Проверьте HTTP-код и Content-Type, а не только наличие тела ответа.
- Сверьте количество страниц, обязательные поля и итоговые суммы на уровне вашего приложения.
- Проверьте X-Credits-Cost и X-Credits-Used, особенно после включения sandbox или изменения размера документов.
- Убедитесь, что документ не содержит тестового водяного знака перед отправкой клиенту.
- Проверьте шрифты, изображения и колонтитулы на эталонных страницах.
- Если используется временная ссылка, скопируйте файл в постоянное хранилище до истечения двух суток.
- Для защищённого PDF откройте файл обычным просмотрщиком и отдельно проверьте пароль; permission-флаги не следует считать криптографической гарантией запрета копирования.
- Не сохраняйте API-ключ, cookies и приватные заголовки рядом с готовым PDF или в пользовательском журнале ошибок.
Часто задаваемые вопросы
Можно ли пользоваться PDFShift без регистрации?
Да, документация допускает запросы без API-ключа и официальный Playground. Но это отдельный строго ограниченный режим: водяной знак, максимум 2 МБ, 30 секунд, не более десяти конвертаций в день, без параллельной обработки; действует также лимит 2 запроса в минуту. Для регулярного бесплатного использования лучше зарегистрировать аккаунт с 50 кредитами в месяц.
PDFShift умеет редактировать уже существующий PDF?
Основная документация описывает HTML-to-PDF и HTML-to-image, а не импорт и визуальное редактирование существующих PDF. Если нужно исправлять текст, переставлять страницы или работать с аннотациями в готовом файле, выбирайте PDF-редактор. Например, на сайте есть отдельный обзор PDF-XChange Editor.
Есть ли в PDFShift OCR?
OCR не относится к заявленным функциям PDFShift: сервис рендерит HTML, а не распознаёт текст на сканах. Для распознавания нужен специализированный инструмент, например класс программ, представленный ABBYY FineReader.
Нужна ли банковская карта для Free?
Официальный FAQ указывает, что для бесплатных 50 кредитов в месяц карта не требуется. Платёжные данные нужны при переходе на коммерческий план.
Sandbox и Free — одно и то же?
Нет. Free — тариф с месячной квотой. Sandbox — флаг конкретного запроса, который не списывает кредиты, добавляет водяной знак и ограничивает скорость десятью документами в минуту. Sandbox полезен и на платном аккаунте при разработке.
Сохраняет ли PDFShift документы?
Поставщик заявляет, что по умолчанию не хранит документы, если хранение явно не запрошено. Но некоторые режимы меняют схему: filename и webhook могут вернуть ссылку на файл в управляемом Amazon S3 сроком на два дня. Для долгого хранения следует использовать собственную систему или поддерживаемый экспорт в пользовательский bucket.
Можно ли защитить итоговый PDF паролем?
Да. API поддерживает пользовательский и владельческий пароли, а также ограничения печати, копирования и изменения. Документация указывает 128-битное шифрование. При этом сами ограничения операций могут соблюдаться разными PDF-просмотрщиками неодинаково.
Подходит ли PDFShift для Windows?
Да, если под «подходит» понимать доступ к облачному API из Windows-приложения или сервера. Нативной Windows-программы PDFShift не требуется. То же относится к macOS и Linux: совместимость зависит от HTTP-клиента и вашего стека, а не от локального рендерера.
Можно ли открыть результат в Sumatra PDF?
Да, если PDFShift вернул обычный PDF. Sumatra PDF выполняет здесь роль локального просмотрщика. Он не отправляет HTML в PDFShift и не заменяет серверную генерацию.
Как контролировать расходы при разработке?
Используйте sandbox=true, отслеживайте X-Credits-Cost и X-Credits-Used и не включайте overage до окончания нагрузочного профилирования. После выхода в production полезно реагировать на уведомления 50, 80 и 100 процентов квоты и считать средний размер PDF, потому что файлы свыше 5 МБ расходуют несколько кредитов.
Вывод
PDFShift подходит командам, которым нужен именно программный конвейер HTML → PDF/изображение без обслуживания собственного Chromium. Сильные стороны сервиса — управляемый браузерный рендеринг, гибкие печатные параметры, защита и водяные знаки, динамические ожидания, шаблоны, webhook и несколько способов доставки. Бесплатные 50 кредитов и sandbox дают достаточно пространства, чтобы проверить архитектуру до платного запуска.