Quick Fix Konfigurationsgrundlagen: String Vergleichsoperatoren und Seitenauswahl-Ausdrücke

Generale Überlegungen

QuickFixes sind optimiert für Geschwindigkeit. Zum Beispiel werden alle Änderungen durchgeführt auf eine PDF-Datei in Form eines "inkrementalen Speichervorganges" – Änderungen umgesetzt und dabei an das Ende der Datei geschrieben, Verweise bleiben relativ vorhanden und werden nicht 'physikalisch' überschieben oder entfernt. Während die PDF leicht größer werden könnte, ist es nicht erforderlich, diese komlett neu zu schreiben – diese ist eine entschiedene Zeiteinsparung besonders bei sehr großen PDFs. 

Darüberhinaus, führt die QuickFix-Engine eine inkrementelle Speicheroption pro QuickFix Schritt im Prozessplan aus und kombiniert QuickFixes des selben Types – z.B umbennen von einzelnen Sonderfarben oder verändert unterschiedliche Seitenrahmen in unterschiedlichen Seitenbereichen – mit einem Aufruf. Als Folge darauf – wann immer mehrere QuickFix Features angewendet werden auf eine PDF-Datei – ist es ratsam all erfolderlichen QuickFix Features in einen QuickFix Schritt innerhalb des Prozessplans zu kombinieren, als zahlreiche QuickFix basierte Prozessplanschritte zu verwenden.

Die Reihenfolge der Ausführung folgt immer der Reihenfolge wie die QuickFix Verarbeitungsschritte definiert sind im QuickFix selbst. Das kann sehr wichtig sein zum Beispiel bei Umbenennung von Sonderfarben – besondere Anweisungen könnten zuerst definiert werden und darauf folgende Anweisungen könten die verbleibenden Sonderfarben auf übliche Art und Weise anders benennen.

Wichtige Konfigurationsoptionen

Viele QuickFixes verwenden zwei Typen der Konfigurationsoptionen, diese sind in vielen Fällen sehr entscheidend für eine wirksme Ausführung.

String-Vergleichsoperatoren

Für einige QuickFix Features – zum Beispiel, Sonderfarben umbenennen – ist flexibles handling von Zeichenketten sehr wichtig. Aus diesem Grund werden folgende String-Operatoren angeboten innerhalb der QuickFix-Konfigurationen:

  • “noop”
  • "regex"
  • "begins_with"
  • "contains"
  • "does_not_begin_with"
  • "does_not_contain"
  • "does_not_end_with"
  • "ends_with"
  • "equal_to"
  • "is_contained_in"
  • "is_not_contained_in"
  • "unequal_to"

Diese Vergleichsoperatoren funktionieren genauso, wie die (ähnlich benamten) Vergleichsoperatoren in Prüfungen und Korrekturen.

Seitenauswahl

Für einige QuickFix Features – zum Beispiel, Seitenrahmen anpassen – ist es sehr wichtig eine flexible Option zu haben, um zu bestimmen welche Seiten verarbeitet werden sollen und welche nicht (z.B. ausschließlich die ersten zwei und die letzten, oder nur gerade Seiten, oder jede 4. Seite, usw.). Für diesen Zweck wird eine flexible Syntax verwendet um die Seiten oder Seitenbereiche auszudrücken. Dies ist die selbe Syntax wie verwendet im Split Schema (--splitscheme=<expression>) für das "Split and merge" Feature – siehe Split and merge für weitere Details.

Split Schema

Ein Split Schema Ausdruck kann eine Zahl sein mit einem Sternchen "*" oder einer noch komplexeren Zeichenkette. Wenn es sich um eine Zahl handelt mit einem Sternchen "*" erzeugt es Gruppen von Seiten wobei jede Gruppe eine bestimmte Anzahl von Seiten hat. Z.B. der Ausdruck "3*" würde PDFs erzeugen von je immer 3 Seiten.

Ausdrücke
Type
Syntax
Beispiel

Einfache
Ausdrücke
number[-number]
1-5
Seite 1 bis 5:
[1,2,3,4,5]


5-1
Seite 5 bis 1:
[5,4,3,2,1]


8
Ausschließlich Seite 8


-1
Letzte Seite


-3--1
Letzte 3 Seiten:
[n, n-1, n-2]


-1--3
Letzte 3 Seiten
in umgekehrter
Reihenfolge: [n-2,
n-1, n]


-1-3
Letzte n - 2
Seiten in
umgekehrter Reihenfolge:
[n, n-1, ... ,3]


*2(2)
[2][4][6]...
Einfache
Ausdrücke
mit einfachen
Bereich
number[-number]_
number[-number]
1-2_-2--1
Erste und letzte 2
Seiten: [1,2,n-
1,n]


1-2_-2--1,$
Erste und letzte 2 Seiten
[1,2,n-1,n]
und restliche
Seiten dazwischen
[3, ... ,n-2]


1_1_1_1
4 mal Seiten
1: [1,1,1,1]
Type
Syntax
Beispiel

Mehrseiten- ausdrücke
even_pages
even
even
Alle geraden Seiten
(same as
*2(2))

uneven_pages
uneven
odd
uneven
Alle ungeraden
Seiten (same
as *2(1))

Package
number*
[(start_page)]
5*
Pakete zu je 5
Seiten


5*(2)
Pakete zu je 5
Seiten, angefangen
bei Seite 2

Intervall
*number
[(start_page)]
*5
Jede 5. Seite


*5(2)
Jede 5. Seite, angefangen
bei Seite 2


*5(-20)
Jede 5. Seite
der letzten
20 Seiten vom Dokument
(insgesamt 4
Seiten)
Einfache Liste von
Ausdrücken
simple_expression
{","
simple_expression}
[ "," joker ]
1-5,8,-3--1
1 PDF mit
Seite 1-5, Seite
8 und die letzten
3 Seiten der Eingabe-PDF


1-5,8,-1--3
1 PDF mit
Seite 1-5, Seite
8 und die letzten
3 Seiten der Eingabe-PDF, aber die letzten 3 Seiten in umgekehrter Reihenfolge


5*(2)
Pakete zu 5 Seiten, angefangen
bei Seite 2


*5(2)
Jede 5. Seite, angefangen
bei Seite 2


*5(-20)
Jede 5. Seite
der letzten
20 Seiten von einem PDF
(insgesamt 4
Seiten)
Joker
<expression>,$

Kann kombiniert werden mit anderen Ausdrücken (sollte jedoch immer am Ende stehen innerhalb der Aufzählung) zum bestimmen der Gruppe aller Seiten, die nicht bereits eines anderen Ausdrucks definierter eigener Gruppe sind.

Example

1-5,8,-3--1,$

Dies würde somit zunächst eine Gruppe erzeugen der Seiten 1-5, als nächstes getrennt Seite 8, eine neue Gruppe der letzten 3 Seiten, sowie den übrigen Rest verbliebener Seiten von der PDF.