Dr. Arne JachensDr. Arne Jachens

php Library

LaTeXbrief

Keine Erläuterungen gefunden.

<?php
  session_start();
  include 'globals.php';
  include 'CMS.php';
  include 'DB.php';
  #define("DIR", "./tmp/");
  define("DIR", "./LaTeX/");
  $flag=3;
  $fname     = $_POST['fname'];
  $Name      = $_POST['Name'];
  $Strasse   = $_POST['Strasse'];
  $Ort       = $_POST['Ort'];
  $myref     = $_POST['myref'];
  if (empty($myref)){$myref=$_GET['myref'];}
  $ymail     = $_POST['ymail'];
  $yref      = $_POST['yref'];
  $Betreff   = $_POST['Betreff'];
  $Opening   = $_POST['Opening'];
  $Brief     = $_POST['Brief'];
  $Closing   = $_POST['Closing'];
  $Signature = $_POST['Signature'];
  $Anlage    = $_POST['Anlage']; 
  $counter=0;
  if (!empty($_POST['SB'])){
    $allMyref=explode(",",$myref);
    $counter=count($allMyref);
  }

  kopf($flag);
  echo "<h1>Briefpapier</h1>";
  if (empty($myref)){
    $myref=$_GET[MitglNr];
    $counter=0;
    echo "<p><u>Du kannst für externe Briefe eine Adresse angeben, 
          oder für interne die Mitgliedsnummer.</u></p>";
  }
  if ($counter==0){
    #einfacher Brief
    $latex=composeLaTeX($Name,$Strasse,$Ort,$myref,$ymail,$yref,$Betreff,$Opening,$Brief,$Closing,$Signature,$Anlage);
    if (strlen($latex)>150){
      writeLaTeX($latex,$fname,"");
    }
  }else{
    #Serienbrief
    for($i=0;$i<$counter;$i++){
      $thisFname=$fname."_".$i;
      $entry=getKarteikarte($allMyref[$i]);
      $Name=$entry[2]." ".$entry[3];
      $Strasse=$entry[7];
      $Ort=$entry[8]." ".$entry[9];
      $thisOpening=substr($Opening,0,strlen($Opening)-1)." ".$Name.",";
      $latex=composeLaTeX($Name,$Strasse,$Ort,$allMyref[$i],$ymail,$yref,$Betreff,$thisOpening,$Brief,$Closing,$Signature,$Anlage);
      writeLaTeX($latex,$thisFname,$i);
    }
  }
  editLaTeX($fname,$Name,$Strasse,$Ort,$myref,$ymail,$yref,$Betreff,$Opening,$Brief,$Closing,$Signature,$Anlage);

  fuss($flag);


#====================================================

function composeLaTeX($Name,$Strasse,$Ort,$myref,$ymail,$yref,$Betreff,$Opening,$Brief,$Closing,$Signature,$Anlage){
  if (!empty($myref)){
    $TEXmyref="\myref{".$myref."}\n";
  };
  if (!empty($yref)){
    $TEXyref="\yref{".$yref."}\n";
  };
  if (!empty($ymail)){
    $TEXymail="\ymail{".$ymail."}\n";
  };
  if (!empty($Anlage)){
    $TEXAnlage="\encl{".$Anlage."}\n";
  };
  if (empty($Signature)){
    $Signature = "\par\Signatur{".$Closing."}\n";
  }else{

    $Signature = "\par\Signatur{".$Closing."}\\\\[1cm] \n".$Signature."\n";
  };
  $head = "\documentclass[german,12pt]{BVSM}\n\pagestyle{headings}\n\begin{document}\n";
  $TEXAdresse = "\begin{letter}{".$Name."\\\\".$Strasse."\\\\".$Ort."}\n";
  $TEXBetreff = "\subject{".$Betreff."}\n";
  $TEXOpening = "\opening{".$Opening."}\n";
  $foot = "\end{letter}\n\end{document}\n";

  $latex = $head.$TEXAdresse.$TEXmyref.$TEXyref.$TEXymail.$TEXBetreff.$TEXOpening.$Brief."\n".$Signature.$Anlage.$foot;
  #$latex = stripcslashes($latex);
  #$latex=str_replace("\\\\","BS",$latex);
  #$latex=ereg_replace('\\\\','/',$latex);
  return $latex;
}

function writeLaTeX($latex,$fname,$i){
  $filename=DIR.$fname.".tex";
  $handle = fopen($filename, "w");
  fwrite($handle, $latex);
  fclose($handle);
  $toexecute="pdflatex $filename";
  $toexecute="cd ".DIR." && pdflatex ".$fname.".tex";
  exec($toexecute); 
  #get error messages
  $filename=DIR.$fname.".log";
  $toexecute="tail -5 ".$filename." > ".DIR."errors.txt";
  echo $toexecute;
  $filename=DIR."errors.txt";

  $errormessages=array();
  $handle = fopen($filename, "r");
  while(!feof($handle)){
    $i=$i+1;
    echo "<br>".$i." ".$line;
    #$line = fgets( $handle, 518 );
    #array_push($errormessages,$line);
    if ($i>1000){
      echo "logfile: read impossible!";exit(1);
    }
  }
  fclose($handle);
  $dim=count($errormessages);
  $errors="";
  for($i=$dim-10;$i<$dim;$dim++){
    $errors.=$errormessages[$i];
  }
  echo $errors;


  $rmname = "cd ".DIR." && rm ".$fname.".aux && rm ".$fname.".log && rm ".$fname.".out && rm ./.tex";
  exec($rmname); 
  echo "<a class='gross' href='".DIR.$fname.".pdf' target='pdf'>show PDF ".$i."</a><br>";
}


function editLaTeX($fname,$Name,$Strasse,$Ort,$myref,$ymail,$yref,$Betreff,$Opening,$Brief,$Closing,$Signature,$Anlage){
  echo "<form style='width:600px' action='brief.php' method='post'>";
  if (empty($fname)){
    $fname=date("Y-m-d",mktime(0, 0, 0, date("m")  , date("d"), date("Y"))); 
  }
  echo "<p>Dateiname:<br>
       <input name='fname' type='text' size='30' maxlength='50' 
       value='".$fname."'>.tex<br>
       <em>Bitte nimm etwas sugestives wie 'Bundestag_2004-03-17.tex' 
       für ein Anschreiben an den Bundestag.</em></p>";

  echo "<p>Adresse:<br>
       <input name='Name' type='text' size='50' maxlength='50' 
       value='".$Name."'><br>
       <input name='Strasse' type='text' size='50' maxlength='50' 
       value='".$Strasse."'><br>
       <input name='Ort' type='text' size='50' maxlength='50' 
       value='".$Ort."'><br>
       <em>Solltest du weitere Zeilen benötigen, funktioniert das 
       mit:</em> <tt>Name <strong>\\\\</strong> Firma</tt>.</p>";

  echo "<p>Mitgliedsnummer:<br>
        <input name='myref' type='text' size='50' maxlength='50' 
        value='".$myref."'><br>
        <em>Bei Schreiben an ein Mitglied sollte hier die entsprechende 
        Mitgliedsnummer eingetragen werden. Falls du mehrere durch Kommata getrennt angibst, wird hieraus ein Serienbrief.</em></p>";

  echo "<p>Ihr Schreiben vom:<br>
       <input name='ymail' type='text' size='50' maxlength='50' 
       value='".$ymail."'><br>
       <em>Bei Antwort auf ein Schreiben sollte hier das Datum des 
       Schreibens aufgeführt werden.</em></p>";

  echo "<p>Ihr Zeichen:<br>
       <input name='yref' type='text' size='50' maxlength='50' 
       value='".$yref."'><br>
       <em>Dies kann eine Kunden- oder Vereinsregisternummer sein.</em></p>";

  echo "<p>Betreff:<br>
       <input name='Betreff' type='text' size='50' maxlength='50' 
       value='".$Betreff."'><br>
       <em>Idealerweise nicht länger als eine Zeile.</em></p>";

  if (empty($Opening)){$Opening="Sehr geehrte Damen und Herrn,";}
  echo "<p>Opening:<br>
       <input name='Opening' type='text' size='50' maxlength='50' 
       value='".$Opening."'><br>
       <em>Im Zweifelsfall lieber siezen.</em></p>";

  if (empty($Brief)){
    $Brief="Hier kannst du deinen Brief schreiben.
Links im Menü findest du eine kurze Übersicht einiger LaTeX-Sonderzeichen.
Auch nach Abschicken hast du noch die Möglichkeit, den Text zu korrigieren.";
  }
  echo "<textarea name='Brief' cols='70' rows='20'>".$Brief."</textarea>";

  if (empty($Closing)){$Closing="Mit freundlichen Grüßen,";}
  echo "<p>Closing:<br>
       <input name='Closing' type='text' size='50' maxlength='50' 
       value='".$Closing."'></p>";

  echo "<p>Signatur:<br>
       <input name='Signature' type='text' size='50' maxlength='50' 
       value='".$Signature."'><br>
       <em>Wenn du den Brief 'nur' unterschreiben willst, kannst du dieses 
       Feld auch leer lassen.</em></p>";

  echo "<p>Anlage:<br>
       <input name='Anlage' type='text' size='50' maxlength='50' 
       value='".$Anlage."'><br>
       <em>Gegebenenfalls leer lassen.</em></p>";

  echo "<table width='100%'><tr><td><INPUT TYPE=submit VALUE='Erzeuge PDF'>
        </td><td align='right'><INPUT TYPE=submit name='SB' 
        VALUE='Serienbrief'></td></tr></table></form>";
  echo "<p><em>Bei Serienbriefen kann du dir zunächst per 
        <tt>Erzeuge PDF</tt> ein Resultat angucken und korrigieren 
        und erzeugst dann per <tt>Serienbrief</tt> alle Exemplare, 
        die du dann nacheinander runterladen und drucken kannst.</em></p>";
}

?>


Index of Library

1globals.php
2readData.php
3XML_readFile.php
4fraktal.php
5fileGrep.php
6XML_extractTag.php
7writeNamedData.php
8readXmlFile.php
9readNamedData.php
10XML_findAllElements.php
11readFromStdIn.php
12plotResult.php
13dtaus.php
14pdf.php
15fitData.php
16XML_extractElement.php
17readFilenames.php
18writeData.php
19genDTAUS.php
20closeFigures.php
21XML_extractAttribute.php
22enumerateFiles.php
23db.php
24polynominalFit.php
25LaTeXbrief.php
26hex2dec.php

Der gesamte Sourcecode darf gemäß GNU General Public License weiterverbreitet werden.