Как сохранить веб-страницу в PDF-документ. Как web-страницу легко превратить в PDF? Интернет страницу в pdf
Всем доброго времени!
Несмотря на то, что в каждом браузере можно быстро создавать закладки на понравившиеся страницы, тем не менее, порой очень необходимо сохранить нужную веб-страничку в PDF (хотя бы потому, что эта страница со временем с сайта может быть удалена или отредактирована) ...
К тому же информацию из PDF-формата можно легко читать на самых разных устройствах (его поддерживают все ридеры без исключения), можно редактировать в Word, передавать другим пользователям. Да и сама страница, со временем не разъедется, не изменится ее форматирование и оформление. В общем, полезная и нужная вещь!
В этой статье рассмотрю несколько способов, как это можно быстро и легко сделать. Собственно, приступим к делу...
С помощью печати в браузере
1) Какой бы не был у вас браузер (Chrome, Opera, Edge, Firefox и др.), нажмите сочетание кнопок Ctrl+P (это сочетание означает распечатку страницы). Также эта функция доступна в меню браузеров.
2) Далее измените принтер по умолчанию на "Сохранить как PDF" или "Microsoft Print to PDF" (в зависимости от вашего браузера и ОС - у вас могут быть доступны разные варианты: как оба, так и всего один из них). См. пару скриншотов ниже.
3) Теперь задайте основные настройки: кол-во сохраняемых страниц, раскладку страницы, поля, цветность, колонтитулы и пр. После нажмите кнопку "Печатать".
Собственно, на этом задача выполнена. Теперь полученный PDF можно открыть в Word, Adobe PDF Reader, и сотнях других программ, поддерживающих данный формат.
С помощью спец. расширений
Для большинства популярных браузеров сейчас есть куча различных дополнений и расширений, позволяющая сохранять понравившиеся странички как в облачные хранилища, так и в PDF файлы на жестком диске.
Выделить я бы хотел одно очень интересное дополнение - PDF MAGE.
PDF Mage
Небольшое дополнение для Firefox, Opera, Chrome, позволяющие в 1 клик мышкой сохранить веб-страницу полностью на жесткий диск!
Отмечу, что после нажатия по значку PDF Mage - текущая страничка просто скачивается в формате PDF к вам в папку загрузки. Удобнее придумать просто нельзя...
Покажу на примере.
После установки расширения в меню у вас будет небольшой значок. Найдя интересную страницу, просто щелкните по нему левой кнопкой мышки.
Буквально через мгновение, браузер сам автоматически начнет загружать файл в формате PDF. Собственно, делается все без лишних телодвижений, быстро и удобно!
С помощью онлайн сервисов
В сети также есть множество интернет-сервисов, позволяющих быстро сохранить любые странички в сети в PDF. Суть работы примерно следующая: вы вставляете в спец. строку URL-адрес странички, которую вам нужно сохранить.
Далее жмете кнопку генерации PDF файла. Через некоторое время получаете ссылку на загрузку своего PDF. Пользоваться, конечно, можно, но на мой скромный взгляд - всё это утомительно и годится для временного использования. Например, у вас есть "проблемы" с браузером или Windows, попалась какая-то "странная" страница, которая не хочет сохраняться предыдущими способами.
И так, самые популярные из сервисов подобного рода:
- - простой и удобный сервис на английском. На сайте есть спец. строка, куда вставляете URL-адрес, а рядом кнопка генерации. На выходе загружаете уже готовый PDF к себе на жесткий диск.
- - еще один зарубежный сервис, работает аналогично.
- - очень популярный сервис, с его помощью уже сохранено более 5 000 000 страниц по всему Миру! Здесь помимо всего прочего, можно загрузить дополнения для браузера (чтобы не посещать каждый раз сайт, когда нужно сохранить страницу).
- - довольно простой и удобный сервис. Минимум лишней информации на сайте.
На этом у меня всё, всем удачи!
- Tutorial
Для меня было очень неожиданно то, что в хабе по Java практически нет информации по работе с PDF документами, поэтому я, из личного опыта, хочу на примере сервлета показать как легко можно любую web-страницу превратить в PDF документ.
Преамбула:
Напишем простой сервлет, который будет брать указанную нами web-страницу по HTTP протоколу и генерировать на её основе полноценный PDF документ.Используемые библиотеки:
- Flying Saucer PDF - основная библиотека, которая поможет создать нам PDF документ из HTML/CSS
- iText - библиотека, которая включена в состав той, что описана выше, но я не мог не включить ее в список библиотек, т.к. именно на основе неё будет генерироваться PDF документ
- HTML Cleaner - библиотека, которая будет приводить наш HTML код в порядок
Описания библиотек для Maven конфигурации (pom.xml)
Формирование страницы:
Одним из самый важных моментов является формирование страницы. Дело в том, что именно из самой страницы, посредством CSS, задаются параметры будущего PDF документа.Рассмотрим макет:
page.jsp
<%@ page import="java.util.Date" %> <%@ page import="java.text.SimpleDateFormat" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%! private SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss"); %>
Здесь хочу остановиться на нескольких моментах. Для начала самое важное: все пути должны быть абсолютными ! Картинки, стили, адреса шрифтов и др., на всё должны быть прописаны абсолютные пути. А теперь пройдемся по 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 ([email protected])
*/
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 документ.
Если вы ежедневно работаете с огромными объемами интернет информации, и посещаете множество сайтов и интернет страниц, тогда вам знакомо то чувство, когда начинаешь незаметно тонуть в информации и хочется просто отключится. Но желательно отключится так, чтобы не потерять ценную информацию. Для этого существует сервис, позволяющий преобразовывать интернет страницы в документы PDF.
Конечно, можно хранить полезные интернет-страницы в закладках и получать к ним доступ, имея подключение к интернету. А можно просто, найдя полезную статью или заметку на каком либо сайте, тут же превратить ее в текстовый документ формата PDF и отправить на хранение в свою электронную библиотеку на жестком диске. И, при необходимости или возможности, независимо от того подключен ваш компьютер к интернету или нет, просмотреть интересную и полезную для вас информацию, открыв сохраненную интернет страницу в файле PDF. Я с этим сервисом столкнулся совершенно случайно и даже не подозревал, что существует возможность преобразовывать интернет страницы в документы PDF. Как только сервис, умеющий это делать попался мне на глаза, он был немедленно испробован и добавлен в закладки.
web2pdfconvert
Называется этот сервис web2pdfconvert , он на английском языке, но проблем с этим возникнуть не должно, учитывая наличие во всех браузерах автоматического переводчика. Сервис web2pdfconvert можно использовать бесплатно, но в этом случае есть некоторые ограничения по использованию возможностей сервиса. Но если вы не собираетесь в промышленных масштабах преобразовывать интернет страницы в PDF файлы, то возможностей предоставляемых web2pdfconvert в бесплатном режиме вам должно хватить.
Изучаем web2pdfconvert
Перейдем к описанию сервиса. Ссылка на web2pdfconvert выглядит вот так web2pdfconvert.com. Попав на главную страницу сервиса, у вас сразу же есть возможность конвертировать нужную вам интернет страницу в документ PDF. Для этого, в имеющееся поле необходимо поместить ссылку на нужную страницу в интернете и кликнуть по кнопке «Преобразовать в PDF».
Перед тем как преобразовывать страницу, вы можете кликнуть по кнопке «параметры» и указать настройки для будущего документа. Настроить параметры будущего документа могут только зарегистрированные пользователи.
Время создания документа зависит от веса преобразовываемой страницы. После того как сервис web2pdfconvert выполнит вашу просьбу и ваш файл PDF будет готов, вы сможете либо скачать его себе на компьютер, либо тут же просмотреть в Google Docs.
Расширение web2pdfconvert
Если сервис web2pdfconvert вам очень понравился и предлагаемые им функции вы хотели бы иметь всегда под рукой, тогда переходим в раздел PDF" , следующий в верхнем меню, после вышеописанного раздела Web PDF. В этом разделе, есть описание возможностей того, как вы можете установить расширение web2pdfconvert в своем браузере и иметь его всегда под рукой.
PDF по E-Mail
Следующим разделом в главном меню сервиса web2pdfconvert, является раздел PDF By E-Mail . Посетив его, вы обнаружите возможность преобразовывать интернет страницы в документы PDF с помощью электронной почты. Чтоб это произошло, вам достаточно ссылку страницы которую нужно преобразовать в PDF, отправить на специальный адрес электронной почты, указав нужную тему письма. После чего, в ответ вы получить необходимый вам PDF файл.
Условия использования web2pdfconvert
Последним разделом сервиса web2pdfconvert, является раздел Membership, или просто условия использования сервиса. Здесь вы сможете узнать какие ограничения имеются у бесплатного режима использования сервиса web2pdfconvert.
С помощью нескольких щелчков мыши, вы можете конвертировать любые веб-страницы в формате PDF в тот же образ, как исходной страницы.
уведомление
Услуга доступна в
уведомление
Для того, чтобы предотвратить чрезмерное для пользования услугой, Allinpdf имеет ограничение, используя по 60 раз в час.
Это условие может быть изменено.
URL
Введите или скопировать и вставить URL веб-страницы, которую вы хотите преобразовать в поле ввода выше
Пример: https://www.amazon.com
* Примечание. Веб-страницы, для которых требуется вход в систему, не могут быть преобразованы.
- Как конвертировать веб-страницу в другой формат файла Allinpdf будет конвертировать веб-страницу в формат файла, который Вы выбираете, как только вы введите URL-адрес в поле ввода выше, и выбрать формат файла, который будет модернизированные к. Вы можете скачать преобразованный файл.
- Высокое качество преобразования Allinpdf преобразует любые веб-страницы в формате, который вы хотите видеть в том же образе, что и исходная страница. Allinpdf обеспечивает высокий сервис качество преобразования файлов на рынке. Никаких других услуг, поддерживающих широкий спектр форматов файлов обеспечивают лучшую производительность, чем Allinpdf!
- Быстрая и простая конвертация Это займет всего несколько кликов. Вы получите результат в течение нескольких секунд в нормальном состоянии сети Интернет.
- Безопасный онлайн преобразования Загруженные файлы и данные автоматически и немедленно удаляются после использования сервиса. Преобразованные файлы были удалены системой автоматически в течение получаса после преобразования. Никто не имеет доступа к файлам, и это не остается никаких следов работы после того, как после удаления. Allinpdf обеспечивает защищенное обслуживание через SSL на основе зашифрованной передачи файлов.
- Поддержка всех операционных систем Allinpdf это веб-приложение подается через веб-браузер. Allinpdf поддерживает все типы браузеров, включая IE, Chrome, Safari, FireFox и Opera. Allinpdf работает для любой используемой вами операционной системы - Windows, Linux или IOS.
-
Сберегать ресурсы вашего ПК
Allinpdf представляет собой веб-сервис, который не использует ресурсы вашего компьютера. Все работы выполняются на нашем сервере.
Не требует установки (например, ActiveX) не требуется.