Binärdaten als PDF speichern
Rene
- php
0 hotti0 Vinzenz Mai0 hotti0 Vinzenz Mai0 hotti
0 Rene
0 Rene0 hotti
Hi,
von einem Webservice bekomme ich als Response ein PDF in Binärform
<ms-pdf xmlns="">JVBERi0xLjMKJaqrrK0KNCAwIG9iago8...</ms-pdf>
Die Binärdaten ($finalStr = "JVBERi0xLjMKJaqrrK0KNCAwIG9iago8...") speichere ich als PDF-Datei ab
$fp = fopen("test.pdf", "wb");
fwrite($fp, $finalStr);
fclose($fp);
Aber die PDF-Datei kann ich nicht öffnen, weil die Datei beschädigt sein soll. Anscheinend geht das doch nicht so einfach wie ich dachte. Ich vermute mal, dass es an der Kodierung irgendwie liegt, aber an dieser Stelle komme ich einfach nicht weiter. Wer weiß Rat?
Hi,
von einem Webservice bekomme ich als Response ein PDF in Binärform
<ms-pdf xmlns="">JVBERi0xLjMKJaqrrK0KNCAwIG9iago8...</ms-pdf>
Binärdaten sind das mit Sicherheit nicht.
[..]Ich vermute mal, dass es an der Kodierung irgendwie liegt, aber an dieser Stelle komme ich einfach nicht weiter. Wer weiß Rat?
Ich vermute ein base64_encoding ;)
Hotti
Hallo,
<ms-pdf xmlns="">JVBERi0xLjMKJaqrrK0KNCAwIG9iago8...</ms-pdf>
[..]Ich vermute mal, dass es an der Kodierung irgendwie liegt, aber an dieser Stelle komme ich einfach nicht weiter. Wer weiß Rat?
Ich vermute ein base64_encoding ;)
sieht gut aus:
echo base64_decode('JVBERi0xLjMK'); # gibt %PDF-1.3 aus
Freundliche Grüße
Vinzenz
hi,
Ich vermute ein base64_encoding ;)
sieht gut aus:
echo base64_decode('JVBERi0xLjMK'); # gibt %PDF-1.3 aus
Und der Rest!? Den will ich aber auch sehen ;)
SCNR;
Hotti
Hallo,
Ich vermute ein base64_encoding ;)
sieht gut aus:
echo base64_decode('JVBERi0xLjMK'); # gibt %PDF-1.3 aus
Und der Rest!? Den will ich aber auch sehen ;)
tja, ich habe nur wie file gegen die PDF-Spezifikation geprüft (siehe dieser Archivbeitrag).
Aber ich verrate Dir: das nächste Zeichen ist ein Zeilenvorschub (LF) ...
Freundliche Grüße
Vinzenz
Hallo,
Und der Rest!? Den will ich aber auch sehen ;)
tja, ich habe nur wie file gegen die PDF-Spezifikation geprüft (siehe dieser Archivbeitrag).
ah, danke! Ich wollte schon immer mal wissen, was file eigentlich macht.
Aber ich verrate Dir: das nächste Zeichen ist ein Zeilenvorschub
Base64 resp. uuencode ist schon geil ;)
Indes: Wenn Client und Server das Lesen/Schreiben in Sockets unterstützen, ist es möglich, auf das ganze "tara" (XML u.a. Verpackungen) zu verzichten und auch unter Verzicht auf Base64 reine binary-Sequenzen zu senden/empfangen. Btw., ich höre gerade Diva Funk als mp3-Stream...
Viele Grüße,
Hotti
echo base64_decode('JVBERi0xLjMK'); # gibt %PDF-1.3 aus
Ja, so funktioniert es.
Danke für die Hilfe!
Freundliche Grüße
Vinzenz
Hi,
von einem Webservice bekomme ich als Response ein PDF in Binärform
<ms-pdf xmlns="">JVBERi0xLjMKJaqrrK0KNCAwIG9iago8...</ms-pdf>
Binärdaten sind das mit Sicherheit nicht.
Du hast natürlich Recht! Ich hatte gestern zu oft mit Begriffen wie BINARY rumhantiert, daher hatte sich das bei mir eingebrannt ;-)
[..]Ich vermute mal, dass es an der Kodierung irgendwie liegt, aber an dieser Stelle komme ich einfach nicht weiter. Wer weiß Rat?
Ich vermute ein base64_encoding ;)
Deine Vermutung ist vollkommen richtig! Dann ist es ja doch so einfach, wie ich erhofft hatte.
Vielen Dank, das erspart mir viel Zeit!
Hotti
hi,
Binärdaten sind das mit Sicherheit nicht.
Du hast natürlich Recht! Ich hatte gestern zu oft mit Begriffen wie BINARY rumhantiert, daher hatte sich das bei mir eingebrannt ;-)
Eine Binary in "text/xml" verpacken funktioniert nur dann, wenn die binary keine Bytes enthält, die selbst "text/xml" darstellen könnten. Weil dies praktisch nicht vorhersehbar ist, geht die Verpackung einer bin in xml schief, d.h., die Bytes müssen so codiert werden, dass die sich von der "Verpackung" in jedem Fall unterscheiden, was mit einer Base64-Codierung der Fall ist: Die ergibt keine Zeichen wie "<" oder ">".
Hier noch ein interessanter Link: Base64
(Zeichenvorrat und ~tabelle)
Hotti