Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/29: Рейтинг темы: голосов - 29, средняя оценка - 4.79
11 / 10 / 2
Регистрация: 19.02.2018
Сообщений: 393

Сохранить web-страницу в формате pdf

17.03.2020, 12:39. Показов 6007. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте всем.

Постараюсь объяснить задумку. У веб-страницы есть адрес. Как нам сохранить эту веб-страницу формате pdf ?
подскажите пожалуйста. вот мои попытки


Python
1
2
3
4
5
6
7
8
9
10
11
12
from wkhtmltopdf import wkhtmltopdf
 
pdfkit.from_url('http://micropyramid.com', 'micro.pdf')
 
ошибка
 
Traceback (most recent call last):
  File "F:/Program Files/python/примеры/урок 2.py", line 17, in <module>
    from wkhtmltopdf import wkhtmltopdf
  File "C:\Users\egor\AppData\Local\Programs\Python\Python38-32\lib\site-packages\wkhtmltopdf\__init__.py", line 1, in <module>
    from main import WKhtmlToPdf, wkhtmltopdf
ModuleNotFoundError: No module named 'main'

Python
1
2
3
4
5
6
7
wkhtmltopdf(url='example.com', output_file='~/example.pdf')
Traceback (most recent call last):
  File "F:/Program Files/python/примеры/урок 2.py", line 17, in <module>
    from wkhtmltopdf import wkhtmltopdf
  File "C:\Users\egor\AppData\Local\Programs\Python\Python38-32\lib\site-packages\wkhtmltopdf\__init__.py", line 1, in <module>
    from main import WKhtmlToPdf, wkhtmltopdf
ModuleNotFoundError: No module named 'main'
Python
1
2
3
4
5
6
7
8
9
10
11
import weasyprint
HTML('http://weasyprint.org/').write_pdf('/tmp/weasyprint-website.pdf')
 
так ошибка
 
Traceback (most recent call last):
  File "F:/Program Files/python/примеры/урок 2.py", line 17, in <module>
    from wkhtmltopdf import wkhtmltopdf
  File "C:\Users\egor\AppData\Local\Programs\Python\Python38-32\lib\site-packages\wkhtmltopdf\__init__.py", line 1, in <module>
    from main import WKhtmlToPdf, wkhtmltopdf
ModuleNotFoundError: No module named 'main'
Конечно, хотелось бы простой способ через библиотеку requests
Python
1
requests.get('http://weasyprint.org/')
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.03.2020, 12:39
Ответы с готовыми решениями:

Сохранить web-страницу в файла pdf
Добрый день Работаю в Lotus Script Это почти тот же VB script Есть задача автоматически сохранять с сайта html-страницу в папку...

Сохранить отчет в формате PDF
Подскажите пжлст: Формируется отчет на N количестве страниц (Приказы). Как каждую страницу (каждый Приказ) сохранить отдельным файлом...

Как сохранить отчет в формате PDF
Доброе время суток. В программу я формирую отчет средствами WPF и мне надо этот отчет сохранять в формате PDF. То что я сформировал можно...

7
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
17.03.2020, 12:59
Похоже, модуль кривой.
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
17.03.2020, 13:27
wkhtmltopdf - Linux 32/64 or OSX only (Windows is not supported at this stage)
Скачайте установочный бинарник отсюда: https://github.com/wkhtmltopdf... /releases/
И запускайте как subprocess c нужными опциями: wkhtmltopdf [GLOBAL OPTION]... [OBJECT]... <output file>

Добавлено через 5 минут
Либо используйте какие-нибудь online-сервисы с web API.

Добавлено через 4 минуты
Что касается weasyprint, то винду он поддерживает, но:
Уважаемый пользователь Windows, пожалуйста, внимательно выполните следующие действия.

Очень осторожно. Не обманывай меня.

Помимо правильной установки Python и нескольких пакетов Python, WeasyPrint нуждается в библиотеках Pango, cairo и GDK-PixBuf. Они необходимы для графического материала: рендеринга текста и изображений. Эти библиотеки не являются пакетами Python. Они являются частью GTK+ (ранее известного как GIMP Toolkit) и должны устанавливаться отдельно.

Следующие инструкции по установке библиотек GTK+ не работают в Windows XP. Это означает, что требуется Windows Vista или более поздняя версия.

Конечно, вы можете решить установить древние версии WeasyPrint с прежним Python, объединить его с устаревшими библиотеками GTK+ на любой версии Windows, которая вам нравится, но если вы решите сделать это самостоятельно, даже не пытайтесь сообщить о проблеме, котята умрут из-за вас.
0
11 / 10 / 2
Регистрация: 19.02.2018
Сообщений: 393
17.03.2020, 15:15  [ТС]
Garry Galler, Спасибо большое за ваш ответ. Вы как всегда мне уделяете ваше драгоценное время, очень вам благодарен.
Нашёл ещё один способ.https://stackoverflow.com/ques... ing-python

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import pdfkit
 
url = 'http://weasyprint.org/'
pdf = pdfkit.from_url(url, "example.pdf")
 
r = requests.get(pdf)
 
with open('example.pdf', 'wb') as f:
  f.write(r.content)
 
ошибка
File "C:\Users\egor\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pdfkit\api.py", line 23, in from_url
    r = PDFKit(url, 'url', options=options, toc=toc, cover=cover,
  File "C:\Users\egor\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pdfkit\pdfkit.py", line 42, in __init__
    self.configuration = (Configuration() if configuration is None
  File "C:\Users\egor\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pdfkit\configuration.py", line 24, in __init__
    raise IOError('No wkhtmltopdf executable found: "%s"\n'
OSError: No wkhtmltopdf executable found: "b''"
If this file exists please check that this process can read it. Otherwise please install wkhtmltopdf - https://github.com/JazzCore/python-pdfkit/wiki/Installing-wkhtmltopdf
 
Process finished with exit code 1
Что вы думают по поводу такого решения. Может есть ещё другие варианты?
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
17.03.2020, 17:16
Цитата Сообщение от Егор Щербанов Посмотреть сообщение
Что вы думают по поводу такого решения.
pdfkit опять же требует наличия бинарника wkhtmltopdf.exe
0
11 / 10 / 2
Регистрация: 19.02.2018
Сообщений: 393
17.03.2020, 21:20  [ТС]
так тоже не выходит

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import json
import urllib3
 
api_endpoint = 'http://selectpdf.com/api2/convert/'
key = 'your license key here'
test_url = 'http://selectpdf.com'
local_file = 'test.pdf'
 
# parameters - add here any needed API parameter
parameters = {
  'key': key,
  'url': test_url
}
requesturl = api_endpoint
# print "Calling {0}\n".format(requesturl)
 
try:
  request = urllib3.request(requesturl)
  request.add_header('Content-Type', 'application/json')
  result = urllib3.urlopen(request, json.dumps(parameters))
  localFile = open(local_file, 'wb')
  localFile.write(result.read())
  localFile.close()
  # print "Test pdf document generated successfully!"
except urllib.request.HTTPError as e:
    if e.code==404:
     print(f"{requesturl} is not found")
    elif e.code==503:
     print(f'{requesturl} base webservices are not available')
    else:
     print('http error',e)
 
ошибка 
Traceback (most recent call last):
  File "F:/Program Files/python/примеры/урок 2.py", line 33, in <module>
    request = urllib3.request(requesturl)
TypeError: 'module' object is not callable
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
17.03.2020, 23:29
Используйте requests, а не то что лежит в их основе - всякие urllib и т.д.
У requests максимально простой интерфейс.

А почему вы отказались от возможности скачать установочный дистрибутив wkhtmltopdf для windows? Его достаточно установить и прописать путь к exe в PATH.
1
11 / 10 / 2
Регистрация: 19.02.2018
Сообщений: 393
18.03.2020, 12:48  [ТС]
Garry Galler, спасибо вам большое за ответ. вот как я решил видео https://www.youtube.com/watch?... e=youtu.be

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
from pynput.keyboard import Key , Controller
 
import keyboard
from selenium.webdriver.common.keys import Keys
chromedriver = r"C:\Program Files (x86)\Google\Chrome\Application\chromedriver"
os.environ["webdriver.chrome.driver"] = chromedriver
driver = webdriver.Chrome(chromedriver)
url ="https://google.com"
driver.get(url)
key = Controller()
time.sleep(6)
key.press(Key.ctrl_l)
key.press('p')
key.release('p')
key.release(Key.ctrl_l)
 
time.sleep(3)
key.press(Key.enter)
key.release(Key.enter)
time.sleep(3)
keyboard.write("google.com1",delay=0)
key.press(Key.enter)
key.release(Key.enter)
print("ok")
time.sleep(3)
 
key.pressed(Key.enter)
веб страница сохраняется в формате pdf, но как ускорить? добавить проверку, что веб страница полностью была загружена?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.03.2020, 12:48
Помогаю со студенческими работами здесь

Как сохранить документ открытый в word в формате PDF
Dim DocWord = New Microsoft.Office.Interop.Word.Application() DocWord.Documents.Open(System.Windows.Forms.Application.StartupPath &amp;...

Сохранить страницу PDF в bmp
Всем доброго времени суток! Вопрос в следующем, мне необходимо из базы открыть файл PDF и сохранить определенную страницу в формате bmp....

Сохранить страницу в формате txt
Всем доброго времени суток, помогите сделать следующее: На странице нужно сделать кнопку, которая будет сохранять содержимое этой страницы...

Как сохранить в pdf эту страницу
Всем доброго дня. Может и не в тот раздел пишу, но мне кажется, что специалист по html больше поможет. По адресу...

Сохранить страницу открытую в WebBrowser в файл pdf
Доброго времени суток. Подскажите, как возможно сохранить страницу открытую в WebBrowser в файл pdf? Или возможно как то сразу...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru