Steuerzeichen bei PDF

Die Dekodierung des JSON kommt aber vor der Erstellung des PDF, wenn ich das jetzt richtig verstanden habe?
Ja, es werden die Daten aus DB ausgelesen, dann die \n in Komma umgewandelt und dann aus den JSON ein Array gemacht, dessen Einzelteile dann an den entsprechenden Stellen im PDF eingefügt werden. Durch die Steuerzeichen schlägt die Umwandlung aber fehl und die Stellen im PDF bleiben leer.
 
Ich habe versucht, das zu reproduzieren aber ohne Erfolg, die Zeilenumbrüche werden präzise entfernt, auch wenn ein Leerzeichen davor steht.

Was Du noch tun könntest:

Die Anzeige deines Hex-Editors bei einem solchen String, wo das Ersetzen des 0A nicht funktioniert, posten.

Die Zeilenumbrüche schon vor dem Eintragen in die Datenbank escapen, damit gar nicht erst invalides JSON hinein gelangt.
 
Die Zeilenumbrüche schon vor dem Eintragen in die Datenbank escapen, damit gar nicht erst invalides JSON hinein gelangt.
Das ist es doch was ich gemeint habe: Das JSON IST valide. Die Zeilenumbrüche gelten halt im JSON selbst.
Steht auch in meinem Link.
Für ein JSON-Member kannst du durchaus text inkl. Zeilenumbrüchen verwenden, aber diese Zeilenumbrüche sind dann im JSON selbst.
Wenn dann ein (schlechter) JSON-Parser auf diesen Umbruch stösst, kann er mit dem Rest nichts anfangen
 
OK, die Adresse ist offenbar mehrzeilig, macht ja auch Sinn.
Aber ich bekomme das nicht reproduziert, das 0A wird präzise ersetzt in meinem Testcode:
Code:
<pre>
<?php
function hex_dump($data, $newline="\n")
{
  static $from = '';
  static $to = '';
 
  static $width = 16; # number of bytes per line
 
  static $pad = '.'; # padding for non-visible characters
 
  if ($from==='')
  {
    for ($i=0; $i<=0xFF; $i++)
    {
      $from .= chr($i);
      $to .= ($i >= 0x20 && $i <= 0x7E) ? chr($i) : $pad;
    }
  }
 
  $hex = str_split(bin2hex($data), $width*2);
  $chars = str_split(strtr($data, $from, $to), $width);
 
  $offset = 0;
  foreach ($hex as $i => $line)
  {
    echo sprintf('%6X',$offset).' : '.implode(' ', str_split($line,2)) . ' [' . $chars[$i] . ']' . $newline;
    $offset += $width;
  }
}
$json = '{"getAddress":"VIA PRADELLONA 10/A
60060 SANTA MARIA NUOVA AN
","getNameMatch":""}';
print_r($json);
hex_dump($json);
$json2=str_replace("\r",'',$json);
print_r($json2);
hex_dump($json2);
$json3=str_replace("\n", ', ',$json2);
print_r($json3);
hex_dump($json3);
$result=json_decode($json3);
print_r($result);
?>
</pre>
(hex_dump von Stackoverflow)
 
Ich habe jetzt die Ersetzungen aus deinem Testscript übernommen und plötzlich funktioniert es. Ich weiß beim besten Willen nicht, warum, aber es tut es.

Ganz vielen Dank für eure Hilfe!
 

Neue Beiträge

Zurück