powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как преобразовать html с заданной шириной в bmp?
25 сообщений из 49, страница 1 из 2
Как преобразовать html с заданной шириной в bmp?
    #40128966
Наталья87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На входе у нас есть произвольный html (имеющий довольно сложную структуру, что затрудняет его парсинг) и ширина страницы в сантиметрах для отображения данного html.

На выходе должна быть картинка в виде bmp (потом уже при необходимости преобразуем в более удобный формат png/jpg - но это за рамками данной темы).

Как можно преобразовать html с известной шири ной страницы в bmp (желательно с возможностью управления dpi)?

В наличии: среда разработки Delphi XE8. В идеале преобразование должно быть целиком с помощью Delphi. Как вариант, если это невозможно - можно рассмотреть сторонние бесплатные утилиты (желательно не GPL).
...
Рейтинг: 0 / 0
Как преобразовать html с заданной шириной в bmp?
    #40128972
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вывести html в странице браузера на весь экран и сделать его снимок
...
Рейтинг: 0 / 0
Как преобразовать html с заданной шириной в bmp?
    #40128976
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наталья87> ширина страницы в сантиметрах для
Наталья87> отображения данного html.

Смотря что Вам надо зумить - html-ку или картинку.
Проще всего отобразить html любым браузером,
предварительно задав ему нужную ширину - в пикселях,
конечно же, а не в сантиметрах - и сделать скриншот.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как преобразовать html с заданной шириной в bmp?
    #40128990
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наталья87,

посмотрите, может вым подойдёт https://github.com/BerndGabriel/HtmlViewer ?
И далее редерьте на Canvas битмапа.

Возможности компонента до инсталляции можно проверить скомпилированной демкой, она там прилагается
...
Рейтинг: 0 / 0
Как преобразовать html с заданной шириной в bmp?
    #40128991
Наталья87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гаджимурадов Рустам
Наталья87> ширина страницы в сантиметрах для
Наталья87> отображения данного html.

Смотря что Вам надо зумить - html-ку или картинку.
Проще всего отобразить html любым браузером,
предварительно задав ему нужную ширину - в пикселях,
конечно же, а не в сантиметрах - и сделать скриншот.


Это некрасивый и ненадёжный способ. Т. к. будут отображаться ненужные пользователю окна на экране. И в скриншот может попасть лишнее или скриншот может быть сделан в неправильный момент времени (с опозданием или раньше времени).

В общем, нужен нормальный надёжный способ и без мерцающих окон.
...
Рейтинг: 0 / 0
Как преобразовать html с заданной шириной в bmp?
    #40128993
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
без шансов.
тут программист нужен.
...
Рейтинг: 0 / 0
Как преобразовать html с заданной шириной в bmp?
    #40128994
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Наталья87
Это некрасивый и ненадёжный способ. Т. к. будут отображаться ненужные пользователю окна на экране. И в скриншот может попасть лишнее или скриншот может быть сделан в неправильный момент времени (с опозданием или раньше времени).

В общем, нужен нормальный надёжный способ и без мерцающих окон.

О, оказывается, я соскучился по этим метким и хлестким эпитетам :) "Ненужный мусор" в отношении секции uses навеки в моем сердце, но там еще много пустующих слотов для новых шедевров. Жгите!

По теме: отобразить чем-либо с контролем "лишнего" и "неправильного", конечно же. HtmlViewer уже упомянули, следующий после компонента браузера идет Phantom (жаль, не обновляется давно) или любой другой браузер, подключенный через WebDriver
...
Рейтинг: 0 / 0
Как преобразовать html с заданной шириной в bmp?
    #40129004
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамПроще всего отобразить html любым браузером, предварительно задав ему нужную
ширину - в пикселях,

Ещё через пару страниц выяснится, что это нужно для печати и у принтера 1200
dpi, а браузер не хочет раскрываться на такую ширину.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как преобразовать html с заданной шириной в bmp?
    #40129007
Наталья87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov

Гаджимурадов РустамПроще всего отобразить html любым браузером, предварительно задав ему нужную
ширину - в пикселях,

Ещё через пару страниц выяснится, что это нужно для печати и у принтера 1200
dpi, а браузер не хочет раскрываться на такую ширину.


да, всё верно.
это нужно для последующей печати на принтере (bmp на принтер печатать умею встроенными средствами Delphi)
не могу понять - как распечатать произвольный html-текст на принтер с заданным именем автоматически (а не просто открыть html браузеру и предложить пользователю распечатать html)
...
Рейтинг: 0 / 0
Как преобразовать html с заданной шириной в bmp?
    #40129014
Наталья87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

При попытке отобразить html компонентом TWebBrowser обнаружился неприятный сюрприз - а именно он не хочет отображать картинку в формате base64Encode
...
Рейтинг: 0 / 0
Как преобразовать html с заданной шириной в bmp?
    #40129015
shalamyansky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наталья87,

Программа (приложение, компонент), превращающая код html в картинку, называется html viewer, он же браузер. Вам, ясен пень, удобнее использовать браузер, реализованный в виде компонента Delphi, или хотя бы в виде OLE-объекта, некоторые вам подсказали выше. Написать браузер - это довольно емкая работа, но все уже сделали за вас. Вам осталось только стартовать готовый, выставить нужные свойства (длину, ширину, тулбары и пр.), загрузить html, и попросить браузер отдать вам картинку.
...
Рейтинг: 0 / 0
Как преобразовать html с заданной шириной в bmp?
    #40129016
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shalamyansky
и попросить браузер отдать вам картинку.
и попросить браузер напечатать документ
...
Рейтинг: 0 / 0
Как преобразовать html с заданной шириной в bmp?
    #40129017
shalamyansky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наталья87

он не хочет отображать картинку в формате base64Encode

Наталья, вы, похоже, еще не проснулись. В таком случае рекомендована пара чашек крепкого кофе.
...
Рейтинг: 0 / 0
Как преобразовать html с заданной шириной в bmp?
    #40129019
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_и попросить браузер напечатать документ

Возможно, это удастся сделать через ShellExeuteEx('print', ...);
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как преобразовать html с заданной шириной в bmp?
    #40129020
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наталья87
не могу понять - как распечатать произвольный html-текст на принтер с заданным именем автоматически (а не просто открыть html браузеру и предложить пользователю распечатать html)
Смотрите, веб-страница - это html + CSS + javascript. Браузер получает это всё, парсит html с учётом CSS, вносит изменения, определенные javascript'ом и после этого делает рендеринг - по неким правилам рисует страницу. Причем, несмотря на стандарты, бывало и в недавнее время, что в разных браузерах у страниц есть отличия, пусть и в деталях. Впридачу, javascript может потом ещё что-то запросить с сервера, получить и отобразить на странице. Браузер это всё делает. Если не хотите использовать браузер, то надо самой это сделать.

Может у Свириденкова в библиотеке что-то есть: https://www.delphihtmlcomponents.com/
...
Рейтинг: 0 / 0
Как преобразовать html с заданной шириной в bmp?
    #40129021
shalamyansky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
попросить браузер напечатать документ

Можно и так, но тогда придется управлять и принтером (виртуальным, да?). Ей ведь нужен не размер А4 с разбивкой по страницам, а некие произвольные ширина и высота картинки. В каких единицах, кстати, линейных, пикселах?
...
Рейтинг: 0 / 0
Как преобразовать html с заданной шириной в bmp?
    #40129022
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shalamyansky
Ей ведь нужен не размер А4 с разбивкой по страницам
Именно это ей и нужно
Наталья87
это нужно для последующей печати на принтере
...
Рейтинг: 0 / 0
Как преобразовать html с заданной шириной в bmp?
    #40129023
Наталья87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov

_Vasilisk_и попросить браузер напечатать документ

Возможно, это удастся сделать через ShellExeuteEx('print', ...);


Но здесь есть один нюанс - нужно перед печатью менять default printer на нужный
А после печати менять обратно
Как бы не есть хорошо менять настройки windows ради прикладной программы
...
Рейтинг: 0 / 0
Как преобразовать html с заданной шириной в bmp?
    #40129024
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
shalamyansky
Наталья87

он не хочет отображать картинку в формате base64Encode

Наталья, вы, похоже, еще не проснулись. В таком случае рекомендована пара чашек крепкого кофе.

На самом деле такое есть. Позволяет хранить бинарники внутри html
...
Рейтинг: 0 / 0
Как преобразовать html с заданной шириной в bmp?
    #40129025
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
повторю свой пост, он кажется затерялся среди ответов

THtmlViewer

Кроик Семён
Наталья87,

посмотрите, может вым подойдёт https://github.com/BerndGabriel/HtmlViewer ?
И далее редерьте на Canvas битмапа.

Возможности компонента до инсталляции можно проверить скомпилированной демкой, она там прилагается
...
Рейтинг: 0 / 0
Как преобразовать html с заданной шириной в bmp?
    #40129030
asviridenkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Единственный рабочий вариант, написанный полностью на Дельфи и не зависящий ни от чего это https://delphihtmlcomponents.com
С поддержкой CSS, сложной структуры, с разбитием на страницы или без, не привязанный к выводу на экран и окнам, с поддержкой base64 изображений и.т.д.
Делается в 5-10 строчек, при покупке библиотеки вышлю готовый пример.
...
Рейтинг: 0 / 0
Как преобразовать html с заданной шириной в bmp?
    #40129031
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наталья87Но здесь есть один нюанс - нужно перед печатью менять default printer на нужный

Ещё через две страницы выяснится, что в HTML сформирован блок этикеток для
печати на принтере этикеток...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как преобразовать html с заданной шириной в bmp?
    #40129033
shalamyansky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
Именно это ей и нужно
Наталья87
это нужно для последующей печати на принтере

Вау, слона-то я и не приметил.

Я когда-то писал превью печати, и как раз для браузера-компонента. Заставлял браузер делать свой вывод на канву, и сохранял это хозяйство как EMF (Enhanced Metafile). Довольно мило получалось, и масштабировать можно, и в файл emf сохранить, и распечатать, естественно. Но с тех пор 20 лет минуло, думаю уж, что поудобнее появилось. Наталья, берите на заметку. А bmp для вашей задачи ну совсем дубовый формат.
...
Рейтинг: 0 / 0
Как преобразовать html с заданной шириной в bmp?
    #40129044
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Наталья87
Dimitry Sibiryakov

пропущено...

Возможно, это удастся сделать через ShellExeuteEx('print', ...);


Но здесь есть один нюанс - нужно перед печатью менять default printer на нужный
А после печати менять обратно


вместо 'print' надо использовать 'printto' с указанием, на какой принтер печатать
...
Рейтинг: 0 / 0
Как преобразовать html с заданной шириной в bmp?
    #40129045
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asviridenkov
Единственный рабочий вариант, написанный полностью на Дельфи и не зависящий ни от чего это https://delphihtmlcomponents.com
С поддержкой CSS, сложной структуры, с разбитием на страницы или без, не привязанный к выводу на экран и окнам, с поддержкой base64 изображений и.т.д.
Делается в 5-10 строчек, при покупке библиотеки вышлю готовый пример.

Ну наконец-то. Мы все этого очень долго ждали
...
Рейтинг: 0 / 0
25 сообщений из 49, страница 1 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как преобразовать html с заданной шириной в bmp?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]