Включить изображения в экспорт Amcharts v4 PDF - PullRequest
0 голосов
/ 29 марта 2019

Я хочу добавить логотип и другие изображения в мой экспорт Amcharts pdf. Версии: Php 7 на Ubuntu 16.04, Amcharts 4.

Я следил https://www.amcharts.com/docs/v4/tutorials/generating-multi-content-pdf-export/

У меня есть заголовки, текстовые диаграммы и таблицы. Пример не включает изображения, но я посмотрел в PDFmake здесь: https://pdfmake.github.io/docs/document-definition-object/images/

В таблицах amCharts и т. Д. Работают с блоками типа:

doc.content.push({
  table: {

В PDFMake синтаксис:

var docDefinition = {
content: [
    {
      layout: 'lightHorizontalLines', // optional
      table: {

и для изображений:

var dd = {
    content: [
        'pdfmake (since it\'s based on pdfkit) supports JPEG and PNG format',
        'If no width/height/fit is provided, image original size will be used',
        {
            image: 'sampleImage.jpg',
        },

Итак, я попробовал:

doc.content.push({
      image: 'sampleImage.jpg',
    }); 

И поместите изображение с именем sampleImage.jpg на сервер в той же папке, что и файл php

Я ожидал, что изображение будет добавлено в мою загрузку report.pdf, но оно не работает. Любые идеи приветствуются. В частности, каков правильный синтаксис, куда я должен поместить изображение для включения? Я бы хотел избежать проблем с преобразованием изображения в формат: data: image / jpeg.

1 Ответ

1 голос
/ 31 марта 2019

отвечая на мой вопрос:

Похоже, вам нужно использовать формат "data: image / jpeg; base64", чтобы включить изображение в ваш скрипт. Я конвертировал свои изображения с помощью «https://www.base64 -image.de / ». В результате получается блок кода вроде:

data:image/jpeg;base64,/9j/4A... lots of data ... QhCABCEIA//2Q==

Вы копируете это в переменную js следующим образом:

smiley = 'data:image/jpeg;base64,/9j/4A... lots of data ... QhCABCEIA//2Q==';

А затем выведите его с помощью:

    doc.content.push({
      image: smiley,
      width: 30
    });

Чтобы поместить изображения в таблицу, я сделал:

doc.content.push({
  table: {
    headerRows: 1,
    widths: [ "*", "*", "*", "*","*", "*", "*","*", "*", "*" ],
    body: [
      [
        {image: low, width: 30,  colSpan: 3, alignment: 'center'},{ },{ },
        {image: ok, width: 30,  colSpan: 4, alignment: 'center'},{ },{ },{ },
        {image: high, width: 30,  colSpan: 3, alignment: 'center'},{ },{ }

      ],
      [ 
        {text: "<?php echo $final_score_show[1]; ?>",  alignment: 'center'}, 
        ...
      ]
    ]
  }
});

Надеюсь, это кому-нибудь поможет. Наслаждайтесь !

...