Blame view

export/deepexport.php 2.6 KB
6c90d466   Andrea Petta   leafletjs
1
2
3
  <?php
  
  require '../Slim/Slim.php';
f90e19c3   Andrea Petta   plugin update
4
  require_once dirname(__FILE__) . '/PHPRtfLite-1.3.1/lib/PHPRtfLite.php';
6c90d466   Andrea Petta   leafletjs
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
  
  /**
  * Class DeepExport
  */
  class DeepExport
  {
      private static $instance = null;
      private $app;
  
      public static function getInstance()
      {
          if(self::$instance == null)
          {
              $c = __CLASS__;
              self::$instance = new $c;
          }
  
          return self::$instance;
      }
  
      private function __construct()
      {
          \Slim\Slim::registerAutoloader();
          $this->app = new \Slim\Slim();
  
          $this->app->post('/export-datalet-as-img', function(){
              if(!empty($this->app->request()->params('svg_data'))) {
                  try {
f90e19c3   Andrea Petta   plugin update
33
34
35
36
                      echo ($this->createImage($this->app->request()->params('svg_data')));
                  }catch (Exception $e){}
              }
          });
6c90d466   Andrea Petta   leafletjs
37
  
f90e19c3   Andrea Petta   plugin update
38
39
40
41
42
          $this->app->post('/export-datalet-as-rtf', function(){
              if(!empty($this->app->request()->params('svg_data'))) {
                  try {
                      // register PHPRtfLite class loader
                      PHPRtfLite::registerAutoloader();
6c90d466   Andrea Petta   leafletjs
43
  
f90e19c3   Andrea Petta   plugin update
44
45
                      // rtf document
                      $rtf = new PHPRtfLite();
6c90d466   Andrea Petta   leafletjs
46
  
f90e19c3   Andrea Petta   plugin update
47
48
49
50
51
52
53
                      $sect = $rtf->addSection();
                      $sect->writeText($_REQUEST["datalet"], new PHPRtfLite_Font(14), new PHPRtfLite_ParFormat('center'));
                      $sect->addImageFromString($this->createImage($this->app->request()->params('svg_data')), PHPRtfLite_Image::TYPE_PNG);
                      $sect->writeText($_REQUEST["dataset"], new PHPRtfLite_Font(14), new PHPRtfLite_ParFormat('center'));
                      // save rtf document
                      
                      $rtf->sendRtf('datalet.rtf');
6c90d466   Andrea Petta   leafletjs
54
55
56
57
                  }catch (Exception $e){}
              }
          });
      }
f90e19c3   Andrea Petta   plugin update
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
  
      private function createImage($svg_data)
      {
          $svg = $svg_data;
  
          $chart = new Imagick();
          $chart->setFormat('SVG');
          $chart->readImageBlob($svg);
          $chart->setFormat("png24");
  
          $logo = new Imagick();
          $logo->readImage("pbrtpa.bmp");
  
          $image = new Imagick();
          $image->setFormat("png24");
          $image->newImage($chart->getImageWidth() > $logo->getImageHeight() ? $chart->getImageWidth() : $logo->getImageWidth(),
              $chart->getImageHeight()+$logo->getImageHeight(),
              "white");
  
          $image->compositeImage($chart, Imagick::COMPOSITE_COPY, 0, 0);
          $image->compositeImage($logo, Imagick::COMPOSITE_COPY, 20, $chart->getImageHeight());
  
          return $image;
      }
  
6c90d466   Andrea Petta   leafletjs
83
84
85
86
87
      public function run(){
          //run the Slim app
          $this->app->run();
      }
  }