Felix Riesterer: Wie kann ich Binary Daten aus SAP mit PHP zu einer PDF Datei konvertieren?

Beitrag lesen

Lieber Klaus1,

über eine RFC-Aufruf bekomme ich von SAP eine Tabelle zurück.

meinst Du eine Datenbank-Tabelle?

In der Tabelle liegt die PDF-Datei augesplittet alle 1022 Zeichen.

Das bedeutet, dass zuallererst alle Zeichen zusammengesetzt werden müssen, ehe man etwas anderes damit tut.

$rows = saprfc_table_rows ($fce,"CONTENT_BIN");

Was leistet die Funktion/Methode saprfc_table_rows? Allem Anschein nach liefert sie eine Ganzzahl, welche die Anzahl der Teildaten ermittelt.

Frage: Kannst Du beweisen, dass $row auch wirklich die richtige Zahl liefert?

$pdfData = "";
for ($i=1;$i<=$rows;$i++) {
	$aline = saprfc_table_read ($fce,"CONTENT_BIN",$i);
	$pdfData .= hex2bin($aline["LINE"]);
}

Wenn $row die richtige Anzahl liefert, muss hier der Hase im Pfeffer liegen.

  1. Sind die benötigten Tabellen-Zeilen wirklich der Reihe nach in der Tabelle abgelegt? Also: Bekommst Du mit saprfc_table_read wirklich nur die betroffenen Zeilen, und sind diese fortlaufend nummeriert, dass $i keine fremden Zeilen einliest (und dafür andere auslässt)?
  2. Warum sammelst Du nicht die PDF-Daten zuerst vollständig in einer Variable, ehe Du hex2bin darauf anwendest? Wenn die Anzahl der Zeichen aus welchem Grund auch immer ungerade sein sollte, dann könnte es sein, dass Du fehlerhafte Teildaten generierst, weil „halbe Bytes“ zu ganzen Bytes umgewandelt werden (1a2b3 + c4d5e => 1a 2b 03 + c4 d5 06 anstatt 1a 2b 3c 4d 5e). Also zuerst alles in einen String einlesen und dann hex2bin anwenden.

Liebe Grüße

Felix Riesterer