Конвертировать Base64 в обычный PNG для копирования / вставки - PullRequest
1 голос
/ 27 января 2012

У меня есть шаблон электронной почты в формате HTML, который использует грязный процесс следующим образом:

  1. Извлечь данные из MySQL и поместить их в диаграмму HighCharts
  2. Конвертируйте HighCharts SVG в canvas, используя canvg
  3. Визуализация холста как PNG Base64 с использованием canvas.toDataURL

Все хорошо, изображение отображается нормально (за исключением некоторых изысков в Internet Explorer), но вот в чем проблема:

Я бы хотел, чтобы пользователи могли копировать и вставлять всю веб-страницу в Outlook и отправлять ее по электронной почте. Тем не менее, Outlook (и несколько других клиентов, которые я пробовал) не получит PNG Base64 через копирование - есть пустое место, где должно быть изображение.

Кто-нибудь знает способ преобразования Base64 в обычный PNG, чтобы он мог выжить при копировании / вставке? Может быть, это требует сохранения PNG на сервере?

1 Ответ

1 голос
/ 28 января 2012

Я думал об этом с момента вашего последнего вопроса, и у меня есть 3 варианта:

Один

  1. Придерживайтесь того, что выhave.
  2. Возьмите строку base64 из toDataURL, отправьте ее обратно на сервер через AJAX, в бэкэнде преобразуйте в PNG, сохраните на сервере и отправьте PNG обратно на страницу.

Два

  1. Рендеринг старших графиков SVG в браузере пользователей.
  2. Отправка этой строки SVG на ваш бэкэнд-сервер с помощью вызова AJAX.
  3. На сервере сгенерируйте почтовый запрос (, что-то вроде описанного здесь, см. Использование PHP для POST-запроса ) к серверу экспорта highcharts по адресу http://export.highcharts.com/.Из рассмотрения старших диаграмм source запрос должен содержать следующие опубликованные переменные:

    filename: png filename
    type: from plotOptions, тип, строка, строкаи т. д.
    ширина: ширина в пикселях желаемого png
    svg: svg string

  4. Получите полученный PNG, сохраните его на своем сервере, подайте его в обычном режиме.

Три

Переключитесь на использование Java Highcharts API .Вы должны запустить это на своем сервере.Однако, как только вы это сделаете, вы сможете полностью сгенерировать свои диаграммы на бэкэнде и просто подать файл PNG.

...