Как web-страницу легко превратить в PDF?

Для меня было очень неожиданно то, что в хабе по Java практически нет информации по работе с PDF документами, поэтому я, из личного опыта, хочу на примере сервлета показать как легко можно любую web-страницу превратить в PDF документ.
Преамбула:
Напишем простой сервлет, который будет брать указанную нами web-страницу по HTTP протоколу и генерировать на её основе полноценный PDF документ.
Используемые библиотеки:
- Flying Saucer PDF — основная библиотека, которая поможет создать нам PDF документ из HTML/CSS
- iText — библиотека, которая включена в состав той, что описана выше, но я не мог не включить ее в список библиотек, т.к. именно на основе неё будет генерироваться PDF документ
- HTML Cleaner — библиотека, которая будет приводить наш HTML код в порядок
Описания библиотек для Maven конфигурации (pom.xml)
org.xhtmlrenderer flying-saucer-pdf 9.0.4 net.sourceforge.htmlcleaner htmlcleaner 2.6.1
Формирование страницы:
Одним из самый важных моментов является формирование страницы. Дело в том, что именно из самой страницы, посредством CSS, задаются параметры будущего PDF документа.
page.jsp
Пример @font-face < font-family: "HabraFont"; src: url(http://localhost:8080/resources/fonts/tahoma.ttf); -fs-pdf-font-embed: embed; -fs-pdf-font-encoding: Identity-H; >@page < margin: 0px; padding: 0px; size: A4 portrait; >@media print < .new_page < page-break-after: always; >> body < background-image: url(http://localhost:8080/resources/images/background.png); >body * < padding: 0; margin: 0; >* < font-family: HabraFont; >#block < width: 90%; margin: auto; background-color: white; border: dashed #dbdbdb 1px; >#logo < margin-top: 5px; width: 100%; text-align: center; border-bottom: dashed #dbdbdb 1px; >#content Привет, хабр! Текущее время: <%=sdf.format(new Date())%>Новая страница!
Здесь хочу остановиться на нескольких моментах. Для начала самое важное: все пути должны быть абсолютными! Картинки, стили, адреса шрифтов и др., на всё должны быть прописаны абсолютные пути. А теперь пройдемся по CSS правилам (то, что начинается с символа @).
@ font-face — это правило, которое скажет нашему PDF генератору какой нужно взять шрифт, и откуда. Проблема в том, что библиотека, которая будет генерировать PDF документ не содержит шрифтов, включающих в себя кириллицу. Именно поэтому таким образом придется определять ВСЕ шрифты, которые используются в Вашей странице, пусть это будут даже стандартные шрифты: Arial, Verdana, Tahoma, и пр., в противном случае Вы рискуете не увидеть кириллицу в Вашем документе.
Обратите внимание на такие свойства как «-fs-pdf-font-embed: embed;» и «-fs-pdf-font-encoding: Identity-H;», эти свойства необходимы, их просто не забывайте добавлять.
@ page — это правило, которое задает отступы для PDF документа, ну и его размер. Здесь хотелось бы отметить, что если Вы укажите размер страницы A3 (а как показывает практика, это часто необходимо, т.к. страница не помещается в документ по ширине), то это не значит, что пользователю необходимо будет распечатывать документ (при желании) в формате A3, скорее просто весь контент будет пропорционально уменьшен/увеличен до желаемого (чаще A4). Т.е. относитесь к значению свойства size скептически, но знайте, что оно может сыграть для Вас ключевую роль.
@ media — правило, позволяющее создавать CSS классы для определенного типа устройств, в нашем случае это «print». Внутри этого правила мы создали класс, после которого наш генератор PDF документа создаст новую страницу.
Сервлет:
Теперь напишем сервлет, который будет возвращать нам сгенерированный PDF документ:
PdfServlet.java
package ru.habrahabr.web_to_pdf.servlets; import org.htmlcleaner.CleanerProperties; import org.htmlcleaner.HtmlCleaner; import org.htmlcleaner.PrettyXmlSerializer; import org.htmlcleaner.TagNode; import org.xhtmlrenderer.pdf.ITextRenderer; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.*; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLConnection; /** * Date: 31.03.2014 * Time: 9:33 * * @author Ruslan Molchanov (ruslanys@gmail.com) */ public class PdfServlet extends HttpServlet < private static final String PAGE_TO_PARSE = "http://localhost:8080/page.jsp"; private static final String CHARSET = "UTF-8"; @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException < try < resp.setContentType("application/pdf"); byte[] pdfDoc = performPdfDocument(PAGE_TO_PARSE); resp.setContentLength(pdfDoc.length); resp.getOutputStream().write(pdfDoc); >catch (Exception ex) < resp.setContentType("text/html"); PrintWriter out = resp.getWriter(); out.write("Something wrong
"); ex.printStackTrace(out); ex.printStackTrace(); > > /** * Метод, подготавливащий PDF документ. * @param path путь до страницы * @return PDF документ * @throws Exception */ private byte[] performPdfDocument(String path) throws Exception < // Получаем HTML код страницы String html = getHtml(path); // Буффер, в котором будет лежать отформатированный HTML код ByteArrayOutputStream out = new ByteArrayOutputStream(); // Форматирование HTML кода /* эта процедура не обязательна, но я настоятельно рекомендую использовать этот блок */ HtmlCleaner cleaner = new HtmlCleaner(); CleanerProperties props = cleaner.getProperties(); props.setCharset(CHARSET); TagNode node = cleaner.clean(html); new PrettyXmlSerializer(props).writeToStream(node, out); // Создаем PDF из подготовленного HTML кода ITextRenderer renderer = new ITextRenderer(); renderer.setDocumentFromString(new String(out.toByteArray(), CHARSET)); renderer.layout(); /* заметьте, на этом этапе Вы можете записать PDF документ, скажем, в файл * но раз мы пишем сервлет, который будет возвращать PDF документ, * нам нужен массив байт, который мы отдадим пользователю */ ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); renderer.createPDF(outputStream); // Завершаем работу renderer.finishPDF(); out.flush(); out.close(); byte[] result = outputStream.toByteArray(); outputStream.close(); return result; >private String getHtml(String path) throws IOException < URLConnection urlConnection = new URL(path).openConnection(); ((HttpURLConnection) urlConnection).setInstanceFollowRedirects(true); HttpURLConnection.setFollowRedirects(true); boolean redirect = false; // normally, 3xx is redirect int status = ((HttpURLConnection) urlConnection).getResponseCode(); if (HttpURLConnection.HTTP_OK != status && (HttpURLConnection.HTTP_MOVED_TEMP == status || HttpURLConnection.HTTP_MOVED_PERM == status || HttpURLConnection.HTTP_SEE_OTHER == status)) < redirect = true; >if (redirect) < // get redirect url from "location" header field String newUrl = urlConnection.getHeaderField("Location"); // open the new connnection again urlConnection = new URL(newUrl).openConnection(); >urlConnection.setConnectTimeout(30000); urlConnection.setReadTimeout(30000); BufferedReader in = new BufferedReader(new InputStreamReader(urlConnection.getInputStream(), CHARSET)); StringBuilder sb = new StringBuilder(); String line; while (null != (line = in.readLine())) < sb.append(line).append("\n"); >return sb.toString().trim(); > @Override public String getServletInfo() < return "The servlet that generate and returns pdf file"; >>
Кстати, совсем не обязательно писать для этих целей сервлет, Вы можете перенести логику этого сервлета хоть в консольное приложение, которое будет сохранять PDF документы в файлы. Как Вы могли заметить, в сервлете не нужно ничего настраивать, менять, дополнять, и т.д. (ну за исключением пути до страницы и, возможно, кодировки), соответственно вся работа по подготовке PDF документа очень проста и происходит исключительно во вьюшке.
В конечном итоге у Вас должен получиться примерно такой PDF документ: github.com/ruslanys/example-web-to-pdf/blob/master/web-to-pdf-example.pdf
Я немного дополнил свой документ информацией (распарсил главную страницу Хабра) и у меня получился такой вот документ: github.com/ruslanys/sample-html-to-pdf/blob/master/web-to-pdf-habra.pdf
P.S. В принципе, на основе этого примера можно написать целый сервис, который будет по любому адресу страницы создавать PDF документ. Единственное, что будет необходимо сделать — это привести HTML код страницы в соответствие с нашими правилами, т.е. в первую очередь нужно будет переписать все относительные пути на абсолютные (благо это делается не сложно), и в соответствии с какой-то логикой задать размеры документа.
Как вв webtopdf com редактировать страницы
Поскольку исходный PDF-файл является отсканированным или созданным из изображений, в нем нет настоящего текста. В настоящее время наши онлайн-сервисы преобразования PDF не поддерживают распознавание текста OCR.
Загрузить Конвертер Right PDF для распознавания текста в отсканированном PDF.
Сложные формулы, редко используемые языки, специальные символы и т.д. могут вызвать ошибки распознавания во время конвертации, и таких ситуаций трудно избежать。
Мы не будем хранить или использовать загруженные вами файлы. Чтобы у пользователей было достаточно времени для загрузки результатов, файлы будут храниться в течение 2 часов после конвертации. Тогда как исходные, так и результирующие файлы будут полностью удалены с нашего сервера.
У нас также есть настольная версия для Right PDF Pro и Right PDF Converter. Right PDF Pro предоставляет расширенные функции, такие как редактирование, преобразование, шифрование, подписание, обработка текста, распознавание символов и т. д., которые могут значительно расширить ваши возможности обработки PDF. Скачать сейчас! Right PDF Pro
Right PDF Converter может пакетно конвертировать файлы различных форматов в PDF или преобразовывать PDF в Word, Excel, текст, изображение и т. д. Кроме того, благодаря функциям OCR (оптическое распознавание символов) вы можете легко редактировать отсканированные файлы. Загрузить Конвертер Right PDF Начать 14-дневную бесплатную пробную версию прямо сейчас
Поскольку большой файл требует более высокой скорости сетевого подключения, кроме того, загрузка и преобразование будут более сложными. В настоящее время мы не поддерживаем преобразование файла больше .
Вы можете скачать Right PDF Pro или Конвертер Right PDF и попробовать бесплатно в течение 14 дней. Во время пробного периода размер файла не ограничен, и доступны дополнительные функции редактирования и преобразования.
Бесплатная онлайн-конвертация PDF с помощью Right PDF
О Right PDF
Right PDF — это торговая марка программного обеспечения PDF, принадлежащая корпорации ZEON, пионеру технологии PDF в Азиатско-Тихоокеанском регионе. Благодаря более чем 20-летнему опыту наши продукты прошли 14 поколений и имеют более 1 000 000 загрузок из 108 стран.

Подписывайтесь на нас:
5 лучших приложений-конвертеров Android Web в PDF
Ищете способ конвертировать web в PDF на телефоне или планшете на Android? Вот 5 лучших бесплатных конвертеров Web в PDF для Android.
Статьи по теме
- 1. Как искать слов и текста в PDF-файлах на iPhone? 4 способа
- 2. Топ-6 лучших бесплатных приложений для принтеров для Android
- 3. 6 бесплатных приложения для преобразования изображений в PDF для Android и iOS
- 4. Топ 6 бесплатных приложений для конвертации фото в PDF
- 5. Лучшие приложения для преобразования PDF в Word для iPhone 13 и iPad
- 6. Бесплатное приложение для сканирования PDF для iOS и Android
Wondershare
PDFelement
PDF приложение для самой удобной работы.
Скачать Бесплатно
Скачать Бесплатно

Василий Лебедев
2023-03-23 15:53:00 • Отправлено: Приложение для работы с PDF-файлами • Проверенные решения
Находясь в сети, Вы можете сохранить копию html-страницы в качестве закладки. Но у такого способа как добавление веб-страницы в закладки есть несколько недостатков. Один из них заключается в том, что Вы сможете получить доступ к странице только при наличии подключения к интернету. Но что если Вы хотите получить доступ в автономном режиме? В этой статье мы расскажем о 5 лучших конвертерах Web в PDF на Android. Если же Вы хотите найти бесплатный Web в PDF конвертер для iOS, нажмите здесь.
5 лучших конвертеров Web в PDF на Android
1. Web to PDF
Web to PDF — это приложение, которое может создавать PDF файлы с любой веб-страницы. В приложении есть две основные вкладки — вкладка «Создать» и «Обзор». Нажав на вкладку «Создать», Вы можете ввести URL-адрес сайта, который Вы хотите сохранить. В верхнем правом углу Вы найдете вкладку «Создать», которая позволит Вам создать PDF файл. На вкладке «Обзор» Вы сможете просматривать PDF файлы сохраненных веб-страниц. Долгое нажатие на один из PDF файлов даст Вам возможность открыть, отправить, переименовать или удалить его.

Как следует из названия, это приложение конвертирует веб-страницы в файлы PDF с помощью простого интерфейса. Одним из преимуществ использования этого конвертера PDF является встроенный веб-браузер. Кроме того, создаваемые PDF файлы хорошо отформатированы, и ими можно легко поделиться по электронной почте, Dropbox, Google Drive и т.д.
Однако недостатком приложения являются рекламные объявления, которые появляются на экране. Хотя количество рекламных объявлений минимально, они все же могут отвлекать от работы. В приложении также отсутствует возможность установки параметров файла.
2. Convert web to PDF
Приложение Convert web to PDF предназначено для тех, кто хочет преобразовать любой веб-сайт в PDF для чтения в автономном режиме. Открыв приложение, Вы увидите текстовое поле, в которое Вы можете вставить URL-адрес, который хотите преобразовать в PDF. Нажатие кнопки «Конвертировать» сгенерирует Ваши файлы PDF.

В верхнем правом углу Вы найдете значки «Загрузки» и «Настройки» соответственно. На экране «Загрузки» хранятся все файлы PDF. Длительное нажатие на конкретный элемент позволяет поделиться, удалить или открыть файл. Некоторые из доступных вариантов обмена: электронная почта, Dropbox, Google Диск и Bluetooth.
Значок «Настройки» позволяет выбрать такие параметры, как «Вставить оглавление», «Скрыть фоновый PDF файл при экспорте», «Экспорт PDF файла в оттенках серого», «Экспорт PDF файла в высоком качестве», «Не экспортировать изображение в PDF» и «Экспортировать только текст в PDF».
Преимущество использования этого приложения — возможности настройки. Эта функция позволяет Вам устанавливать различные параметры того, как Вы хотите, чтобы выглядели Ваши PDF файлы. Кроме того, приложение позволяет пользователям просматривать PDF файлы в самом приложении.
Может немного отвлекать реклама внутри приложения. Кроме того, нет встроенного веб-браузера, поэтому Вам нужно скопировать URL-адрес из другого браузера и вставить его в приложение. Одна из проблем заключается в том, что при вставке очень длинного URL-адреса в текстовое поле ссылка обрезается.
3. Website to PDF
Website to PDF дает Вам возможность устанавливать параметры файла для каждого PDF. Если же Вам нужны дополнительные функции, такие как выбор размера и ориентации, это приложение также отлично подходит для этих целей. Как и некоторые другие приложения, оно также имеет несколько раздражающую рекламу, в том числе баннер в верхней части главного экрана, большую кнопку внизу, рекламу для покупки полной версии внизу экрана и полноэкранную рекламу, которая всплывает когда Вы открываете сохраненный PDF. Кроме того, есть спонсируемый логотип, который появляется внизу каждой страницы PDF. Чтобы убрать рекламу, Вам нужно купить приложение и перейти на полную версию.

4. Web to PDF saver
Как следует из названия, программа Web to PDF Saver сохраняет веб-страницы в формате PDF для чтения в автономном режиме с Вашего устройства Android. Это приложение позволяет вставить URL-адрес, чтобы сохранить его в формате PDF. Оно также позволяет Вам выбрать целевой каталог для PDF. При нажатии кнопки «Сохранить», веб-страница преобразуется в формат PDF.

Если Вам нужна возможность устанавливать параметры файла, Вы можете выбрать другое приложение. Кроме того, в приложении нет встроенного средства просмотра PDF файлов, поэтому пользователю нужно выйти из приложения, чтобы просмотреть сгенерированный PDF файл. Плюс, внизу экрана можно увидеть рекламные баннеры. Также Вам потребуется немного больше времени для преобразования веб-страницы в PDF с помощью этого приложения. Оно не такое быстрое, как другие приложения, упомянутые в этом списке.
5. URLToPDF
URLToPDF — это многофункциональное приложение. Вы просто вставляете URL-адрес и нажимаете кнопку «Преобразовать», чтобы создать PDF файл. Существует широкий выбор конфигураций. Сюда входит возможность определения параметров PDF, таких как фон, содержание, оттенки серого, качество, изображения, ориентация и печать на носителе. Вы также можете определить элементы в заголовке, такие как номера страниц, дату, URL-адрес и т.д., и Вы также можете выбрать User-Agent для преобразования. User-Agent включает iPhone, iPad, Android, Chrome или Internet Explorer. Кроме того, файлы PDF можно получить и по электронной почте.

В приложении есть встроенный файловый браузер, в котором Вы можете просматривать сохраненные PDF файлы. Это очень полезно для пользователей, которым нужен бесплатный конвертер веб-страниц в PDF с множеством функций. Он не только преобразует веб-страницу в PDF, но также позволяет пользователю создать ссылку, по которой PDF файл можно загрузить онлайн и легко им поделиться.
Хотя приложение имеет множество функций, в нем также есть и несколько проблем. Во-первых, это реклама. Во-вторых, некоторые функции, например «Чистая страница», все еще находятся на экспериментальной стадии, поэтому не всегда работают надежно. Наконец, у ссылок для скачивания PDF может истечь срок действия, все зависит от свободного места на сервере разработчиков.
6 лучших онлайн-конвертеров веб-страниц в PDF
В этой статье мы рассмотрим 6 наиболее эффективных онлайн-конвертеров web в PDF онлайн, а также лучший конвертер web в PDF на ПК.
Статьи по теме
Wondershare
PDFelement
PDF приложение для самой удобной работы.
Скачать Бесплатно
Скачать Бесплатно

Василий Лебедев
2023-04-13 17:06:36 • Отправлено: Онлайн инструменты PDF • Проверенные решения
PDF-файлы предлагают наиболее удобных способ представления любого типа документов. Word, PowerPoint, Excel, PNG, Jpeg и другие файлы иногда лучше представлены в PDF. Html-файлы, которые составляют большую часть веб-страниц, также прекрасно просматриваются и отправляются в PDF. Веб-страницы, сохраненные в PDF, проще для чтения и отправки по электронной почте, а также могут быть легко сохранены для будущего использования. В этой статье мы рассмотрим 6 наиболее подходящих онлайн-конвертеров веб-страницы в PDF в интернете.
- # 1: Hipdf
- # 2: Webpage to PDF
- # 3: PDFonFly
- # 4: PDFCrowd
- # 5: Web2PDFConverter
- # 6: Free PDF Maker
Топ-6 онлайн-конвертеров веб-страниц в PDF
1. Hipdf
Если вы хотите конвертировать веб-страницу в PDF онлайн, первый в списке — HiPDF из-за его простоты. Этот веб-инструмент обладает отличными функциями, которые не только обеспечивают конвертацию вне зависимости от формата, но и делают это с результатом высшего уровня. Когда вы откроете веб-страницу, она покажется вам очень простой и понятной. Вам нужно просто кликнуть на любом типе преобразования, которое вы хотите совершить, и импортировать файл в веб-страницу, выбранная вами конвертация произойдет автоматически. После преобразования вы можете сохранить сконвертированный файл в любом месте на вашем компьютере. Это безопасно и доступно для всех платформ.

2. Webpage to PDF
Этот сайт — один из самых популярных вариантов для преобразования веб-страницы в PDF онлайн бесплатно. WebpagetoPDF.com предлагает простой веб-интерфейс на его странице, который позволит вам вставить ссылку на веб-страницу и преобразовать ее в PDF нажатием на кнопку. В нем также есть дополнительные опции, которые позволят вам выбрать специальные настройки для вашего нового файла в PDF. Вы можете выбрать PDF-файл в оттенках серого, альбомной ориентации, низкого качества, без фона или с удаленным JavaScript.

3. PDFonFly
PDFonFly.com — это еще один простой в использовании веб-сайт, которые преобразовывает веб-страницы большинства сайтов в PDF с помощью простой веб-системы. Эта функция предлагается в качестве части большого комплекса услуг, которые включают создание PDF, добавление закладок и преобразование Html в PDF. PDF-файлы, которые генерируются из ссылок URL, обычно доступны для скачивания через несколько секунд или минут, в зависимости от размера веб-страницы.

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

5. Web2PDFConverter
Web2PDFConverter — это онлайн конвертер PDF, которые работает как расширение Google Chrome. Это расширение — полезный инструмент для тех пользователей, которым постоянно нужно конвертировать веб-страницы для сохранения и будущего использования. Расширение позволяет пользователям преобразовывать веб-страницы любого сайта за исключением тех, которые требуют авторизации. Сконвертированные файлы могут быть сохранены в Google Docs, или их можно скачать на ваш компьютер.

6. Free PDF Maker
Это тоже расширение для Google Chrome, которое позволяет создавать PDF-файлы из действующих сайтов. PDF-файлы также могут создаваться из файлов Html, сохраненных на вашем компьютере. Free PDF Maker — это одно из нескольких онлайн-приложений, которое действительно бесплатное и не требует регистрации.

Ограничения онлайн-конвертеров веб-страницы в PDF
Несмотря на доступность и свободное использование, которое предлагается большинством онлайн-конвертеров в PDF, всегда остается проблема с надежностью у таких приложений, связанная с хранением на удаленных серверах. Функциональность и возможности таких приложений зависят исключительно от факторов, которые вы не можете контролировать, например от сбоев в работе сервера и проблемах с хостом веб-сайта. Десктопные приложения, с другой стороны, всегда доступны и могут управляться с файлами большего размера по сравнению с онлайн-приложениями.
Лучший конвертер веб-страницы в PDF для Windows/Mac
Wondershare PDFelement — Редактор PDF-файлов это PDF-инструмент от Wondershare, который стал одной из лучших альтернатив популярным именам, типа Adobe Acrobat. PDFelement — это мультифункциональный PDF-иснтрумент, который используются как людьми, так и бизнесом для редактирования, создания и преобразования файлов PDF. Пользователи используют PDFelement, чтобы изменять текст, картинки и другие объекты во множестве типов PDF-документов, включая отсканированные файлы PDF и изображения, благодаря революционному подмодулю оптического распознавания символов (OCR).
PDFelement также используется для создания PDF-файлов из другого типа файлов, в том числе Word, Excel, изображений и более полудюжины других типов файлов. Пользователи могут вставлять или извлекать страницы PDF, картинок или целые документы PDF в файлы PDF и из файлов PDF, что позволяет PDFelement достичь одного из высочайших уровней универсальности, когда речь идет о файлах PDF. Более того, пользователи могут добавлять нумерацию Бейтса, верхние и нижние колонтитулы, вотермарки, пароли и разрешения, закладки, гиперссылки, комментарии, цифровые подписи или изменять контент, чтобы скрыть конфиденциальную информацию.