Seite 1 von 1

Skript: Nummerierte Eintrittskarten erstellen

Verfasst: So 28. Feb 2016, 13:03
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

Re: Skript: Nummerierte Eintrittskarten erstellen

Verfasst: So 28. Feb 2016, 15:46
von Arran
Das ist ja ganz Toll, Julius.
Was müsste man ändern, damit es international verstanden wird (Englisch)?

Re: Skript: Nummerierte Eintrittskarten erstellen

Verfasst: So 28. Feb 2016, 16:46
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.

Re: Skript: Nummerierte Eintrittskarten erstellen

Verfasst: So 28. Feb 2016, 18:59
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.

Re: Skript: Nummerierte Eintrittskarten erstellen

Verfasst: Mi 2. Mär 2016, 15:01
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...

Re: Skript: Nummerierte Eintrittskarten erstellen

Verfasst: So 6. Mär 2016, 11:39
von Julius
Ich habe noch etwas praktisches zum Übersetzen Deutsch–Englisch im IT-Kontext entdeckt: Die Standardübersetzungen des GNOME-Projekts

Gruß
Julius