Самый быстрый API для написания PDF конвертера?
Существует так много API или SDK, которые позволяют разработчикам создавать конвертер PDF. PDFLib, TCPDF, DOMPDF и т. Д.
Также есть готовые конвертеры PDF, но у них нет всех вариантов, которые я хочу. Поэтому я думаю, может быть, лучше написать свой собственный конвертер.
Если вы сами сядете в конвертер HTML-PDF, прибл. Сколько времени это займет? Требуется ли вам написать целый HTML-парсер, прежде чем попасть куда-нибудь?
Основные функции, необходимые для моего приложения, - это иметь пользовательские размеры документов и абсолютно позиционированные элементы div, содержащие текст и изображения. Нет фреймов.
1 ответ
Вот как вы, вероятно, должны подумать об этой задаче - вы не столько конвертируете HTML в PDF, сколько пишете рендер, который будет отображать HTML в PDF.
Так что, если у вас нет оболочки HTML-рендерера, это ваш первый шаг. Он должен принимать HTML и, учитывая "размер окна", вызовет набор методов, которые вы реализуете для визуализации примитивов (рисование линий, размещение изображений, размещение текста, размещение ссылок и т. Д.). Вы, несомненно, столкнетесь с проблемой того, что HTML-страницы не имеют фиксированной высоты, а PDF-страницы имеют.
Далее вам понадобится приличный PDF-сервер. Под приличным я подразумеваю, что он не будет взорваться на большом количестве изображений, обрабатывать ресурсы в разумных пределах и так далее. Он также должен иметь разумную поддержку Unicode, так что если вы отправите ей строку Unicode, он автоматически выполнит махинации PDF, чтобы правильно ее отобразить, чтобы вам не приходилось делать эту работу вручную (и, поверьте мне, нет). А потом есть ссылки - что вы собираетесь с ними делать? В идеале вы должны отследить их и выяснить, переходят ли они к определенному подразделу того же документа (который станет ссылкой с действием перехода к просмотру), или они выходят в сеть (которая станет ссылкой). с действием открытого URI), или если вы конвертируете несколько документов, нужно ли иметь базовый URI для документа и относительные URI или это должна быть перекрестная ссылка на файл и т. д.
Кроме того, есть понятие навигации и структура документа. Теоретически, вы должны быть в состоянии схватить <H1>
и другие теги заголовка и построение дерева структуры с действиями вида goto для каждого.
Другие вещи, о которых вам следует знать - модель PDF использует ресурсный подход к крупным компонентам документов, таким как изображения, шрифты, пространства надписей и т. Д., Чтобы их можно было совместно использовать. Создание вашего рендерера с учетом этого, как правило, приводит к получению лучшего PDF и меньшему использованию памяти Если ваш генератор PDF позволяет это сделать, вы действительно должны иметь возможность создать ресурс для определенного изображения и записать его в документ (или временный файл) заранее, а затем ссылаться на него с помощью дескриптора ресурса, когда вы размещаете его на странице. Другие ссылки на то же изображение используют дескриптор и не занимают больше места в файле. Шрифты работают точно так же - если вы используете определенные шрифты, это помогает знать их заранее и иметь механизм, который автоматически поднастраивает их по мере их использования.
Если у вас есть средство рендеринга HTML и серверная часть PDF, то эта задача может занять у вас две недели, может быть, три, опять же, при условии, что ваш HTML-интерфейс и PDF-интерфейс являются наполовину разумными.