Anmelden

View Full Version : Konvertierung nach Graphic --> CCSID Problem



Seiten : 1 2 3 [4]

Ottersberg
08-02-18, 16:32
Hallo,

ich sitze an einem ähnlichen Problem. PDF-Datei aus Webservice mit Base64 kodiert. Egal ob ich die Routine von Scott nehme oder die IBM-API, ich bekomme nur einige Zeichen umgesetzt. Es ist als würde es dann abbrechen.

Wenn ich das über www.base64decode.org umwandle klappt das. Ich bekomme direkt das PDF-Dokument zum Download. Schaltet man aber den Live-Mode an, wird angezeigt "Malformed input... :(".

Besser geht es über www.base64decode.com. Dort wird das umgewandelt und sieht so aus, als wenn ich die PDF-Datei mit Notepad öffne.

Beispiel:
Der Code beginnt mit:

JVBERi0xLjQKJeLjz9MKMyAwIG9iago8PC9UeXBlL1hPYmplY3 QvQ29sb3JTcGFjZVsvSW5kZXhlZC9EZXZpY2VSR0IgMjU1KPPz 80hISNra2mFhYcLCwra2tqmpqefn55KSknl5eYWFhVRUVG1tbc 7Ozp2dnTw8PP

Lt. www.base64decode.com entspricht das:

%PDF-1.4
%âãÏÓ
3 0 obj
<</Type/XObject/ColorSpace[/Indexed/DeviceRGB 255(óóóHHHÚÚÚaaa¶¶¶©©©ççç’ ’yyy………TTTmmmÎÎ͝<<<ð

Über das RPG-Programm bekomme ich nicht mehr als

%PDF-1.4
%

Hat jemand eine Idee, wie ich das lösen kann oder benötige ich die "pfiffige Lösung" von Rainer?

Danke schon mal.

Fuerchau
09-02-18, 09:14
Du musst immer daran denken, dass Base64 ASCII-basiert ist.
Wenn du die Daten also per IFS-API's einliest, musst du auf jeden Fall die Daten binär einlesen, damit keine EBCDIC-Umsetzung erfolgt, denn dies zerstört die Bit-Folge.
Anschließend dekodieren und je nach Ergebnis, ob die Usrsprungskodierung UTF8 war, von UTF8 nach UCS2 oder einfach nach EBCDIC wandeln.

Für solche Sachen sind aber eher Java-Funktionen, da diese bereits eine Base64-Klasse implementieren.
Baue, oder lasse dir bauen, ein kleines Java-Progrämmchen (wenige Zeilen), dass eine IFS-Datei von Base64 nach UTF8 dekodiert. Das kann man per Eclipse testen und anschielßend auf der AS/400 auch ausführen (RUNJVA).

Ottersberg
09-02-18, 13:00
Ich benutze für den Webservice die HTTP-API von Scott Klement. Ich nutze http_post und http_parse_xml_stmf, da der Base64-String, der die PDF darstellt, in einer XML-Antwort enthalten ist. Ich habe beim http_parse_xml_stmf von HTTP_STMF_CALC auf HTTP_XML_CALC umgestellt. Damit wird die Datei nicht mehr mit O_TEXTDATA geöffnet und entsprechend binär verarbeitet. Dann funktioniert auch das Dekodieren.

Danke.