Рекомендация? для нашего конкретного проекта HTML ->PDF
У меня есть вопрос, который, как я вижу из гугла, был подробно обсужден.. но я хочу знать, что бы вы порекомендовали, исходя из наших конкретных потребностей. Я хочу быть на правильном пути, прежде чем через неделю работы узнаю, что выбрал неправильный инструмент (инструмент, который работает, но особенность которого, в конце концов, исключила бы его для нашего проекта).
Я уже прочитал несколько хороших тем о переполнении стека по этой теме.. но у них есть люди, которые дают рекомендации по всей карте.. как я и ожидал - в целом, наши потребности и опыт представлены по всей карте. И опять же, здесь я хочу знать, что бы вы порекомендовали, учитывая нашу конкретную ситуацию.
У нас есть динамическая HTML-страница, которая отображает 30 "адресных меток" в пределах размеров одного документа размером с американскую букву. Мы хотим, чтобы пользователь мог распечатать страницу размером с одну букву и чтобы содержимое идеально соответствовало (как это происходит в браузере) этикетке с адресом Avery (напечатанной) наклейке, которую они будет использоваться для того, чтобы затем очистить 30 наклеек и прикрепить их к физическому продукту. HTML-страница состоит из HTML-кода (divs и таблиц), текста, gif-файлов, jpg-файлов, графики PNG со штрих-кодом и интенсивного использования CSS-CSS2, а также CSS3 (преобразование свойств CSS3), т.Е. Это:
/* --- for firefox, safari, chrome, etc. --- */
-webkit-transform: rotate(90deg);
-moz-transform: rotate(90deg);
/* --- for ie --- */
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
...который я использую для поворота (на 90 градусов) штрих-кода, который я беру с этого сайта/сервиса: http://www.barcodesinc.com/generator/index.php
Мы могли бы отказаться от этого PNG/сервиса штрих-кода, только если я мог бы легко заменить его другим... и штрих-код должен быть повернут на 90 градусов - чтобы таким образом поместиться в его крошечный (вертикально ориентированный) выделенный слот на каждой из 30 "ячеек адресной метки".
- Жаль, что у нас нет бюджета на серверную версию PrinceXML;-)... но не повезло.
- Я никогда не использовал библиотеки PHP, такие как FPDF или TCPDF, но меня беспокоит скорость; корпоративным пользователям (в разных браузерах) понадобится pdf в режиме реального времени. Они могут быть терпеливы и ждать окончательного PDF, если оставить решение бесплатным.. но если для генерации требуется несколько минут, это минус.
Также я не уверен, насколько они хороши для HTML ->PDF (в отличие от прямого PDF с нуля).. плюс не уверен, насколько хороша поддержка CSS. Наша страница немного похожа на HTML/CSS-клудж. - Я использовал инструменты командной строки HTMLDOC и wkpdf, но в первом не хватало CSS, который мне сейчас нужен, а во втором вводится поле, которое убивает его для точного форматирования метки адреса (плюс этот проект находится на Linux).
Мои навыки работы с PHP еще не очень сильны.. но я готов сделать все возможное, чтобы собрать воедино любое решение. Если вы знакомы с какими-либо инструментами создания PDF-файлов, которые, по вашему мнению, подойдут для этой цели, то пожалуйста, сообщите!
5 answers
Если вы ищете что-то вроде Prince XML, но без затрат, я бы попробовал DocRaptor.com . Это онлайн-генератор pdf, который преобразует из HTML. Я воспользовался бесплатным планом, и это было довольно просто.
Удачи!
Нейт
Мое обычное предложение для таких вещей - wkhtmltopdf. Ваша функция преобразования webkit все равно должна работать, как и все остальное, что работает в браузерах веб-наборов.
Справедливое предупреждение: Я сам им не пользовался.
Вы настроены на решение HTML->PDF? Я бы не пошел по этому пути: HTML никогда не предназначался для печати... в нем нет понятия страниц, а различия в операционной системе, браузере, установленных шрифтах и т. Д. Могут сделать что-то настолько точное, как печать этикеток, кошмаром. Почему бы не сгенерировать PDF напрямую и вообще не обойти HTML?
К сожалению, я никогда не занимался автоматизированным созданием PDF-файлов, о котором вы говорите. Если бы мне пришлось быстро что-то сколотить, первые две вещи вот что приходит мне в голову:
- Генерировать вывод PS и передавать его в утилиту, такую как
ps2pdf
- Генерировать вывод TeX и передавать в
pdflatex
Я бы беспокоился о надежности и скорости обоих из них: это сильно зависело бы от того, сколько запросов вы обрабатываете в секунду.
Глядя на вывод ldd
для gs
(ps2pdf
), похоже, он может использовать Cairo для генерации PDF-файлов. Для Cairo доступны привязки PHP, C, Python и т.д.
Я не рекомендую вам пытаться конвертировать ваш HTML в PDF. Как бы точно вы ни смогли получить его в HTML, преобразование никогда не сохранит эту точность.
Я использовал FPDF и обнаружил, что он достаточно быстр для создания PDF-файлов в реальном времени даже для сложных документов. FPDF позволяет точно размещать (измеряется в дюймах или в предпочитаемых вами единицах измерения) элементы на странице PDF, поэтому выравнивание не должно быть проблемой. Я подозреваю, что вам будет значительно легче для создания PDF-файла, чем для создания HTML.
Существуют пользовательские сценарии для генерации штрих-кодов, так что вы можете сделать это в FPDF, если захотите. Или вы можете встроить изображение, созданное вами в другом месте.
РЕДАКТИРОВАТЬ: Просто чтобы продолжить, я проверил сайт FPDF, и там есть пользовательский скрипт для создания меток в распространенных форматах Avery. Это меньше 200 строк кода, так что даже если вы захотите написать свой собственный, я подозреваю, что вы вполне сможете это сделать легко.
В конце концов, мы дали PrinceXML шанс (через платный сервис "DocRaptor". Спасибо Нейту за этот совет). На данный момент принц не распознает преобразование CSS3, необходимое мне для поворота штрих-кода в нашем pdf-файле.. но я нашел другой генератор штрих-кодов, который поворачивает его во время рисования, перед подачей.. так что все получилось. Возможно, существуют лучшие способы создания PDF-файлов.. но для тех из нас, кто тратит все свое время на взлом веб-страниц, есть что-то очень приятное в сгенерированные PDF-файлы точно отформатированы как источник HTML/CSS. Я обнаружил, что вся суета вокруг принца вполне заслужена. Спасибо всем, кто ответил.