Quick Fix configuration essentials: String comparison operators and page selection expressions
General considerations
QuickFixes are optimized for speed. for example, all changes are applied to a PDF file in the form of an "incremental update operation" – changes are written to the end of PDF file in a manner that relevant existing data is logically (but not 'physically') overwritten or removed. While the PDF may become slightly larger, it does not need to be completely rewritten – a significant time saver especially for larger PDFs.
Furthermore, the QuickFix engine executes one incremental save operation per QuickFix step in a Process Plan, and combines QuickFixes of the same type – e.g renaming several spot colors or manipulating different page geometry boxes on different page ranges – into a single operation. As a consequence – whenever more than QuickFix feature is to be applied to a PDF file – it is advised to combine all needed QuickFix features into one QuickFix step inside a Process Plan, instead of having several QuickFix based Process Plan steps.
The order of execution always follows the order in which QuickFix processing instructions are defined in a QuickFix. This can be important for example for renaming spot colors – specific instructions could be defined first, and following instructions could then rename remaining spot colors in a more generic fashion.
Important configuration options
Many QuickFixes use two types of configuration options that in many cases are highly relevant for efficient execution.
String comparison operators
For some QuickFix features – for example, spot color renaming – flexible string handling is very important. For this purpose, the following string operators are offered in a number of QuickFix configurations:
- “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"
These string comparison operators work in the same way as the (similarly named) comparison operators in checks and Fixups.
Page selection
For some QuickFix features – for example, adjusting page geometry boxes – it is very important to have a flexible option to determine which pages to process and which pages not to process (e.g. only the first two and the last pages, or only even pages, or every 4th page, etc.). For this purpose, a flexible syntax is used to express the desired groups of pages or page ranges. This is the same syntax as used for split schemes (--splitscheme=<expression>
) in the "Split and merge" feature – see Split and merge for details.
Split Scheme
A split scheme expression may be a number with an asterisk "*" or a more complex string. If it is a number with an asterisk "*" it creates groups of pages where each group has the defined number of pages. E.g. if the expression is "3*" it would group the PDF into groups of 3 pages.
Expressions
Type |
Syntax |
Example |
|
---|---|---|---|
Simple expression |
number[-number] |
1-5 |
Page 1 to 5: [1,2,3,4,5] |
5-1 |
Page 5 to 1: [5,4,3,2,1] |
||
8 |
Only page 8 |
||
-1 |
Last page |
||
-3--1 |
Last 3 pages: [n, n-1, n-2] |
||
-1--3 |
Last 3 pages in reverse order: [n-2, n-1, n] |
||
-1-3 |
Last n - 2 pages in reverse order: [n, n-1, ... ,3] |
||
*2(2) |
[2][4][6]... |
||
Simple expression with Simple Range |
number[-number]_ number[-number] |
1-2_-2--1 |
First and last 2 pages: [1,2,n- 1,n] |
1-2_-2--1,$ |
First and last 2 pages [1,2,n-1,n] and remaining inner pages [3, ... ,n-2] |
||
1_1_1_1 |
4 times page 1: [1,1,1,1] |
Type |
Syntax |
Example |
|
---|---|---|---|
Multipage expression |
even_pages even |
even |
All even pages (same as *2(2)) |
uneven_pages uneven odd |
uneven |
All uneven pages (same as *2(1)) |
|
Package number* [(start_page)] |
5* |
Packages of 5 pages |
|
5*(2) |
Packages of 5 pages, starting with page 2 |
||
Intervall *number [(start_page)] |
*5 |
Every 5th page |
|
*5(2) |
Every 5th page, starting with page 2 |
||
*5(-20) |
Every 5th page of the last 20 pages of a document (totally 4 pages) |
||
Simple expression list |
simple_expression {"," simple_expression} [ "," joker ] |
1-5,8,-3--1 |
1 PDFs with page 1-5, page 8 and the last 3 pages of the input PDF |
1-5,8,-1--3 |
1 PDFs with page 1-5, page 8 and the last 3 pages of the input PDF, but the last 3 pages in reverse order |
||
5*(2) |
Packages of 5 pages, starting with page 2 |
||
*5(2) |
Every 5th page, starting with page 2 |
||
*5(-20) |
Every 5th page of the last 20 pages of a document (totally 4 pages) |
Joker
<expression>,$
Can be combined with other expressions (has to be the last item in a list) in order to group all pages that are not part of any other expression into their own group.
Example
1-5,8,-3--1,$
would create groups of pages with pages 1-5, page 8, the last 3 pages and the rest of the pages of the PDF.