Google-Maps-Karten in eine PDF wuchten
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
bild
code
datei
erstellen
fehler
gut code
header
http
image
index
list
null
ordner
pfad
sensor
stopfen
string
terrain
type
url
-
Halli-hallo!
Ich möchte gern die Statischen Karten, die man mit Google-Maps erstellen kann, in eine PDF wuchten.
Das erstellen der Karten mittels der API bekomm ich hin.
Das erstellen einer PDF mittels fpdf inzwischen auch.
Nun mangelt's mir aber an der Verknüpfung der beiden Techniken.
Im fpdf mittels $pdf->Image('hierdengooglestaticpfad', 10, 80); das Bild einbinden zu wollen geht gegen den Baum.
Also hab ich gedacht, ich könne das Google-Bild mittels php erstmal in einen jpeg-header stopfen, um es dann ins fpdf einzubinden. Was im Code mit einem jpg aus einem Ordner geht, erzeugt mit dem Pfad von Googlemaps wiederum nur ein schwarzes Bildchen.
Das der jpg-erstell-code:
<?php $datei = "http://maps.google.com/maps/api/staticmap?zoom=15&size=640x300&maptype=terrain&markers=color:red%7Csize:mid%7Clabel:S%7C20,20&sensor=false"; $width = 200; $height = 200; header('Content-Type: image/jpeg'); list($width_orig, $height_orig) = getimagesize($datei); $ratio_orig = $width_orig/$height_orig; if ($width/$height > $ratio_orig) { $width = $height*$ratio_orig; } else { $height = $width/$ratio_orig; } $image_p = imagecreatetruecolor($width, $height); $image = imagecreatefromjpeg($datei); imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig); imagejpeg($image_p, null, 50); ?>
Wie also bekomm ich das Bild nett in die PDF? Danke im Voraus.
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Also bei mir wirft der verständlicherweise einen Fehler bei deinem geposteten Code aus. Undzwar wirft Google eine png-Grafik raus, aber du benutzt imagecreatefromjpeg, anstelle von imagecreatefrompng. Vielleicht liegt da der Fehler?
-
Mal ausprobiert, ob es was bringt, das Bild zuvor zu downloaden und als temporäre Datei einzubinden?
Wenn du nämlich die Doku liest, merkst du, dass die komische Lib gerne eine Dateiendung haben möchte, wenn kein Dateityp angegeben ist.
Wenn du dann wiederum in den Quelltext der Lib guckst, dann siehst du, dass folgenden Dateiendungen zulässig sind:
.gif
.jpeg
.jpg
.png
Das ist die elegante und lahme Lösung.
Die schnelle hackerlösung sieht so aus:
Du nimmst deinen String für die statische google-Adresse und schreibst da irgendwas hinter, das wie eine Dateiendung für ein png aussieht, da google das Bild in diesem Format ausliefert. Z.B. &type=.png
Dann sähe dein String so aus:
http://maps.google.com/maps/api/staticmap?zoom=15&size=640x300&maptype=terrain&markers=color:red%7Csize:mid%7Clabel:S%7C20,20&sensor=false&type=.png
P.S. die Vorrednerantwort stimmt auch, ist aber mit diesem Posting hinfällig.
Mit freundlichen Grüßen -
funktioniert bei mir ohne probleme.$pdf->Image("http://maps.google.com/maps/api/staticmap?zoom=15&size=640x300&maptype=terrain&markers=color:red%7Csize:mid%7Clabel:S%7C20,20&sensor=false", 0, 0,200,93, "PNG");
Funktioniert ebenso gut.$pdf->Image("http://localhost/googletopdf/foo.php", 0, 0,200,93, "JPEG");
Funktioniert nicht.$pdf->Image("foo.php", 0, 0,200,93, "JPEG");
Wird wohl daran liegen, dass er lokal versucht, das Ding lokal auszulesen.
Nochmal mein ganzer Code:
foo.php:
pdf.php<?php $datei = "http://maps.google.com/maps/api/staticmap?zoom=15&size=640x300&maptype=terrain&markers=color:red%7Csize:mid%7Clabel:S%7C20,20&sensor=false"; $width = 200; $height = 200; header('Content-Type: image/jpeg'); list($width_orig, $height_orig) = getimagesize($datei); $ratio_orig = $width_orig/$height_orig; if ($width/$height > $ratio_orig) { $width = $height*$ratio_orig; } else { $height = $width/$ratio_orig; } $image_p = imagecreatetruecolor($width, $height); $image = imagecreatefrompng($datei); imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig); imagejpeg($image_p, null, 50); ?>
<?php require('fpdf/fpdf.php'); //require('index.php'); //createmypng("http://maps.google.com/maps/api/staticmap?zoom=15&size=640x300&maptype=terrain&markers=color:red%7Csize:mid%7Clabel:S%7C20,20&sensor=false", "0.jpeg"); $datei = "index.php"; $pdf = new FPDF(); $pdf->Open(); $pdf->AddPage(); $pdf->Image("foo.php", 0, 0,200,93, "JPEG"); // $pdf->Image("http://localhost/googletopdf/foo.php", 0, 0,200,93, "JPEG"); // $pdf->Image("http://maps.google.com/maps/api/staticmap?zoom=15&size=640x300&maptype=terrain&markers=color:red%7Csize:mid%7Clabel:S%7C20,20&sensor=false", 0, 0,200,93, "PNG"); $pdf->Output(); ?>
Beitrag zuletzt geändert: 7.5.2012 23:46:24 von kelserific -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage