Рекомендация? для нашего конкретного проекта HTML -> PDF

У меня вопрос, который я вижу из googling, обсуждался подробно … но я хочу знать, что вы рекомендовали бы, исходя из наших конкретных потребностей. Я хочу быть на правильном пути, прежде чем я узнаю неделю позже, что я выбрал неправильный инструмент (инструмент, который работает, но чья особенность, в конце концов, будет исключать этот проект для нашего проекта).

Я прочитал некоторые хорошие потоки в Stack Overflow уже по этой теме .. но у них есть люди, которые делают рекомендации по всей карте. Как я и ожидал, – как правило, наши потребности и опыт находятся по всей карте. И снова, здесь я хочу знать, что вы рекомендовали бы, учитывая нашу конкретную ситуацию.

У нас есть динамическая HTML-страница, которая отображает 30 «адресных ярлыков» в пределах размеров одного документа с размером буквы US-letter. Мы хотим, чтобы пользователь имел возможность печатать страницу с размером одной буквы и содержал строку содержания идеально (как в браузере) для этикетки с этикеткой (напечатанной) на этикетке Avery, которую они будут использовать, чтобы затем очистить 30 стикеров и прикрепляется к физическому продукту. HTML-страница составляет ~ 200 000 байт (divs и tables), текст, gif, jpgs, графику 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 / service штрих-кода только в том случае, если бы я мог легко заменить его другим … и штрих-код должен быть повернут на 90 градусов – таким образом, он будет помещен в его крошечный (вертикально ориентированный) слот с выделенным слотом на каждой из 30-ти адресных ярлыков клетки».

  • Хотелось бы, чтобы у нас был бюджет для серверной версии PrinceXML 😉 … но не повезло.
  • Я никогда не использовал библиотеки PHP, такие как FPDF или TCPDF, но меня беспокоит скорость; корпоративным пользователям (в разных браузерах) понадобится pdf в режиме реального времени. Они могут быть терпеливыми и ждать финального PDF-файла, если оставить решение свободным .. но если для генерации требуется несколько минут, то это минус.
    Также я не уверен, насколько это хорошо для HTML -> PDF (в отличие от прямого PDF с нуля). Кроме того, не уверен, насколько хороша поддержка CSS. На нашей странице немного HTML / CSS kludge.
  • Я использовал инструменты командной строки HTMLDOC и wkpdf, но первый не нуждался в CSS, который мне нужен сейчас, и последний вводит маржу, которая убивает его для точного форматирования адресных меток (плюс этот проект находится в Linux).

Мои навыки PHP еще не очень сильны … но я готов делать все возможное, чтобы вытащить любое решение вместе. В случае, если вы знакомы с любыми инструментами для создания PDF-файлов, которые, по вашему мнению, вам пригодятся, пожалуйста , сообщите нам об этом !

Если вы ищете что-то вроде Prince XML, но без затрат, я бы попробовал DocRaptor.com . Это онлайн-генератор PDF, который преобразует из HTML. Я использовал бесплатный план, и это было довольно легко.

Удачи!

Nate

Мое обычное предложение для таких вещей – wkhtmltopdf . Ваша веб-трансформация должна по-прежнему работать, как и все, что работает в браузерах веб-комплектов.

Справедливое предупреждение: я не использовал его сам.

Вы настроены на решение HTML-> PDF? Я бы не пошел по этому пути: HTML никогда не предназначался для печати … он не имеет понятия о страницах, а различия в ОС, браузере, установленных шрифтах и ​​т. Д. Могут сделать что-то столь же точное, как печать наклейки кошмаром. Почему бы не сгенерировать PDF напрямую и вообще обходить HTML?

К сожалению, я никогда не делал такого рода автоматизированное создание PDF, о котором вы говорите. Если бы мне пришлось быстро взломать что-то, первые две вещи, которые появляются в моей голове:

  • Сгенерируйте вывод PS и подайте в утилиту, например ps2pdf
  • Сгенерируйте выход TeX и подайте на pdflatex

Я буду беспокоиться о надежности и скорости обоих из них: это будет зависеть от того, сколько запросов вы обрабатываете в секунду.

Если посмотреть на вывод ldd для gs ( ps2pdf ), то он может использовать Cairo для генерации PDF. В Каире есть ссылки на PHP, C, Python и т. Д.

Я не рекомендую вам конвертировать HTML в PDF. Как бы то ни было, если вы смогли получить его в HTML, преобразование никогда не сохранит эту точность.

Я использовал FPDF и обнаружил, что он достаточно быстр для создания PDF в реальном времени даже сложных документов. FPDF позволяет точное размещение (измеряется в дюймах или ваших предпочтительных единицах) элементов на странице PDF, поэтому выравнивание не должно быть проблемой. Я подозреваю, что вам будет проще создавать PDF-файл, чем для создания HTML-кода.

Для генерации штрих-кода есть пользовательские сценарии, чтобы вы могли сделать это в FPDF, если хотите. Или вы можете встроить изображение, которое вы создали в другом месте.

EDIT: просто для проверки, я проверил сайт FPDF, и есть пользовательский сценарий для создания меток в общих форматах Avery. Это менее 200 строк кода, поэтому, даже если вы хотите написать свой собственный, я подозреваю, что вы можете сделать это довольно легко.

В конце концов, мы дали PrinceXML прохождение (через услугу «платить по мере необходимости» docRaptor ». Благодаря Nate для этого совета). На данный момент принц не распознает преобразование CSS3, которое мне нужно для поворота штрих-кода в нашем pdf-файле. Но я нашел еще один генератор штрих-кода, который вращает его во время рисования, прежде чем служить … так, чтобы это получилось. Там могут быть более эффективные способы генерации PDF-файлов. Но для тех из нас, кто тратит все время на взломы веб-страниц, есть что-то очень приятное в том, что создаваемые pdf-файлы форматируются точно так же, как источник HTML / CSS. Я понял, что вся суета над принцем хорошо заработана. Спасибо всем, кто ответил.