Heim  >  Artikel  >  Backend-Entwicklung  >  PHP Batik implementiert die Funktion zum Exportieren von Highchart-Bildern

PHP Batik implementiert die Funktion zum Exportieren von Highchart-Bildern

巴扎黑
巴扎黑Original
2016-11-09 14:21:201439Durchsuche

Seit Kurzem gibt es eine Exportpflicht, die die gemeinsame Generierung von Highchart-Bildern und Datenberichten vorschreibt.
Nachdem ich ein paar Tage gekämpft hatte, habe ich es endlich geschafft.
1. Zuerst müssen Sie die JAVA-Umgebung installieren. Es müssen keine Umgebungsvariablen oder ähnliches festgelegt werden.
2. Laden Sie das entsprechende Batikglas-Paket herunter. Ich habe es mehrmals heruntergeladen, aber es war falsch. Den Anhang habe ich zusammengestellt.
3. Rufen Sie das offizielle PHP-Programm auf und ich habe es in einer Funktion organisiert.

function svgToImg($type, $svg, $filename){
clearFile(SAVE_PATH);//删除过期文件
ini_set('magic_quotes_gpc', 'off');
$svg = (string) $svg;
$filename = (string) $filename;
// prepare variables
if (!$filename or !preg_match('/^[A-Za-z0-9\-_ ]+$/', $filename)) {
$filename = 'chart';
}
if (get_magic_quotes_gpc()) {
$svg = stripslashes($svg);
}
// check for malicious attack in SVG
if(strpos($svg,"<!ENTITY") !== false || strpos($svg,"<!DOCTYPE") !== false){
exit("Execution is stopped, the posted SVG could contain code for a malicious attack");
}
$tempName = md5(rand());
// allow no other than predefined types
if ($type == &#39;image/png&#39;) {
$typeString = &#39;-m image/png&#39;;
$ext = &#39;png&#39;;
} elseif ($type == &#39;image/jpeg&#39;) {
$typeString = &#39;-m image/jpeg&#39;;
$ext = &#39;jpg&#39;;
} elseif ($type == &#39;application/pdf&#39;) {
$typeString = &#39;-m application/pdf&#39;;
$ext = &#39;pdf&#39;;
} elseif ($type == &#39;image/svg+xml&#39;) {
$ext = &#39;svg&#39;;
} else { // prevent fallthrough from global variables
$ext = &#39;txt&#39;;
}
$outfile = SAVE_PATH.$tempName.&#39;.&#39;.$ext;
if (isset($typeString)) {
// size
$width = &#39;&#39;;
if ($_POST[&#39;width&#39;]) {
$width = (int)$_POST[&#39;width&#39;];
if ($width) $width = "-w $width";
}
// generate the temporary file
if (!file_put_contents(SAVE_PATH."$tempName.svg", $svg)) {
die("Couldn&#39;t create temporary file. Check that the directory permissions for
the /temp directory are set to 777.");
}
if(IS_WIN){
$output = shell_exec("java -jar ". BATIK_PATH ." $typeString -d $outfile $width ".SAVE_PATH."$tempName.svg");
}else{
$output = shell_exec("/usr/local/jdk1.8.0_66/bin/java -jar ". BATIK_PATH ." $typeString -d $outfile $width ".SAVE_PATH."$tempName.svg");
}
 
// catch error
if (!is_file($outfile)) {
 echo "<pre class="brush:php;toolbar:false">$output
"; echo „Fehler beim Konvertieren von SVG.“; } anders { return $outfile; } } else if ($ext == 'svg') { header("Content-Disposition: attachment; filename="$filename.$ext""); header("Content-Type: $type"); echo $svg; } anders { echo „Ungültiger Typ“; } }

Speichern Sie die Datei lokal, und dann können Sie tun, was Sie wollen.
Wenn Sie die Installation der JAVA-Umgebung wirklich mühsam finden, können Sie die offizielle Exportadresse direkt simulieren und eine Anfrage stellen.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Statische PHP-VariablenNächster Artikel:Statische PHP-Variablen