powered by simpleCommunicator - 2.0.19     © 2024 Programmizd 02
Map
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как преобразовать html с заданной шириной в bmp?
24 сообщений из 49, страница 2 из 2
Как преобразовать html с заданной шириной в bmp?
    #40129047
shalamyansky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutal

base64Encode

На самом деле такое есть. Позволяет хранить бинарники внутри html

Ну это ж не формат картинки, а всего лишь способ кодирования внутренних объектов. А!.. понял, спасибо. Там такие хитрые html с внутренними картинками, что TWebBrowser их не понимает. Ну что тут делать, либо html менять, либо браузер.
...
Рейтинг: 0 / 0
Как преобразовать html с заданной шириной в bmp?
    #40129048
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
asviridenkov
Единственный рабочий вариант, написанный полностью на Дельфи и не зависящий ни от чего это https://delphihtmlcomponents.com
С поддержкой CSS, сложной структуры, с разбитием на страницы или без, не привязанный к выводу на экран и окнам, с поддержкой base64 изображений и.т.д.
Делается в 5-10 строчек, при покупке библиотеки вышлю готовый пример.


там ещё javascript поддерживается.
ага, но нет
...
Рейтинг: 0 / 0
Как преобразовать html с заданной шириной в bmp?
    #40129050
Наталья87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
shalamyansky
Fr0sT-Brutal

base64Encode

На самом деле такое есть. Позволяет хранить бинарники внутри html

Ну это ж не формат картинки, а всего лишь способ кодирования внутренних объектов. А!.. понял, спасибо. Там такие хитрые html с внутренними картинками, что TWebBrowser их не понимает. Ну что тут делать, либо html менять, либо браузер.


Да, там QR-код в виде картинки в формате Base64Encode. Вот и думаю уже - связываться с печатью готового html или парсить html и вручную формировать нужный BMP. Да, объект TWebBrowser в Delphi картинки в формате Base64 не понимает, как и команда

ShellExecute(Application.Handle, 'print', 'C:\\temp\\1.html', '', '', SW_HIDE);

При этом, например, Оперой html вполне открывается и вручную из Оперы печатается. Firefox тоже понимает. Разве что действительно открывать Оперой, а потом передавать ей команды для автопечати с эмуляцией нажатий горячих клавиш через AutoIt ...
...
Рейтинг: 0 / 0
Как преобразовать html с заданной шириной в bmp?
    #40129055
asviridenkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecator


там ещё javascript поддерживается.
ага, но нет


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

парсить html и вручную формировать нужный BMP

Флаг вам в руки, Наталья! Мы в вас верим!
...
Рейтинг: 0 / 0
Как преобразовать html с заданной шириной в bmp?
    #40129072
Наталья87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот бесхитростный код, длиной буквально в 20 строчек. Может, кому пригодится.
Костыльно - но судя по всему, нормальных способов (без необходимости что-то там покупать и от чего-то зависеть) всё равно нет.
Жаль - а ведь казалось бы - печать html куда более чем стандартная операция.

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
procedure TForm1.Button1Click(Sender: TObject);
var
   f: System.Text;
begin
   //потребуется установка AutoIt и Opera
   System.Assign(f, 'c:\temp\1.au3');
   System.Rewrite(f);
   System.Writeln(f, 'Send("^p")');
   System.Writeln(f, 'sleep(500)');
   System.Writeln(f, 'Send("{enter}")');
   System.Close(f);

   //ShellExecute(Application.Handle, 'print', 'C:\\temp\\1.html', '', '', SW_HIDE);
   ShellExecute(Application.Handle, 'open', 'C:\Program Files (x86)\Opera\Opera.exe', 'C:\\temp\\1.html', '', SW_HIDE);
   sleep(500);
   ShellExecute(Application.Handle, 'open', 'C:\Program Files (x86)\AutoIt3\AutoIt3.exe', 'c:\temp\1.au3', '', SW_HIDE);
end;
...
Рейтинг: 0 / 0
Как преобразовать html с заданной шириной в bmp?
    #40129088
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наталья87,

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

Ну да, ведь чтобы сформировать эту картинку с QR кодом прямо в отчётнике или на
канвасе нужного принтера программист нужен...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как преобразовать html с заданной шириной в bmp?
    #40129142
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Наталья87
Вот бесхитростный код, длиной буквально в 20 строчек. Может, кому пригодится.
Костыльно - но судя по всему, нормальных способов (без необходимости что-то там покупать и от чего-то зависеть) всё равно нет.
Жаль - а ведь казалось бы - печать html куда более чем стандартная операция.

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
procedure TForm1.Button1Click(Sender: TObject);
var
   f: System.Text;
begin
   //потребуется установка AutoIt и Opera
   System.Assign(f, 'c:\temp\1.au3');
   System.Rewrite(f);
   System.Writeln(f, 'Send("^p")');
   System.Writeln(f, 'sleep(500)');
   System.Writeln(f, 'Send("{enter}")');
   System.Close(f);

   //ShellExecute(Application.Handle, 'print', 'C:\\temp\\1.html', '', '', SW_HIDE);
   ShellExecute(Application.Handle, 'open', 'C:\Program Files (x86)\Opera\Opera.exe', 'C:\\temp\\1.html', '', SW_HIDE);
   sleep(500);
   ShellExecute(Application.Handle, 'open', 'C:\Program Files (x86)\AutoIt3\AutoIt3.exe', 'c:\temp\1.au3', '', SW_HIDE);
end;


Эпохально! Не зря я в вас верил!
...
Рейтинг: 0 / 0
Как преобразовать html с заданной шириной в bmp?
    #40129145
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov> Ещё через пару страниц выяснится

Я, признаться, ник не сразу признал.
Показалось что-то знакомое, но...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как преобразовать html с заданной шириной в bmp?
    #40129203
Фотография Kast2K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наталья87 ,
https://sources.ru/delphi/delphi_twebbrowser_faq.shtml
Уже все расписано и как на печать отправить и как в bmp сохранить
...
Рейтинг: 0 / 0
Как преобразовать html с заданной шириной в bmp?
    #40129246
Наталья87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Kast2K
Наталья87 ,
https://sources.ru/delphi/delphi_twebbrowser_faq.shtml
Уже все расписано и как на печать отправить и как в bmp сохранить


Там понимаете, в чём дело - в html встроена картинка в формате svg, закодированная в Base64 (не знаю, зачем разработчики так сделали). Соответственно, в Internet Explorer 11 данная картинка не отображается, хотя в Opera и Mozilla отображается. Поэтому варианты с TWebBrowser в Delphi, а также команды ShellExecute( ... print работать не будут.

Не знаю, зачем так сделали - но формат такой как есть. Остаётся получается вариант огород с костылями (Opera и эмуляция нажатий клавиш для печати) или предварительно обрабатывать html, доставать из него svg, декодировать из base64, преобразовывать полученный svg, например, в bmp или png и снова закодировав в base64 - заменять исходный base64(svg) на base64(png) в этом html-коде. Но тогда возникает вопрос - как преобразовать svg во что-нибудь нормальное вроде png или bmp ...
...
Рейтинг: 0 / 0
Как преобразовать html с заданной шириной в bmp?
    #40129247
Наталья87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Наталья87
Kast2K
Наталья87 ,
https://sources.ru/delphi/delphi_twebbrowser_faq.shtml
Уже все расписано и как на печать отправить и как в bmp сохранить


Там понимаете, в чём дело - в html встроена картинка в формате svg, закодированная в Base64 (не знаю, зачем разработчики так сделали). Соответственно, в Internet Explorer 11 данная картинка не отображается, хотя в Opera и Mozilla отображается. Поэтому варианты с TWebBrowser в Delphi, а также команды ShellExecute( ... print работать не будут.

Не знаю, зачем так сделали - но формат такой как есть. Остаётся получается вариант огород с костылями (Opera и эмуляция нажатий клавиш для печати) или предварительно обрабатывать html, доставать из него svg, декодировать из base64, преобразовывать полученный svg, например, в bmp или png и снова закодировав в base64 - заменять исходный base64(svg) на base64(png) в этом html-коде. Способ с преобразованием html лучше и надёжнее, чем эмуляция нажатий клавиш. Но тогда возникает вопрос - как преобразовать svg во что-нибудь нормальное вроде png или bmp ...
...
Рейтинг: 0 / 0
Как преобразовать html с заданной шириной в bmp?
    #40129249
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как преобразовать html с заданной шириной в bmp?
    #40129257
Belotsky Serge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Наталья87
Kast2K
Наталья87 ,
https://sources.ru/delphi/delphi_twebbrowser_faq.shtml
Уже все расписано и как на печать отправить и как в bmp сохранить


Там понимаете, в чём дело - в html встроена картинка в формате svg, закодированная в Base64 (не знаю, зачем разработчики так сделали). Соответственно, в Internet Explorer 11 данная картинка не отображается, хотя в Opera и Mozilla отображается. Поэтому варианты с TWebBrowser в Delphi, а также команды ShellExecute( ... print работать не будут.

Не знаю, зачем так сделали - но формат такой как есть. Остаётся получается вариант огород с костылями (Opera и эмуляция нажатий клавиш для печати) или предварительно обрабатывать html, доставать из него svg, декодировать из base64, преобразовывать полученный svg, например, в bmp или png и снова закодировав в base64 - заменять исходный base64(svg) на base64(png) в этом html-коде. Но тогда возникает вопрос - как преобразовать svg во что-нибудь нормальное вроде png или bmp ...


А если вытащить bmp, записанный в html в виде base64 (это текст) и преобразовать в двоичный код, сохранить его рядом с html в файле *.bmp. а в html выкинуть bmp в base64 и указать ссылку на сохраненный файл. И тогда можно будет воспользоваться TWebBrowser?
...
Рейтинг: 0 / 0
Как преобразовать html с заданной шириной в bmp?
    #40129260
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Belotsky Serge, а ты с кем сейчас разговаривал?
...
Рейтинг: 0 / 0
Как преобразовать html с заданной шириной в bmp?
    #40129264
asviridenkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Belotsky Serge,

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

К счастью, она уже имеет легко гуглящиеся решения:
https://www.ideasawakened.com/post/simple-svg-images-in-delphi-applications
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как преобразовать html с заданной шириной в bmp?
    #40129268
Belotsky Serge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
asviridenkov
Belotsky Serge,

У нее там SVG закодирован а не BMP. А преобразовать SVG в BMP не проще чем решить начальную задачу.
Кроме того, переход от вектора к растру портит качество печати.

Все, понял. Но изначально то речь шла про bmp.
...
Рейтинг: 0 / 0
Как преобразовать html с заданной шириной в bmp?
    #40129272
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запомни ник топикстартерши и запиши: её топики никогда не про то, что написано в
заголовке или первом сообщении. Это очень опытный проктостоматолог.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как преобразовать html с заданной шириной в bmp?
    #40129311
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наталья87
команды ShellExecute( ... print работать не будут.
Ну уж подобную чепуху нести Вам совсем стыдно должно быть...
ShellExecute/CreateProcess можно указать какой браузер открывать.
...
Рейтинг: 0 / 0
Как преобразовать html с заданной шириной в bmp?
    #40129428
Наталья87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гаджимурадов Рустам
Наталья87
команды ShellExecute( ... print работать не будут.
Ну уж подобную чепуху нести Вам совсем стыдно должно быть...
ShellExecute/CreateProcess можно указать какой браузер открывать.


Так ведь надо не просто открыть, а распечатать. Открыть html Оперой и дурак сможет. А если развёрнуто:

1. Работает

ShellExecuteA(Application.Handle, 'open', 'C:\Program Files (x86)\Opera\Opera.exe', 'c:\temp\1.html', '', 0);

но это простое открытие Оперой, нужно печатать, а не просто открыть


2. Работает.

ShellExecuteA(Application.Handle, 'print', 'c:\temp\1.html', '', '', 0);

Но это печать встроенным движком Internet Explorer, который не отображает svg.


3. ShellExecuteA(Application.Handle, 'print', 'C:\Program Files (x86)\Opera\Opera.exe', 'c:\temp\1.html', '', 0);

Так не работает.


И как же команде print указать, какой браузер открывать?
...
Рейтинг: 0 / 0
Как преобразовать html с заданной шириной в bmp?
    #40129434
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Dimitry Sibiryakov
Запомни ник топикстартерши и запиши: её топики никогда не про то, что написано в
заголовке или первом сообщении. Это очень опытный проктостоматолог.

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

Про print это Вы потом запели,
изначально речь шла об открытии.

Ну и в любом случае почитайте про
keybd_event/SendInput в порядке
самообразования, так сказать.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
24 сообщений из 49, страница 2 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как преобразовать html с заданной шириной в bmp?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (0):
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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