Skript: Nummerierte Eintrittskarten erstellen

Hier findest du Anleitungen und kleine Tipps und Tricks zu Scribus
Antworten
Benutzeravatar
Julius
Beiträge: 351
Registriert: Di 10. Feb 2015, 23:54
Wohnort: Emsland

Skript: Nummerierte Eintrittskarten erstellen

Beitrag von Julius »

Moin!

Dieses Skript erzeugt nummerierte Karten, z.B. Eintrittskarten.
kartennummerierung.png
Der Code (befindet sich neben Beispieldaten auch im Anhang):

Code: Alles auswählen

#!/usr/bin/env Python
# -*- coding: utf-8 -*-
import scribus

#################################
# Einstellungen:

# Anzahl an Karten:
anzahl = 48
# Anzahl der Karten pro Seite:
anzahl_pro_seite = 16
# Anzahl der Spalten:
spalten = 2
# Versatz der rechten Karte von der linken, bzw. von der unteren zur Oberen
abstand_x = 90.89
abstand_y = 33.5975
# Absatzstile für die Textbox mit der Nummer:
stil = "Nummer"
# Musterseite mit dem Layout der Karte:
musterseite = "Karten"

##################################
# Beginn Skript:

# Informationen über das Textfeld beschaffen:
x,y = scribus.getPosition()
breite, hoehe = scribus.getSize()
zaehler = int(scribus.getText())
anzahl_stellen = len(scribus.getText())

# Verschiedene Variablen festlegen...
anzahl_pro_spalte = anzahl_pro_seite / spalten
x_neu = x
y_neu = y + abstand_y
zaehler_seite = 0
zaehler_spalte = 1

while zaehler != anzahl:
  while zaehler_seite < anzahl_pro_seite:
    while zaehler_spalte < anzahl_pro_spalte:
      zaehler = zaehler + 1
      zaehler_spalte = zaehler_spalte + 1
      rahmen = scribus.createText(x_neu, y_neu, breite, hoehe)
      scribus.setText(str(zaehler).zfill(anzahl_stellen), rahmen)
      scribus.setStyle(stil, rahmen)
      y_neu = y_neu + abstand_y
      if zaehler == anzahl:
        break
    if zaehler == anzahl:
      break
    x_neu = x_neu + abstand_x
    y_neu = y
    zaehler_seite = zaehler_seite + zaehler_spalte
    zaehler_spalte = 0
  if zaehler < anzahl:
    zaehler_seite = 0
    zaehler_spalte = 0
    scribus.newPage(-1, musterseite)
    scribus.gotoPage(scribus.pageCount())
    y_neu = y
    x_neu = x
Das Vorgehen:
  1. Dokument anlegen: Stil für die Nummer namens „Nummer“ und eine Musterseite mit dem Namen „Karten“ (Namen können im Skript geändert werden)
  2. Skript anpassen: Im ersten Abschnitt die Variablen auf die gewünschten Werte setzen
  3. Skript ausführen: Den ersten Textrahmen mit der gewünschten Anfangsnummer und der gewünschten Anzahl an Stellen auffüllen, z.B. 00023 und diesen markieren (wichtig!), dann erst das Skript ausführen.
    textrahmen-ausgewaehlt.png
  4. Das Dokument speichern, exportieren, drucken und (am besten mit einer Schneidevorrichtung) zuschneiden ;-)
Zum Erzeugen gleicher Abstände der Schneidemarkierungen: Zuerst äußeren Markierungen einfügen, diese sperren (Schloss-Symbol in Eigenschaften-Palette), dann die „inneren“ Marikierungen einfügen, alle auswählen und dann per Ausrichten und Verteilen-Werkzeug (unter Fenster) auf gleichen vertikalen / horizontalen Abstand bringen (In der angezeigten Warnung gesperrte Objekte ignorieren auswählen)

Lizenz:
CC0
Dieses Werk bzw. dieser Inhalt ist als gemeinfrei lizenziert.
(komplett freie Verwendung ohne Quellennachweis)[/size]

Gruß
Julius
Dateianhänge
kartennummerierung.zip
(1.61 MiB) 860-mal heruntergeladen
Zuletzt geändert von Julius am So 28. Feb 2016, 16:02, insgesamt 1-mal geändert.
Scribus 1.4.7 und 1.5.4 (Entwicklungszweig) unter Ubuntu 18.04
Um Mithilfe beim Deutsch-sprachigen Scribus-Wiki wird gebeten!

Die aktuellen Versionen von Scribus:
Bild
Benutzeravatar
Arran
Beiträge: 417
Registriert: Sa 31. Jan 2015, 12:27
Wohnort: Isle of Arran, Schottland
Kontaktdaten:

Re: Skript: Nummerierte Eintrittskarten erstellen

Beitrag von Arran »

Das ist ja ganz Toll, Julius.
Was müsste man ändern, damit es international verstanden wird (Englisch)?
Ein Cicero muss nicht zwangsläufig 12 Punkte haben, wie ein Waisenkind auch nicht immer im Heim leben muss.
Bild
Kubuntu 14.04-3, Scribus-Version 1.4.3.svn
Benutzeravatar
Julius
Beiträge: 351
Registriert: Di 10. Feb 2015, 23:54
Wohnort: Emsland

Re: Skript: Nummerierte Eintrittskarten erstellen

Beitrag von Julius »

Hallo Arran,

schön, dass dir das Skript gefällt!

Eigentlich müssen im Script nur die Variablen und Kommentare übersetzt werden. Das Beispieldokument habe ich nur angepasst und nicht komplett übersetzt...

Code: Alles auswählen

#!/usr/bin/env Python
# -*- coding: utf-8 -*-
import scribus

#################################
# settings:

# number of tickets:
number = 48
# number of tickets per page:
number_of_tickets_per_page = 16
# number of columns:
columns = 2
# offset between right and left ticket, offset between upper and lower ticket
x_offset = 90.89
y_offset = 33.5975
# paragraph style for textframe with the ticket number:
style = "ticket-number"
# masterpage containing the layout of the ticket:
masterpage = "ticket-layout"

##################################
# beginning of Script:

# Get informations about text frame:
x,y = scribus.getPosition()
width, height = scribus.getSize()
counter = int(scribus.getText())
number_of_digits = len(scribus.getText())

# set miscellaneous variables...
number_per_column = number_of_tickets_per_page / columns
x_new = x
y_new = y + y_offset
counter_page = 0
counter_column = 1

# write numbers into dokument
while counter != number:
  while counter_page < number_of_tickets_per_page:
    while counter_column < number_per_column:
      counter = counter + 1
      counter_column = counter_column + 1
      frame = scribus.createText(x_new, y_new, width, height)
      scribus.setText(str(counter).zfill(number_of_digits), frame)
      scribus.setStyle(style, frame)
      y_new = y_new + y_offset
      if counter == number:
        break
    if counter == number:
      break
    x_new = x_new + x_offset
    y_new = y
    counter_page = counter_page + counter_column
    counter_column = 0
  if counter < number:
    counter_page = 0
    counter_column = 0
    scribus.newPage(-1, masterpage)
    scribus.gotoPage(scribus.pageCount())
    y_new = y
    x_new = x
Dein Englisch ist bestimmt besser als meins, wirf mal einen Blick drüber, ob es verständlich ist (das Skript an sich funktioniert).

Ich verwende bei einfachen Skripten meist Deutsch, damit jemand, der Deutsch spricht und sich nicht so gut mit dem Programmieren auskennt, leicht die eigentlichen Befehle von Variablen unterscheiden kann. Zumindest fand ich das ganz am Anfang einfacher... Für die internationale Verbreitung ist das natürlich enorm hinderlich.
Bestimmt wäre es auch noch praktisch, wenn man Platznummern (z.B. Reihe G, Platz 12) zuweisen könnte, aber dafür fehlt mir noch irgendwie eine Idee, wie man „dem Skript klarmacht“, welche Plätze zu vergeben sind. Vielleicht brauche ich dafür auch eine grafische Oberfläche.

Gruß
Julius

Achja:
CC0
Dieses Werk bzw. dieser Inhalt ist als gemeinfrei lizenziert.
Dateianhänge
numbering-tickets.zip
(1.61 MiB) 780-mal heruntergeladen
Scribus 1.4.7 und 1.5.4 (Entwicklungszweig) unter Ubuntu 18.04
Um Mithilfe beim Deutsch-sprachigen Scribus-Wiki wird gebeten!

Die aktuellen Versionen von Scribus:
Bild
Benutzeravatar
Arran
Beiträge: 417
Registriert: Sa 31. Jan 2015, 12:27
Wohnort: Isle of Arran, Schottland
Kontaktdaten:

Re: Skript: Nummerierte Eintrittskarten erstellen

Beitrag von Arran »

Hallo Julius. Mit dem habe ich schon geliebäugelt. Nur V meine Englisch-Kenntnisse in Sachen
Fachwörte im Codieren sind sicher keinen Deut besser als Deine, eher ganz im Gegenteil. Ich gebe es zu, meine Kenntnisse sind in den späteren 80er Jahren mit Basic stehen geblieben. Und einfach so ein englisches Wort zu nehmen, das in der Umgangssprache dem deutschen Entspricht wird wohl in den meisten Fällen nicht stimmen.
Ein Cicero muss nicht zwangsläufig 12 Punkte haben, wie ein Waisenkind auch nicht immer im Heim leben muss.
Bild
Kubuntu 14.04-3, Scribus-Version 1.4.3.svn
Benutzeravatar
Julius
Beiträge: 351
Registriert: Di 10. Feb 2015, 23:54
Wohnort: Emsland

Re: Skript: Nummerierte Eintrittskarten erstellen

Beitrag von Julius »

Arran hat geschrieben:Und einfach so ein englisches Wort zu nehmen, das in der Umgangssprache dem deutschen Entspricht wird wohl in den meisten Fällen nicht stimmen.
Natürlich nicht. Ich glaube zwar, dass meine Übersetzungen besser sind als ich sie selbst einschätze, aber ich traue mir selbst nicht und unterstelle mir immer, dass ich Denglisch schreibe...
Ich überprüfe das in diesen Fällen so, dass ich das Englische bei Google übersetzen lasse und dann schaue, ob ungefähr das wieder herauskommt, was ich ausdrücken wollte.

Was sagt ein Sachse, wenn er in New York einen Weihnachtsbaum kaufen möchte? – A tenschen¹ please!

Gruß
Julius

¹ einfach mal aussprechen...
Scribus 1.4.7 und 1.5.4 (Entwicklungszweig) unter Ubuntu 18.04
Um Mithilfe beim Deutsch-sprachigen Scribus-Wiki wird gebeten!

Die aktuellen Versionen von Scribus:
Bild
Benutzeravatar
Julius
Beiträge: 351
Registriert: Di 10. Feb 2015, 23:54
Wohnort: Emsland

Re: Skript: Nummerierte Eintrittskarten erstellen

Beitrag von Julius »

Ich habe noch etwas praktisches zum Übersetzen Deutsch–Englisch im IT-Kontext entdeckt: Die Standardübersetzungen des GNOME-Projekts

Gruß
Julius
Scribus 1.4.7 und 1.5.4 (Entwicklungszweig) unter Ubuntu 18.04
Um Mithilfe beim Deutsch-sprachigen Scribus-Wiki wird gebeten!

Die aktuellen Versionen von Scribus:
Bild
Antworten