Есть задача скопировать отрендеренный HTML в Clipboard в виде EMF (на самом деле формат значения не имеет — главное, чтобы MS Office понимал картинку как векторную). Возможно ли это в Sciter3 и если возможно, то как?
То же самое с печатью — как в Sciter3 отобразить HTML на device context принтера?
Здравствуйте, Hawk, Вы писали:
H>Есть задача скопировать отрендеренный HTML в Clipboard в виде EMF (на самом деле формат значения не имеет — главное, чтобы MS Office понимал картинку как векторную). Возможно ли это в Sciter3 и если возможно, то как?
Честно говоря я не понимаю как вообще в EMF можно представить вывод Direct2D. EMF это ж сугубо GDI.
Текст например там в основном OpenFont шрифтами выводится. Вообще аналогов в GDI нет.
H>То же самое с печатью — как в Sciter3 отобразить HTML на device context принтера?
Пока нет, все собираюсь. В любом случае печать будет в битмап размером в страницу и эта битмап будет на принтер отправляться.
В принципе в W8 добавлена поддержка печати в Direct2D но это только W8.
Здравствуйте, c-smile, Вы писали:
CS>Честно говоря я не понимаю как вообще в EMF можно представить вывод Direct2D. EMF это ж сугубо GDI. CS>Текст например там в основном OpenFont шрифтами выводится. Вообще аналогов в GDI нет.
Sciter3, насколько понимаю, умеет работать в режиме GDI+. Т.е. теоретически можно сохранить данные в формате EMF+.
Здесь есть пример копирования вывода GDI+ в буфер обмена. Насколько понял, должен быть способ подсунуть объект Graphics в Sciter, который с помощью GDI+ нарисует картинку, а потом эту картинку перенести в буфер обмена. Или то же самое сделать внутри Sciter. Возможно ли такое реализовать?
H>Здесь есть пример копирования вывода GDI+ в буфер обмена. Насколько понял, должен быть способ подсунуть объект Graphics в Sciter, который с помощью GDI+ нарисует картинку, а потом эту картинку перенести в буфер обмена. Или то же самое сделать внутри Sciter. Возможно ли такое реализовать?
Андрей, вопрос еще в силе. Может есть какие-нибудь идеи?
Здравствуйте, Hawk, Вы писали:
H>>Здесь есть пример копирования вывода GDI+ в буфер обмена. Насколько понял, должен быть способ подсунуть объект Graphics в Sciter, который с помощью GDI+ нарисует картинку, а потом эту картинку перенести в буфер обмена. Или то же самое сделать внутри Sciter. Возможно ли такое реализовать?
H>Андрей, вопрос еще в силе. Может есть какие-нибудь идеи?
Какой из двух вопросов?
Печать — Sciter уже печатает.
Если это про EMF то Direct2D про EMF ничего не знает.
Проблема в том Direct2D и GDI+ используют разные шрифты. Т.е. если я что-то и нарисовал в D2D то перенести его в GDI+ один в один невозможно.
Ну и потом EMF это поток GDI команд. GDI не знает ничего ни про anti-aliasing, ни про alpha channel.
Поэтому в настоящее время только рисование элемента в new Image(w,h, element) и потом оный image в clipboard.
Примеры в sdk/samples/graphics/test-dynamic-background.htm и sdk/samples/graphics/test-image-render-element.htm
Здравствуйте, c-smile, Вы писали:
CS>Т.е. если я что-то и нарисовал в D2D то перенести его в GDI+ один в один невозможно.
Один в один и не надо. Главное, чтобы была возможность положить в cliipboard векторную картинку. Пусть даже отличающуюся от оригинала.
Вообще, странно, что подобной задачи никогда не возникало.
Например, у меня HTMLayout используется для построения диаграмм:
В результате при копировании в Excel получается примерно такая картинка:
Которая, в отличие от растровой, хорошо масштабируется:
Если бы Sciter умел нечто подобное, можно было бы полностью перейти на него и не таскать за собой HTMLayout.
Здравствуйте, Hawk, Вы писали:
H>Здравствуйте, c-smile, Вы писали:
CS>>Т.е. если я что-то и нарисовал в D2D то перенести его в GDI+ один в один невозможно. H>Один в один и не надо. Главное, чтобы была возможность положить в cliipboard векторную картинку. Пусть даже отличающуюся от оригинала.
H>Вообще, странно, что подобной задачи никогда не возникало.
H>Которая, в отличие от растровой, хорошо масштабируется:
Плохо она масштабируется. Особенно шрифты. GDI использует пиксельную сетку поэтому расстояния между буквами плывут при разных scale factors.
EMF на самом деле нифига не вектор а что-то промежуточное на отвяжись.
H>Если бы Sciter умел нечто подобное, можно было бы полностью перейти на него и не таскать за собой HTMLayout.
Скорее всего ничего разумного не будет пока не появится нормальный векторный формат в Windows. Что-то типа PS может быть.
Здравствуйте, c-smile, Вы писали:
CS>Скорее всего ничего разумного не будет пока не появится нормальный векторный формат в Windows. Что-то типа PS может быть.
Так уже есть XPS, новый (с Vista) метафайл для печати
Здравствуйте, Слава, Вы писали:
С>Здравствуйте, aloch, Вы писали:
A>>Так уже есть XPS, новый (с Vista) метафайл для печати
С>При сколь бы то ни было большом размере, оно тормозит. Говорю по опыту изготовления отчетов на WPF в FlowDocument.
Ну тормозит не оно, а WPF. Нативный растеризатор (который не доступен простым смертным) весьма шустрый.
Здравствуйте, aloch, Вы писали:
A>Здравствуйте, c-smile, Вы писали:
CS>>Скорее всего ничего разумного не будет пока не появится нормальный векторный формат в Windows. Что-то типа PS может быть.
A>Так уже есть XPS, новый (с Vista) метафайл для печати
Это для печати. Для clipboard и последующего embedding XPS не подходит.
XPS это вариант старого PS, т.е. концептуально то же самле что и PDF.
Тут скорее всего нужен SVG. Но не знаю как умеет ли Office его интегрировать в документы.