ich habe mir ein kleines PHP-Script geschrieben, das eine Scribus-Datei (im Beispiel template.sla) einliest und bestimmte Platzhalter (z.B. wird ;:bp: durch Joachim Gauck ersetzt) im Dokument durch Werte ersetzt, die im Beispiel direkt im Programm stehen, aber auch aus einer Datenbank oder von einer Eingabe in ein HTML-Formular stammen könnten.
Der Code:
Code: Alles auswählen
<?php
// Array mit den Platzhaltern und den einzusetzenden Werten (Syntax beachten!):
$replace = array(
"j" => "2015",
"bk" => "Angela Merkel",
"bp" => "Joachim Gauck",
"am" => "Frank-Walter Steinmeier",
"t" => date("d.m.Y H:i"),
"zt" => "\neine neue Zeile\n\teine neue Zeile + Tabulator",
"sz" => "€&\"\\äÜß?");
/* HTTP-Header für Ausgabe als reinen Text */
//header("Content-type: text/plain; charset=utf-8");
/* HTTP-Header für Ausgabe als HTML */
//header("Content-type: text/html; charset=utf-8");
/* (zwei) HTTP-Header für das Anbieten zum Download als sla-Datei */
header("Content-type: application/vnd.scribus");
header("Content-Disposition: attachment; filename=template_".time().".sla");
/* Einlesen der Scribus-Datei */
$datei = fopen("template.sla","r");
/* Einlesen der HTML-Datei */
//$datei = fopen("template.html","r");
while(!feof($datei))
{
$dateiinhalt .= fgets($datei);
}
fclose($datei);
foreach($replace as $key => $value)
{
$plh = ";:".$key.":";
$rex = htmlspecialchars($value);
$dateiinhalt = str_replace($plh, $rex, $dateiinhalt);
}
echo $dateiinhalt;
die();
?>
Im Anhang befindet sich eine ZIP-Datei mit allen relevanten Dateien; zum Testen des Exporters die Dateien a2s.php und template.sla im gleichen Verzeichnis auf einem Webserver mit PHP-Interpreter speichern und a2s.php aufrufen.
Ein paar Anmerkungen noch:
- auch das Einfügen von Bildern ist möglich, dafür müsste in der template.sla aus <PAGEOBJECT […] PFILE="beispielbild.jpg" […]> ein <PAGEOBJECT […] PFILE=";:i1:" […]> werden (->Text-Editor, z.B. Notepad++) und dann in das Ersetzungs-Array "i1" => "gewünschtes_Bild.jpg" zusätzlich eingetragen werden (Pfade zum Bild sind relativ, können aber auch absolut sein; das Bild wird nicht eingebettet!)
- man kann auch andere Text-basierte Formate (LaTeX, TeX, reiner Text, XML) bearbeiten, ein HTML-Beispiel liefere ich mit
- auf eine „Live-Demo“ verzichte ich, da gibt es nichts Spektakuläres zu sehen
- Stile können auch angewendet sein, da nur der Text ersetzt wird (wichtig: den kompletten Platzhalter mit einem Stil formatieren, sonst funktioniert das Ersetzen nicht)
- natürlich könnte man das auch mit einem Scribus-Plugin lösen, aber da ich 1.) eine serverseitige Lösung brauchte, die 2.) nicht auf Scribus beschränkt ist und 3.) ich (noch?) kein Python kann , habe ich PHP benutzt...
Fallstricke:
- NULL-Werte im sla-Dokument -> Scribus bricht das Parsen ab (NULL-Wert signalisiert Ende der Datei)
- unsichtbare Steuerzeichen in der sla-Datei verhindern Ersetzen -> sla-Datei in Text-Editor laden und betreffenden PLatzhalter noch einmal ohne Scribus eintippen und speichern
Viel Spaß damit!
Julius
______________________________ (damit der weiteren Verwendung keinerlei Probleme im Weg stehen )
edit: Ich habe diesen Post bei den Tutorien reingestellt (ok?), weil es meiner Meinung nach kein Scribus-Script im engeren Sinne ist...