Benutzer-Werkzeuge

Webseiten-Werkzeuge


ressourcen:scripte

Dies ist eine alte Version des Dokuments!


Scripte

In Scribus lassen sich mit in der Programmiersprache Python geschriebenen Scripten zahlreiche Aktionen automatisieren. Einige dieser Scripte sollen auf dieser Seite gesammelt werden.

Wenn sie eines davon benutzen möchten, laden sie es herunter und öffnen es in Scribus über den Menüpunkt ScriptScript ausführen…

Scribus 1.5-Dokumente in 1.4.x öffnen

In Scribus 1.4.x ausgeführt, ermöglicht dieses Kompatibilitätsscript das Öffnen einfacher Dokumente, die mit 1.5 erstellt wurden.

1.5zu1.4.py
#!/usr/bin/env Python
# -*- coding: utf-8 -*-
import scribus, re
 
slafile = scribus.fileDialog("Bitte eine Scribus 1.5.x Datei auswählen.", "Scribus-Dateien (*.sla)")
filecontent = open(slafile, "r").read()
filecontent = filecontent.replace('<SCRIBUSUTF8NEW Version="1.5.', '<SCRIBUSUTF8NEW Version="1.4.')
filecontent = filecontent.replace('<DefaultStyle/>', '')
filecontent = filecontent.replace('</StoryText>', '')
filecontent = filecontent.replace('<StoryText>', '')
filecontent = filecontent.replace('</Cell>', ' ')
filecontent = filecontent.replace('</TableData>', '')
filecontent = filecontent.replace('PTYPE="12"', 'PTYPE="7"')
filecontent = filecontent.replace('PTYPE="16"', 'PTYPE="4"')
# quick and dirty workaround for setting PRINTABLE attribute to 1 if not already set:
filecontent = filecontent.replace('CLIPEDIT="1" PWIDTH=', 'CLIPEDIT="1" PRINTABLE="1" PWIDTH=')
filecontent = filecontent.replace('CLIPEDIT="0" PWIDTH=', 'CLIPEDIT="0" PRINTABLE="1" PWIDTH=')
filecontent = re.sub(r"(<DefaultStyle[^>].*?>)", "", filecontent)
filecontent = re.sub(r"(<TableData[^>].*?>)", "", filecontent)
filecontent = re.sub(r"(<Cell [^>].*?>)", "", filecontent)
 
newfile = slafile.replace(".sla", "_1-4.sla")
if os.path.isfile(newfile):
 scribus.messageBox("Fehler: Datei bereits vorhanden", "Die Datei „"+newfile+"“ ist bereits vorhanden.\nDas Script wurde abgebrochen; Geben sie einen anderes Suffix an oder verschieben sie die Datei.")
else:
 ofile = open(newfile, "w").write(filecontent)
 scribus.openDoc(newfile)
 
 anzahl = scribus.pageCount()
 
 for seite in range(1,anzahl+1):
  scribus.gotoPage(seite)
  objects = scribus.getAllObjects()
  for x in objects:
    width,height = scribus.getSize(x)
    scribus.sizeObject(100,100,x)
    scribus.sizeObject(width,height,x)
    scribus.setLineShade(100, x)

Mit Musterseiten hat das Script Probleme (der Scripter erlaubt nicht das Bearbeiten von Musterseiten), diese müssen ggf. von Hand nachbearbeitet werden (Objektgröße ändern, damit Texte und Bilder angezeigt werden). Von Tabellen bleibt nur der beinhaltende Text übrig, Bézierkurven aus 1.5 werden in 1.4 nicht angezeigt und der Fußnotentext bei Fußnoten wird nicht übernommen.

ZIP-Datei (1,4MB) mit Script und einem Beispieldokument.

PDF-Batch Export

Dieses Script öffnet und exportiert eine Auswahl von Scribus-Dateien als PDFs.

Wird das Script ausgeführt, erscheint ein Datei-Auswahl-Dialog, in dem per gedrückter [Strg] bzw. [Ctrl]-Taste mehrere Dateien ausgewählt werden können. Anschließend werden die Dateien mit einem angehängten Suffix dateiname.sla.pdf im gleichen Ordner wie die Ausgangsdateien abgelegt.

Wichtig: Bereits existierende PDF-Dateien mit dem gleichen Namen werden ohne vorherige Nachfrage überschrieben!

Im Script selbst sind noch zwei Änderungen vorgesehen:

  1. Wird die Zeile dateien = QtGui.QFileDialog.getOpenFileNames(None, 'Scribus Dateien ausw'+u„\u00E4“+'hlen',„“, „Scribus-Dateien (*.sla *.sla.gz);;Alle Dateien (*)“) per vorangestelltem # auskommentiert und das Kommentarzeichen vor der nächsten Zeile entfernt, erscheint keine Dateiabfrage mehr, sondern die zu exportierenden Dateien werden als Liste in der Zeile darunter festgelegt (siehe Beispiele; absolute Pfade verwenden!)
  2. Wird die Zeile pdf.file = str(datei)+'.pdf' auskommentiert und das Kommentarzeichen vor der nächsten Zeile entfernt, werden die PDFs statt dateiname.sla.pdf unter dateiname.pdf abgespeichert.
pdf-export.py
#!/usr/bin/env Python
# -*- coding: utf-8 -*-
import scribus
import re
from PyQt4 import QtGui
 
dateien = QtGui.QFileDialog.getOpenFileNames(None, 'Scribus Dateien ausw'+u"\u00E4"+'hlen',"", "Scribus-Dateien (*.sla *.sla.gz);;Alle Dateien (*)")
#dateien = ['/home/julius/Schreibtisch/Scribus-Experimente/testdokument1.sla', '/home/julius/Schreibtisch/Scribus-Experimente/testdatei.sla', '/home/julius/Schreibtisch/Scribus-Experimente/test.sla']
 
counter = 0
 
for datei in dateien:
    scribus.messagebarText("Bearbeite Datei „"+datei+"“")
    scribus.openDoc(datei)
    pdf = scribus.PDFfile()
    pdf.file = str(datei)+'.pdf'
    #pdf.file = re.sub(r"(.sla)?(.sla)$", ".pdf", str(datei))
    pdf.save()
    scribus.closeDoc()
    counter = counter + 1
 
if counter > 0:
  scribus.messageBox('Export beendet', 'PDF-Export erfolgreich beendet!')
else:
  scribus.messageBox('PDF-Export', 'Keine Dateien ausgewählt!')

Fehlende Bilder finden

Dieses Skript findet fehlende Bilder und verlinkt sie.
https://github.com/aoloe/scribus-script-repository/tree/master/images-missing-relink

Weitere Skripte...

… finden sich jeweils in den entsprechenden Kategorien im Scribus-Wiki und im deutschen Forum.

ressourcen/scripte.1457282007.txt.gz · Zuletzt geändert: 2016/09/29 16:32 (Externe Bearbeitung)