Jörg Reinholz: Meine Erklärung warum ich das als Serialize speichern möchte.

Beitrag lesen

Moin!

warum ich das ganze mache hat folgenden Hintergrund:

Ich möchte gerne später ein PDF zusammen stellen lassen, was dank http://html2pdf.fr/de/example absolut kein Problem ist.

Die Ergebnisse von html2pdf sind schnell erzielt, aber die "genügen nicht jedem für alles". (Das ist die Höflichkeitsform).

Tipp: Wenn Dir der Server gehört, Du also pdflatex installieren kannst, dann könntest Du auch machen, was ich gemacht habe:

Rechnung in libreoffice, gleich mit allen Platzhaltern erzeugen. Rechnungsvorlage als tex-Datei exportieren. Rechnungsvorlage mit Editor öffnen und verbessern, Dir ggf. anschauen was Du machen musst um Tabellenzeilen einzufügen (Ich habe stets genau eine Position.)

Auf dem Webserver: Formular für die Daten... und dann in PHP die Vorlage.tex öffnen, die Platzhalter durch die Werte aus dem Formular ersetzen, mit pdflatex umwandeln, das PDF auf dem Server speichern (drucken könnte man es auch) und an den Benutzer ausliefern (wenn man das denn will). Das Ergebnis sind Ausdrucke, die wirklich "klasse" aussehen.

Wieso die sogar besser aussehen als das mit libreOffice oder auch Word überhaupt erreichbar ist muss mir mal jemand erklären, der sowohl von der graphischen Seite als auch von der technischen Seite (LaTeX) her davon was versteht.

<?php
include 'defaults.php'; # setzt z.B. SAFE_DIR

$ar_suchen=array();
$ar_ersetzen=array();

$betrag=floatval(trim(str_replace(',', '.', $_POST['D_NETTO'])));
$ustsatz=floatval(trim($_POST['D_USTSATZ']))/100;
$_POST['D_RNUMMER']=intval(trim($_POST['D_RNUMMER']));

$_POST['D_NETTO']=number_format($betrag , 2 , ',' , '.' ).' '.$_POST['D_WAEHRUNG'];
$_POST['D_UST']=number_format($betrag*$ustsatz , 2 , ',' , '.' ).' '.$_POST['D_WAEHRUNG'];
$_POST['D_BRUTTO']=number_format($betrag*(1+$ustsatz) , 2 , ',' , '.' ).' '.$_POST['D_WAEHRUNG'];

foreach (array_keys($_POST) as $key) {
    $ar_suchen[]=str_replace('_', '.', $key);
    $ar_ersetzen[]=string_to_latex(trim($_POST[$key]));
}

$tmpfile=tempnam('/tmp', 'php_') ;
#unlink ($tmpfile);
#die($tmpfile);
$tmpfile_tex=$tmpfile . '.tex';
$tmpfile_pdf=$tmpfile . '.pdf';
$tmpfile_err=$tmpfile . '.log';
$tex= file_get_contents(VORLAGE);	
$tex=str_replace ($ar_suchen,$ar_ersetzen,  $tex);
file_put_contents ($tmpfile_tex, $tex);

chdir ('/tmp');
$system="pdflatex  -interaction=nonstopmode -synctex=0 -output-directory=/tmp $tmpfile_tex";
#die($system);
$dummy=exec($system);
header('content-type: application/pdf');
header('Content-Disposition: attachment; filename="' .$_POST['D_RNUMMER']. '.pdf"');
print file_get_contents($tmpfile_pdf);

unlink ($tmpfile_tex);
exec ('mv "' . $tmpfile_pdf . '"  "' . SAFE_DIR . $_POST['D_RNUMMER'] . '.pdf"');
exec ('chmod 666 "' . SAFE_DIR . $_POST['D_RNUMMER'] . '.pdf"');
unlink ($tmpfile_tex);
unlink ($tmpfile_log);
unlink ($tmpfile);
exit;

function char_2_tex () {
  $ar['\\'] = '\textbackslash ';
  $ar['&']  = '\&';
  $ar['_']  = '\_';
  $ar['<']  = '\textless';  
  $ar['>']  = '\textgreater';  
  $ar['§']  = '\textascii§';  
  $ar['$']  = '\$';  
  $ar['#']  = '\#';  
  $ar['{']  = '\textbraceleft';  
  $ar['}']  = '\textbraceright';  
  $ar['%']  = '\%';  
  $ar['~']  = '\textasciitilde';  
  $ar['"']  = '\textquotedbl';  
  $ar['|']  = 'textbar';  
  $ar['€']  = '\texteuro';  
  $ar['Ø']  = '\O';  
  $ar['...']  = '\dots';
  $ar['ß'] = '\ss';
  $ar['<<'] = '\guillemotleft';
  $ar['>>'] = '\guillemotright';
  return $ar;
}


function string_to_latex ($str) {
      $ar= char_2_tex();
      $s=array_keys($ar);
      foreach ($s as $t) {
        $r[]=$ar[$t];
      }
      return str_replace($s, $r, $str);
}

Jörg Reinholz

0 72

Serialize

Jnnbo
  • mysql
  • php
  1. 0

    Serialize - Mein Beispiel

    Jnnbo
    1. 0
      woodfighter
      1. 0
        Jnnbo
        1. 0
          woodfighter
          1. 0
            Jnnbo
            1. 1
              Der-Dennis
              1. 0
                Jnnbo
                1. 0
                  Der-Dennis
        2. 0
          Sven Rautenberg
          1. 0
            Jnnbo
            1. 0
              Sven Rautenberg
              1. 0
                Jörg Reinholz
  2. 0
    woodfighter
    1. 0
      dedlfix
  3. 0
    Serialize
    1. 0
      woodfighter
  4. 1
    Jörg Reinholz
    • php
    1. 0
      Jnnbo
      1. 0
        Jörg Reinholz
        1. 0
          Jnnbo
          1. 0
            Jörg Reinholz
            1. 0

              2 Stufe der Auflösung

              Jörg Reinholz
            2. 0
              dedlfix
              1. 0
                Jörg Reinholz
                1. 0

                  Serialize - Kontextwechsel?

                  Der-Dennis
                  1. 1
                    Jörg Reinholz
                    1. 0
                      Der-Dennis
                      1. 0
                        Jörg Reinholz
                        1. 0

                          JSON

                          Der-Dennis
                          1. 0
                            Jörg Reinholz
                            1. 0
                              Der-Dennis
                          2. 0
                            Tabellenkalk
                            • hardware
                            1. 0
                              Der-Dennis
                  2. 1
                    dedlfix
                    1. 0
                      Der-Dennis
                  3. 0
                    Tabellenkalk
                    • perl
                    1. 0
                      Der-Dennis
              2. 0

                Meine Erklärung warum ich das als Serialize speichern möchte.

                Jnnbo
                1. 0
                  Der-Dennis
                2. 0
                  dedlfix
                  1. 0
                    Jnnbo
                3. 0
                  Jörg Reinholz
            3. 0
              Der Martin
            4. 0
              Jnnbo
              1. 0
                frankx
                1. 0
                  Jnnbo
                  1. 0
                    Der-Dennis
              2. 0
                Der-Dennis
                1. 0
                  Jnnbo
                  1. 0
                    Der-Dennis
              3. 0
                Jörg Reinholz
                1. 0
                  Der-Dennis
                2. 0
                  Jnnbo
              4. 1

                Jetzt habe ich gerafft, was Du überhaupt willst

                Jörg Reinholz
                1. 0
                  Jörg Reinholz
                  1. 0
                    Jnnbo
                    1. 0
                      Jörg Reinholz
                      1. 0
                        Jnnbo
                        1. 0
                          Jörg Reinholz
                          1. 0
                            Jörg Reinholz
                            1. 0

                              Notice: Undefined index: wps_strasse

                              Jnnbo
                              1. 1
                                Der Martin
                                1. 0
                                  Jnnbo
                                  1. 1
                                    Der Martin
                                2. 0
                                  dedlfix
                          2. 0
                            Jnnbo
            5. 1
              Sven Rautenberg
    2. 1
      dedlfix
      1. 0
        Jörg Reinholz
    3. 0
      Sven Rautenberg
      1. 1
        dedlfix