Как я могу создавать изображения с использованием разметки HTML?
Мне нужно отображать отчеты и вещи в HTML, используя Microsoft HTMLDocument
объект.
К сожалению, вы можете присвоить документу разметку HTML, но вы не можете дать ему изображения. Он может отображать только изображения, полученные с URL-адреса, например:
- Http://
- файл://
- разрешение: //
В качестве обходного пути я решил создать изображение, используя разметку HTML, пиксель за пикселем.
Была ли работа в этой области? Должен ли он быть абсолютно позиционирован 1x1 цветными пролетами? Таблица 350x200 со строками и столбцами размером в один пиксель?
7 ответов
Вы можете просто использовать схему Data URI?
IE8 поддерживает это (как и большинство новых браузеров); ваши изображения будут выглядеть так:
<img src="data:image/png;base64,A0123...==">
где A0123...
вещи - это base64 представление файла изображения. В зависимости от языка, который вы используете, вы можете воспользоваться Convert.ToBase64String()
сделать большую часть работы для вас.
На мой взгляд, самый простой способ - использовать закодированное в base64 изображение. Это достаточно эффективно, и есть инструменты для автоматизации генерации: http://www.greywyvern.com/code/php/binary2base64.
Во-первых, предостережение: это ужасная, ужасная вещь, которую вы планируете сделать.
Теперь, когда мы ушли с этого пути, я случайно сделал много ужасного. Я могу сказать вам, что вам лучше всего использовать таблицы, а не div или span. Тем не менее, это ужасно неэффективно и требует вечной загрузки, как вы можете видеть из примеров, на которые я ссылался. Только не делай этого, кроме как извращенной шутки.
Люди, к ужасу всего, проделали солидную работу в этой области. Решение, на которое я ссылаюсь, использует таблицы со сжатием RLE, что мне кажется достаточно умным.
"отчеты и вещи"... может быть немного яснее здесь...
Если в конечном итоге вы хотите отобразить отчет, который создается динамически, скорее всего, вы можете автоматически создать изображение отчета. "Экспорт в PDF", вероятно, доступен в инструменте отчетов. Грубо, но проще и эффективнее, чем кажется, куда ты направляешься.
Только в IE вы можете использовать VML, который дает базовые SVG-подобные возможности векторного рисования.
Этот парень создал библиотеку javascript для рисования векторной графики в браузерах, используя только sivs: http://web.archive.org/web/20080112113027/www.walterzorn.com/jsgraphics/jsgraphics_e.htm (в данный момент сайт не работает)
В наши дни вы также можете попробовать библиотеку, такую как Raphaël, которая использует холст браузера или поддержку VML.
Я написал класс PHP несколько лет назад, чтобы сделать это, но я не рекомендовал бы использовать это в реальном мире, так как браузеру требуется много времени для отображения таблицы, достаточно большой для изображения.
Если я не правильно понимаю ваш вопрос, почему вы не можете обратиться к изображению, используя полный URL: