Base64 String in verschiedenen Varianten (PDF, SWF) rendern

Larius

OutOfOrder
Teammitglied
Registriert
12 Juli 2013
Beiträge
3.831
Hallo alle zusammen,

ich brauch momentan für meine Arbeit eine Möglichkeit, einen Base64 String on the fly in das entsprechende Format zu bringen und im Internet darzustellen. Ich hab jetzt schon etwas herumexperimentiert:

[src=html4strict]<embed src=\"data:application/pdf;base64,"+datei+"\" width=\"500\" height=\"375\">[/src]

Das funktioniert an und für sich im Firefox sowie Chrome mit dem richtigen Base64 String, jedoch murkelt das im Internet Explorer furchtbar rum und stellt das nicht da. Jetzt hab ich gelesen das diese Data URI Geschichten nur noch für Images verwendet werden können im IE - inwieweit ist das richtig?

Shockwave macht mir da auch ein paar Probleme, da verwende ich momentan

[src=html4strict]"<object width=\"100\" height=\"100\"><param name=\"movie\" value=\""+datei+"\"><embed src=\""+datei+"\" width=\"100\" height=\"100\"></embed></object>"[/src]

Hat jemand eine Lösung für beide Probleme? Libs werd ich wohl nicht einsetzen können da das Ganze ein ERP ist wo ich Regeln schreib und damit das HTML zusammelstoppel...
 
ich brauch momentan für meine Arbeit eine Möglichkeit, einen Base64 String on the fly in das entsprechende Format zu bringen und im Internet darzustellen. Ich hab jetzt schon etwas herumexperimentiert:
[src=html4strict]<embed src=\"data:application/pdf;base64,"+datei+"\" width=\"500\" height=\"375\">[/src]
Das funktioniert an und für sich im Firefox sowie Chrome mit dem richtigen Base64 String, jedoch murkelt das im Internet Explorer furchtbar rum und stellt das nicht da. Jetzt hab ich gelesen das diese Data URI Geschichten nur noch für Images verwendet werden können im IE - inwieweit ist das richtig?
Das hängt von der IE-Version ab. In IE <= 7 werden Data-URIs gar nicht unterstützt. IE 8 bietet grundlegende Unterstützung, allerdings nur für bestimmte Inhalte (Bilder und Stylesheets) und limitiert die Länge zudem auf 32 KiB. Ab IE 9 wurde die Längenbeschränkung aufgehoben und Unterstützung für die Verwendung von data-URIs im src-Attribut von script-Elementen eingeführt.

Um alle Browser zuverlässig zu unterstützen und zudem den Base64-Overhead zu vermeiden, bietet sich an, die Daten serverseitig zu dekodieren und über eine zusätzliches Skript an den Client auszuliefern. Beachte auch, dass das embed-Element zumindest in HTML 4.01 nicht standardisiert ist und von älteren IE-Versionen (und in deinem Fall Browsern ohne PDF-Plug-In) nicht unterstützt wird.


Shockwave macht mir da auch ein paar Probleme, da verwende ich momentan
[src=html4strict]"<object width=\"100\" height=\"100\"><param name=\"movie\" value=\""+datei+"\"><embed src=\""+datei+"\" width=\"100\" height=\"100\"></embed></object>"[/src]
Meinst du damit Flash oder tatsächlich Adobe Shockwave? Grundsätzlich müsste das in allen modernen Browsern über ein einfaches object-Element möglich sein, siehe etwa .
 
  • Thread Starter Thread Starter
  • #3
Hm, Browser ohne PDF Plugin. Das könnte der Grund sein warum mir Firefox das schön (mit Optionen und allem), Chrome nur als Plain PDF (ohne Optionen wie Seitenumblättern undso) und IE gar nicht angezeigt hat. Mit dem Script bin ich halt momentan etwas vorsichtig - wenn dann muss ich das an die entsprechende Person weiterleiten und muss auch begründen, warum ich wenn dann n Script brauche oder ob wir jetzt auf n anderen Browser müssen. Wenn das PDF Plugin ausgerollt werden kann stellt das sogar das geringste Problem da, Berechtigungen sei Dank gibt es nur 1 Browser für alle.

Ich meine .swf, also Adobe Shockwave. Danke für den Link, ich schau es mir morgen auf jeden Fall noch einmal an.
 
Wenn es nicht einfach raus kopierbar sein soll - warum dann nicht serverseitig ein Bild mit dem String erzeugen? Nur mal noch so als Idee :)
 
Ich meine .swf, also Adobe Shockwave. Danke für den Link, ich schau es mir morgen auf jeden Fall noch einmal an.
Dateien mit der Endung `swf` sind Flash-Inhalte - Shockwave-Dateien haben Endungen wie `dxr`. Allerdings bezeichnete Adobe/Macromedia Flash zumindest in der Vergangenheit auch als `Shockwave Flash`, wodurch solche Verwechslungen entstehen. Flash ist (anders als Shockwave) vergleichsweise unproblematisch bei der Einbindung, da das Plugin weit verbreitet ist. Das in beschriebene Verfahren wäre dazu geeignet.


Zur PDF-Problematik stellt sich mir die Frage, was du am Ende erreichen möchtest und ob es tatsächlich sinnvoll ist, die Daten als PDF-Dokument einzubinden. Dass du die PDF-Dateidaten als Base64-String ausgeben möchtest, deutet darauf hin, dass du sie serverseitig dynamisch erzeugst. Dann wäre allerdings sinnvoller, die Daten direkt als HTML auszugeben (oder ggf. als Bild, wenn erforderlich).
 
  • Thread Starter Thread Starter
  • #6
Die Daten (PDF, SWF) gehören zu einzelnen Produkten, sprich die werden 1x in das System eingespielt als Base64 und sollen dann entsprechend wieder generiert werden können. Ja sicher, man könnte einfach hergehen und das Ganze als Files übertragen, nur nachdem es dann eine Haupt-DB und viele kleine DBs geben soll (damit die Verkäufer auch offline arbeiten können) wurde der Ansatz gewählt, seis drum.

Wir lösen das jetzt anders: Die Datei wird einfach in die temporären Dateien gepackt und dann einfach verklinkt. Dann spar ich mir nämlich den ganzen Base64 Schmarrn denn das funktioniert nicht immer (hab ein Object-Tag für SWF genommen und angepasst - in Chrome gehts, in FF + IE nicht).
 
Zurück
Oben