Для чего нужно сохранять страницы интернет сайтов? Ну, возможно вы хотите прочитать информацию в режиме офлайн или же сделать какие-то наблюдения над сайтом или же вы это хотите сделать с другой целью. Мне лично все равно, для чего вам это нужно, а просто расскажу, как это сделать в разных браузерах. И так, как же сохранить страницу сайта в формате PDF в браузерах Chrome, Opera, Yandex, Firefox?
Пожалуй, начнем с браузера Chrome .
Для начала вам необходимо найти страницу, которая вас интересует. У меня на примере будет автомобильный сайт ax4.ru .
В правом верхнем углу нажимаем что-то на подобии сэндвича. В появившемся меню нажимаем «Печать ».
Далее вы увидите, что по умолчанию стоит название принтера, который у вас установлен или другой, который запрограммирован браузером. Нам нужно его изменить, нажав на соответствующую кнопку «Изменить ».
Когда нажмем «Изменить », появится меню, в котором нужно выбрать пункт «Сохранить как PDF ».
После чего, слева, название принтера поменяется на «сохранить как PDF ». Остаётся лишь нажать кнопку «Сохранить ».
Выбираем место сохранения (у меня это Рабочий стол).
Теперь я открываю файл PDF через Foxit Reader. Вы, как я упоминал ранее, можете использовать другую программу.
Вот и всё, не очень симпатично, но суть понятна. Вы можете делать файл PDF из любой веб-страницы.
Для этого я зайду на новостной сайт nz1.ru и выберу какую-нибудь новость.
Как вы уже поняли, процедура во всех браузерах похожа. Нажимаем на подобия сэндвича в правом верхнем углу, затем «Дополнительно » и «Печать ».
Сохраняем в PDF.
Затем выбираем место сохранения. Например, Рабочий стол.
Открываем файл через любую программу, которая читает формат PDF, пользуемся.
Покажу на примере сайта с прикольными картинками prikolnie-kartinki.ru .
В браузере Mozilla Firefox немножко все происходит по-другому. Нажимаем на сэндвич в правом верхнем углу экрана и выбираем «Печать ».
Интернет - это один из основных современных информационных ресурсов, откуда пользователи черпают информацию. Там размещены все последние новости, зарегистрировано множество ресурсов, которые призваны развлекать, поучать и даже иногда развращать пользователей.
Зачастую, многие люди пытаются сохранить на компьютер себе информацию и впоследствии использовать её в своих целях (чтение, печать, изменение). Формат, в котором информация представлена удобно и с помощью дополнительного ПО доступна к редактированию - PDF. В этом формате веб-страницу в полном объёме либо частично можно сохранить к себе на компьютер. В зависимости от браузера это можно делать либо с помощью плагинов, которые могут быть уже интегрированы в браузер, либо с помощью дополнительных конвертеров.
На сегодняшний день Google Chrome является одним из популярных интернет-браузеров. Положительный момент в использовании этого программного обеспечения заключается в наличии интегрированных плагинов. В нашем случае - это функция сохранять содержимое веб-ресурса сразу в формат PDF .
Чтобы активировать эту опцию, нужно открыть требуемую страницу, нажать либо сочетание клавиш CTRL + P или же следующую последовательность: управление Google Chrome - Печать. В результате откроется диалоговое окно, в котором будет предложено выбрать нужное устройство для печати. Однако, среди предложенных вариантов вместо принтера выбирается опция «Сохранить как PDF» и выбрать нужное место для хранения файла.
Отличие браузера Mozilla Firefox от браузера Google Chrome состоит в том, что Mozilla не имеет в своём распоряжении каких-то «родных» надстроек . Соответственно и нет возможности напрямую сохранить страницу без каких-то дополнительных манипуляций и инсталляций. Благо для этого браузера есть плагин, который можно найти в свободном доступе и установить себе на рабочую станцию. Называется он Printpdf. Он благополучно добавляется в интернет-браузер и после доступен в использовании после перезагрузки Mozilla Firefox.
Чтобы сохранить веб-страницу с помощью этой надстройки, нужно выбрать в браузере меню «Файл»/«File» и далее выбрать пункт «Сохранить как PDF»/ «Print to PDF». Плагин Printpdf можно настроить таким образом, чтобы он сохранял отдельно любой блок сайта. Это производится в меню «Инструмент» - «Дополнения».
Opera также является все ещё популярной программой, пусть и требующей повышенного объёма внутренних ресурсов компьютера (оперативной и видеопамяти). С каждым днём новые расширения появляются практически для каждого браузера. Opera не стала исключением . Надстройка Web to PDF является бесплатным конвертером, который также можно легко добавить в своё приложение и активно использовать. После добавления и перезагрузки на верхней рабочей панели появится кнопка, нажав на которую открытая веб-страница сохранится в нужном формате.
Как же можно обойти стороной «старину» Explorer-а. Для него также в последнее время и плагины, но ничего подобного ещё не предусмотрено для сохранения в формате PDF. Но помочь в вопросе того, как сохранить страницу в pdf, легко поможет универсальных конвертер документов UDP. Это сторонняя утилита, которая воспринимается системой как принтер, но сохраняет веб-ресурсы в нужном формате. Работает она благополучно со всеми браузерами, в том числе и с Internet Explorer. Конечно, существует и масса других конвертеров, которые преобразуют документы в различные форматы, но именно UDP считается более совершенным и наиболее простым в работе. Сама программная составляющая совершенно не требовательна к ресурсам и вызывается операционной системой только во время преобразования.
Подытожив вышеизложенное, можно сказать, что буквально все популярные браузеры без особых проблем поддерживают функцию сохранения содержимого веб-ресурса с помощью различных прикладных программ. Эта функция делает работу браузеров более продуктивной и полезной для пользователя.
Для меня было очень неожиданно то, что в хабе по Java практически нет информации по работе с PDF документами, поэтому я, из личного опыта, хочу на примере сервлета показать как легко можно любую web-страницу превратить в PDF документ.
Описания библиотек для Maven конфигурации (pom.xml)
Рассмотрим макет:
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"); %>
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 документ.
Введите или скопировать и вставить URL веб-страницы, которую вы хотите преобразовать в поле ввода выше
Пример: https://www.amazon.com
* Примечание. Веб-страницы, для которых требуется вход в систему, не могут быть преобразованы.
Не требует установки (например, ActiveX) не требуется.
Если вы ежедневно работаете с огромными объемами интернет информации, и посещаете множество сайтов и интернет страниц, тогда вам знакомо то чувство, когда начинаешь незаметно тонуть в информации и хочется просто отключится. Но желательно отключится так, чтобы не потерять ценную информацию. Для этого существует сервис, позволяющий преобразовывать интернет страницы в документы PDF.
Конечно, можно хранить полезные интернет-страницы в закладках и получать к ним доступ, имея подключение к интернету. А можно просто, найдя полезную статью или заметку на каком либо сайте, тут же превратить ее в текстовый документ формата PDF и отправить на хранение в свою электронную библиотеку на жестком диске. И, при необходимости или возможности, независимо от того подключен ваш компьютер к интернету или нет, просмотреть интересную и полезную для вас информацию, открыв сохраненную интернет страницу в файле PDF. Я с этим сервисом столкнулся совершенно случайно и даже не подозревал, что существует возможность преобразовывать интернет страницы в документы PDF. Как только сервис, умеющий это делать попался мне на глаза, он был немедленно испробован и добавлен в закладки.
Называется этот сервис web2pdfconvert , он на английском языке, но проблем с этим возникнуть не должно, учитывая наличие во всех браузерах автоматического переводчика. Сервис web2pdfconvert можно использовать бесплатно, но в этом случае есть некоторые ограничения по использованию возможностей сервиса. Но если вы не собираетесь в промышленных масштабах преобразовывать интернет страницы в PDF файлы, то возможностей предоставляемых web2pdfconvert в бесплатном режиме вам должно хватить.
Перейдем к описанию сервиса. Ссылка на web2pdfconvert выглядит вот так web2pdfconvert.com. Попав на главную страницу сервиса, у вас сразу же есть возможность конвертировать нужную вам интернет страницу в документ PDF. Для этого, в имеющееся поле необходимо поместить ссылку на нужную страницу в интернете и кликнуть по кнопке «Преобразовать в PDF».
Перед тем как преобразовывать страницу, вы можете кликнуть по кнопке «параметры» и указать настройки для будущего документа. Настроить параметры будущего документа могут только зарегистрированные пользователи.
Время создания документа зависит от веса преобразовываемой страницы. После того как сервис web2pdfconvert выполнит вашу просьбу и ваш файл PDF будет готов, вы сможете либо скачать его себе на компьютер, либо тут же просмотреть в Google Docs.
Если сервис web2pdfconvert вам очень понравился и предлагаемые им функции вы хотели бы иметь всегда под рукой, тогда переходим в раздел PDF" , следующий в верхнем меню, после вышеописанного раздела Web PDF. В этом разделе, есть описание возможностей того, как вы можете установить расширение web2pdfconvert в своем браузере и иметь его всегда под рукой.
Следующим разделом в главном меню сервиса web2pdfconvert, является раздел PDF By E-Mail . Посетив его, вы обнаружите возможность преобразовывать интернет страницы в документы PDF с помощью электронной почты. Чтоб это произошло, вам достаточно ссылку страницы которую нужно преобразовать в PDF, отправить на специальный адрес электронной почты, указав нужную тему письма. После чего, в ответ вы получить необходимый вам PDF файл.
Последним разделом сервиса web2pdfconvert, является раздел Membership, или просто условия использования сервиса. Здесь вы сможете узнать какие ограничения имеются у бесплатного режима использования сервиса web2pdfconvert.