dart_pdf_optimal_page_fill version: 0.0.22

Published 2025-07-23

ruud

sdk | dart
repository | svn
platform | console
status | n/a
  • Readme
  • Changelog
  • Versions

Optimal page fill

Port of java appOptimalPageFillPdf application, a dart command-line application.

dart_hh

graph

Install

Run the command dart pub global activate --source path . in the work_dart/dart_pdf_optimal_page_fill/ folder to run the source version.

Run the dart pub global activate dart_pdf_optimal_page_fill --hosted-url http://pub.dev.huighaverlag.nl to install the hosted executable.

Run

Execute with dart_pdf_optimal_page_fill.

Remove

Remove with dart pub global deactivate dart_pdf_optimal_page_fill.

Algemeen

`Optimal Page Fill' is een Dart applicatie welke vanuit een lijst van PDF bestanden één of meerdere printvorm(en) kan genereren waarbij de in de lijst vermelde bestanden zo optimaal mogelijk over de uitvoer pagina's verdeeld worden.

Kenmerken

  • De te verwerken PDF bestanden moeten worden opgesomd in een tekst bestand, of een hele folder wordt verwerkt, of worden ingelezen vanuit stdin.
  • Een te verwerken PDF bestand mag uit niet meer dan 2 pagina's bestaan wanneer geen EZDZ optie is ingesteld.
  • Een te verwerken PDF bestand mag niet groter zijn dan het gewenste uitvoer formaat minus eventuele padding.
  • Voor een optimale verwerking bevatten de aangeboden PDF bestanden een trimbox.
  • Indien een PDF bestand één pagina bevat, dan wordt deze enkelzijdig geproduceerd.
  • Indien een PDF bestand twee pagina's bevat, dan wordt deze dubbelzijdig geproduceerd.
  • Indien een PDF pagina één of meerdere van de ondersteunde spotcolors bevat, dan zal er geen finishing voor deze pagina in de uitvoer gegenereerd worden. Alle finishing wordt dan verondersteld in de betreffende pagina aanwezig te zijn.
  • Aan het einde van de bestandsnaam van een PDF kan een verdubbelingsfactor worden aangegeven d.v.m. een aantal tussen rechte haken: poster_ABC[10].pdf zal resulteren in 10 geplaatste copieën, of een aantal voorafgegaan met een divisie: poster_ABC-10.pdf zal ook resulteren in 10 geplaatste copieën.
  • Er kan een tolerantie factor worden ingegeven waarmee de beschikbare ruimte voor een PDF kan worden overschreden om toch een plaatsing te kunnen forceren. Eventueel buiten de beschikbare ruimte vallend beeld zal in de gutter of padding van de print-vorm terecht komen. De factor is een percentage van de beschikbare ruimte. De standaard waarde is 0 (geen tolerantie).
  • Het programma heeft de mogelijkheid om te plaatsen PDF bestanden te roteren voor een optimale vulling.
  • Maatvoering van programma argumenten is in millimeters.
  • Het formaat (breedte × hoogte) van de uitvoer bestanden wordt kleiner gemaakt wanneer de inhoud van de pagina's minder ruimte in beslag neemt. Dit is om materiaal te besparen.
  • Elke uitvoer vorm bestaat uit een print-PDF, een SVG-snij bestand en een PDF-plaatsing-overzicht (rapport).
  • Wanneer de optie 'Dry-run' is ingesteld, worden er alleen overzichten aangemaakt, en geen daadwerkelijke print- en snij-bestanden. Zo kan snel gezien worden of de plaatsing van de blokken eventueel nog moet worden bijgesteld. Let op: eventueel aanwezige uitvoer bestanden worden wel verwijderd.
  • Na uitvoering zullen de gebruikte parameters worden opgeslagen in een *.properties tekst bestand voor latere referentie, of om de run nogmaals te kunnen herhalen met de zelfde waardes.
  • Naast de (standaard) command-line interface, is er ook een grafische interface ingebouwd.
  • Aanklikbare layout previews in de GUI console.
  • Materiaal formaten worden uit een databestand ingelezen. Het staat de gebruiker vrij om deze lijst aan te passen.
  • Meerdere print pagina's met dezelfde inhoud kunnen worden gecombineerd tot één bestand (n x printen).
  • Gebruikt de tools MuPDF of ImageMagick voor het genereren van PDF-previews (MuPDF heeft de voorkeur). Het programma kijkt of deze tools aanwezig zijn.
  • Wanneer in de bron PDF bestanden paginas tekst-annotaties bevatten met de titel 'filename' en als inhoud de echte bestandsnaam, dan zullen deze bestandsnamen getoond worden in de block overview log bestanden.
  • Wanneer geen omschrijving (Description) gegeven wordt, dan gebruiken we de laatste foldernaam van de input als omschrijving.
  • Sleep een *.properties file vanuit je bestandsmanager (Finder, Dolphin, etc.) naar het Input veld om de configuratie te laden.
  • Printchecklist (PDF) bevat tweemaal dezelfde inhoud, zodat met 1x printen twee lijsten worden geproduceerd.
  • Blockoverview (PDF) van de laatste pagina geeft aan waar deze vóór het printen afgesneden kan worden om materiaal te besparen indien er van de plaat minstens 25% materiaal ongebruikt blijft.
  • Zet de hoogte (height) op 0 (nul) als het materiaal van een rol betreft. Er zullen dan automagisch pagina's van maximaal 3 meter hoog gemaakt worden.
  • Wanneer Allow rotation aan staat, dan zal voor de laatste pagina van een run de combinatie met en zonder Prefer rotation uitgeprobeerd worden, waarna automagisch de instelling gekozen wordt die de minste verticale ruimte in beslag zal nemen.
  • Optie No padding at left/right maakt links en rechts een minimale padding van 5mm en zet de verticale registratie punten uit. Hierdoor krijg je bijv. bij een ingestelde padding van 12mm, 14mm extra ruimte in het horizontale bereik.
  • In het Materiaal verbruik overzicht is het materiaal gebruik berekend na vermenigvuldiging met het aantal keer printen van een bestand.
  • Met de optie Prefer width over height kan de sortering worden beïnvloed waardoor de layout plaats vind op hoogte of breedte van de pagina's.
  • Met de optie Aggressive node merge worden vrije verticale nodes samengevoegd middels een ruime tolerantie.
  • Met de opties Gutter en Bleed beide op 0 (nul) worden er geen rechthoeken in de SVG snijfile gezet maar aaneensluitende lijnen.
  • Wanneer de optie Gutter op 0 (nul) staat en Bleed op een waarde groter dan 0, worden de PDF's koud tegen elkaar gezet, maar krijgen PDF's op de buitenrand van het drukvel toch nog een bleed toegewezen. Voorwaarde is wel dat alle te plaatsen PDF's hetzelfde trimbox formaat moeten hebben.
  • Cut-marks on outside of sheet zet snijtekens in de buiten-padding voor het geval de snijplotter niet gebruikt gaat worden. Allow rotation, Prefer rotation, Optimize last page en Aggressive node merging zullen worden uitgezet om te voorkomen dat er onmogelijke snijbewerkingen kunnen worden gegenereerd.
  • Handle stroke only verwerkt alleen paden met een 'stroke'. Overgeslagen worden paden met 'stroke-and-fill' en 'fill'. Wanneer de optie niet aangevinkt staat, worden alle paden verwerkt ongeacht hun stroke/fill.
  • Handle strokes outside bleed-box wanneer geselecteerd, worden alle paden die volledig buiten de bleed-box liggen verwerkt. Voordat deze optie was toegevoegd werden alle paden verwerkt ongeacht of ze binnen of buiten de bleed-box lagen. Nu moet dit expliciet worden aangevinkt.
  • Show cut-layer in PDF toegevoegd om de Snij-file layer in de output PDF file(s) aan of uit te zetten.
  • 2022-08-22 'Blokken overzichten' in de folder overviews-blocks is nu opgesplitst in twee mappen (overviews-blocks-extra). Eén met en één zonder de lijst van pagina plaatsingen (kan soms schelen met printen van de overzichten).
  • 2022-10-11 SpotColorReader::patchX now takes a horizontal offset of the mediabox into account.
  • 2023-10-16 Add waste cuts to SVG optie toegevoegd welke in de 'waste' rondom de pagina, op de plek van de registratie stippen, het materiaal insnijd om het makkelijker te kunnen opbreken voor de afval container.
  • 2023-12-05 Barcode at bottom-right only, titel zegt het al.

\newpage

Markeringen

De input bestandsnamen kunnen de volgende markeringen bevatten:

| markering | afhandeling                           |
| :-------- | :------------------------------------ |
| EZ        | pagina's worden enkelzijdig verwerkt  |
| DZ        | pagina's worden dubbelzijdig verwerkt |
| FIXED     | pagina's worden niet geroteerd        |
| [n] of -n | pagina verdubbeling                   |

De EZ, DZ en FIXED markeringen zijn case-sensitive (het moeten hoofdletters zijn), en moeten worden afgebakend met underscores (_).

De pagina verdubbeling moet aan het einde van de bestandsnaam staan.

Voorbeelden

  • 505636-2 mm geschuimd wit PVC_foamtape_EZ_GF_7323-10.pdf,

    enkelzijdig, verdubbeling van 10.

  • 505636-2 mm geschuimd wit PVC_foamtape_EZ_GF_7323_[2].pdf,

    enkelzijdig, verdubbeling van 2.

  • Eiki-koffie-7.pdf,

    enkelzijdig, verdubbeling van 7.

  • Eiki-koffie-bonen.pdf,

    enkelzijdig, verdubbeling van 1.

  • 507621-3 mm geschuimd wit PVC_buigen_DZ_FIXED_VOORRAAD_GF_47723-50.pdf,

    dubbelzijdig, pagina's niet roteren, verdubbeling van 50.

\newpage

Applicatie

Er zijn twee applicatie binaries (Java jar bestanden) beschikbaar. Het verschil zit in de gebruikte PDFLIB versie, dit in verband met de beschikbare licenties daarvan:

| jar | pdflib |
| :-- | -----: |
| appOptimalPageFillPdf-osx.jar | 8.0.2 |
| appOptimalPageFillPdf-linux.jar | 9.0.2 |

De juiste PDFLIB software versie moet vooraf geïnstalleerd zijn.

Configuratie

Naast de applicatie jar staat een XML-bestand: appOptimalPageFillPdf.config.xml. In dit bestand kan gedetaileerde applicatie logging worden ingesteld en tevens de locatie van de gebruikte MuPDF of ImageMagick applicaties. De MuPDF of ImageMagick applicaties worden gebruikt om previews en thumbnails van PDF bestanden te maken.

De MuPDF of ImageMagick software moet vooraf geïnstalleerd zijn.

Noot: oudere versies van MuPDF hebben in plaats van mutool, de applicatie mudraw, vandaar de twee aparte configuratie blokken.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>

  <!-- logging -->
  <entry key="debug:com.hh.util.logging.LogManager">false</entry>
  <entry key="debug:com.hh.util.configuration.Configuration">false</entry>

  <!-- imagemagick linux -->
  <entry key="ImageMagick.linux.Path">/usr/bin/</entry>
  <entry key="ImageMagick.linux.Executable">convert</entry>
  <entry key="ImageMagick.linux.Environment">
    MAGICK_HOME=/usr/bin
    DYLD_LIBRARY_PATH=/usr/bin
    PATH=/usr/bin:/bin:/usr/sbin:/sbin:/opt/local/bin</entry>

  <!-- imagemagick mac -->
  <entry key="ImageMagick.mac.Path">/opt/local/bin/</entry>
  <entry key="ImageMagick.mac.Executable">convert</entry>
  <entry key="ImageMagick.mac.Environment">
    MAGICK_HOME=/opt/local/bin
    DYLD_LIBRARY_PATH=/opt/local/bin
    PATH=/usr/bin:/bin:/usr/sbin:/sbin:/opt/local/bin</entry>

  <!-- mutool linux -->
  <entry key="MuTool.linux.Path">/usr/bin/</entry>
  <entry key="MuTool.linux.Executable">mutool</entry>
  <entry key="MuTool.linux.Environment">
    MAGICK_HOME=/usr/bin
    DYLD_LIBRARY_PATH=/usr/bin
    PATH=/usr/bin:/bin:/usr/sbin:/sbin:/opt/local/bin</entry>

  <!-- mutool mac -->
  <entry key="MuTool.mac.Path">/opt/local/bin/</entry>
  <entry key="MuTool.mac.Executable">mutool</entry>
  <entry key="MuTool.mac.Environment">
    MAGICK_HOME=/opt/local/bin
    DYLD_LIBRARY_PATH=/opt/local/bin
    PATH=/usr/bin:/bin:/usr/sbin:/sbin:/opt/local/bin</entry>

  <!-- mudraw linux -->
  <entry key="MuDraw.linux.Path">/usr/bin/</entry>
  <entry key="MuDraw.linux.Executable">mudraw</entry>
  <entry key="MuDraw.linux.Environment">
    MAGICK_HOME=/usr/bin
    DYLD_LIBRARY_PATH=/usr/bin
    PATH=/usr/bin:/bin:/usr/sbin:/sbin:/opt/local/bin</entry>

  <!-- mudraw mac -->
  <entry key="MuDraw.mac.Path">/opt/local/bin/</entry>
  <entry key="MuDraw.mac.Executable">mudraw</entry>
  <entry key="MuDraw.mac.Environment">
    MAGICK_HOME=/opt/local/bin
    DYLD_LIBRARY_PATH=/opt/local/bin
    PATH=/usr/bin:/bin:/usr/sbin:/sbin:/opt/local/bin</entry>

</properties>

Installeren kan voor Linux als volgt:

sudo apt-get install imagemagick mupdf mupdf-tools

en op OSX via brew:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" \
	< /dev/null 2> /dev/null brew install imagemagick mupdf-tools

Als je het juiste pad te weten wil komen waar de MuPDF of ImageMagick binaries staan, dan kun je in een console typen:

which mutool
which convert

\newpage

Fonts

Deze applicatie gebruikt het font Arial.ttf en moet zijn geïnstalleerd in de (verborgen) folder .fonts (in de home folder van de gebruiker die dit programma opstart).

Materialen

Materiaal formaten kunnen worden ingevuld in het bestand appOptimalPageFillPdf.materials.

Houd de volgende formattering aan: naam, breedtexhoogte.

4A0, 1682x2378
2A0, 1189x1682
A0, 841x1189
ROL, 2500x2500, 2490x2490
ROL, 1620x3020, 1580x3000
2100x1600 POSTERMAT, 2080x1580
2150x1600 DISPLAYSCREEN, 2130x1580
100x1200 EEGOLF, 1580x1180
1400x1000 PVC, 1380x980
1560x3050 VIKUPOR, 1540x3030
2440x1220 FOAM, 2420x1200
1020x720 xL, 1000x700
A9, 37x52
A10, 26x37

Applicatie status

De status (state) van de applicatie (ingevulde velden, venster grootte en locatie) wordt in twee bestanden opgeslagen in de home folder van de gebruiker:

  • appOptimalPageFillPdf.console
  • appOptimalPageFillPdf.dialog

Deze bestanden kunnen eventueel verwijderd worden door de gebruiker zodat alle instellingen een reset krijgen.

\newpage

Uitvoeren

Omdat Optimal Page Fill een command-line applicatie is, wordt deze in een terminal venster opgestart:

java -jar appOptimalPageFillPdf-linux.jar

of

java -classpath target/appOptimalPageFillPdf-linux.jar \
	com.hh.optimalpagefillpdf.OptimalPageFillPdf

Stoppen

Na het uitvoeren van de applicatie wordt er een status waarde geretourneerd welke in een shell-script kan worden gebruikt om de afsluitstatus te bepalen.

# de `echo` zal de waarde `1` afdrukken
java -jar appOptimalPageFillPdf-linux.jar \
	--help
echo $?
| waarde | status            |
| ------ | ----------------- |
| 0      | NORMAL            |
| 1      | HELP              |
| 2      | PDFLIB_ERROR      |
| 3      | INVALID_PARAMETER |
| 4      | INVALID_DATA      |
| 5      | INVALID_CONFIG    |

\newpage

Help

Wanneer de applicatie zonder argumenten of met de optie --help wordt opgestart zal een uitleg-tekst geprint worden:

Default timezone: Europe/Amsterdam
Default locale: en_US
Default charset: UTF-8
OptimalPageFillPdf, Build 2023-12-05 - 14:31:28, Revision 23271.
Copyright 2017-2023 HuigHaverlag BV. All Rights Reserved.

input: can not read from stdin

usage: java -jar appOptimalPageFillPdf-linux.jar <options>
    --addwastecuts                   add waste cuts to svg for easy
                                     disposal
    --aggressivenodemerging          use a wide tolerance when merging
                                     empty nodes vertically
 -b,--bleed <arg>                    printing that goes beyond the block
                                     edge (mm)
    --barcode                        output a unique barcode
    --barcodebottomrightonly         barcode at bottom-right only
 -c,--configuration <file>           configuration file
    --cutmarksoutside                cut-marks on outside of sheet
 -d,--density <arg>                  thumbnail density (dpi)
    --development                    development mode
    --dryrun                         do not generate pdf files
    --duplication                    allow file duplication when a
                                     filename ends with [n].pdf
    --ezdz                           allow single- and double-sided page
                                     detection
 -f,--finishing <spot-color>         finishing
 -g,--gutter <arg>                   spacing between blocks (mm)
    --gui                            show graphical user interface
 -h,--height <arg>                   target paper height (mm)
    --handlestrokeonly               handle only path strokes (not fill)
    --handlestrokesoutsidebleedbox   handle strokes that are outside of
                                     the bleed box
    --help                           show application help
 -i,--input <file>                   text file with pdf filenames
 -j,--jobdescription <text>          job description
 -m,--marker <file>                  page orientation marker (pdf)
    --material <text>                material description
    --nopaddingleftright             no padding at left/right
 -o,--output <folder>                output folder
    --optimizelastpage               optimize the last page for minimal
                                     material usage
 -p,--padding <arg>                  padding around the output layout (mm)
    --preferrotation                 prefer rotated blocks
    --preferwidthoverheight          when sorting nodes, prefer width over
                                     height
    --previews                       generate previews
    --printduplication               allow print duplication for similar
                                     output pages
    --registration                   output any cut file registration
                                     marks (dots)
    --registrationhorizontal         output horizontal cut file
                                     registration marks (dots)
    --registrationvertical           output vertical cut file registration
                                     marks (dots)
    --rotation                       allow block rotation
 -t,--tolerance <arg>                tolerance used when matching block
                                     dimensions (%)
    --verbose                        verbose logging
 -w,--width <arg>                    target paper width (mm)
    --withsnijlaag                   output snij-laag into output pdf
                                     files

Spot-colors:
  0: Trimbox
  1: Thru-cut
  2: EOT
  3: Crease
  4: Route
  5: Kisscut
  6: Vcut
  7: Nothing

Spot-color aliases:
  0: Pot
  1: Router
  2: Stans
  3: Ril

Exit levels:
  0: NORMAL
  1: HELP
  2: PDFLIB_ERROR
  3: INVALID_PARAMETER
  4: INVALID_DATA
  5: INVALID_CONFIG

\newpage

Opties

--addwastecuts

Optioneel. Waste-cuts layer in de uitvoer SVG file(s) aan- of uitzetten welke het mogelijk maakt om in de 'waste' rondom de pagina, op de plek van de registratie stippen, het materiaal in te snijden om het makkelijker te kunnen opbreken voor de afval container.

Standaard waarde: geen (geen waste-cuts layer).

# gebruik --addwastecuts
java -jar appOptimalPageFillPdf-linux.jar \
	--addwastecuts

\newpage

--aggressivenodemerging

Optioneel. Aggressief verticale vrije nodes samenvoegen.

Standaard waarde: false.

# gebruik --aggressivenodemerging
java -jar appOptimalPageFillPdf-linux.jar \
	--aggressivenodemerging

\newpage

-b,--bleed <arg>

Optioneel. Afloop van de geplaatste PDF elementen.

Standaard waarde: 3 (millimeter).

# gebruik -b
java -jar appOptimalPageFillPdf-linux.jar \
	-b 5

# gebruik --bleed
java -jar appOptimalPageFillPdf-linux.jar \
	--bleed 5

\newpage

--barcode

Optioneel. De mogelijkheid tot plaatsen van een unieke barcode per uitvoer vorm.

Standaard waarde: geen (geen barcode toevoegen).

# gebruik --barcode
java -jar appOptimalPageFillPdf-linux.jar \
	--barcode

\newpage

-c,--configuration <file>

Optioneel. Pad naar een door het programma bewaard configuratie bestand (*.properties). Wanneer opgegeven, wordt dit bestand geladen als standaard programma parameters. Eventuele extra argumenten op de command-line zullen de waardes uit dit configuratie bestand overschrijven.

Standaard waarde: geen (niets laden).

# gebruik -c
java -jar appOptimalPageFillPdf-linux.jar \
	-c ./Test/vorige_run.properties

# gebruik --configuration
java -jar appOptimalPageFillPdf-linux.jar \
	--configuration ./Test/vorige_run.properties

\newpage

--cutmarksoutside

Optioneel. Snijtekens in de buiten-padding voor het geval de snijplotter niet gebruikt gaat worden. Allow rotation, Prefer rotation, Optimize last page en Aggressive node merging zullen worden uitgezet om te voorkomen dat er onmogelijke snijbewerkingen kunnen worden gegenereerd.

Standaard waarde: geen (geen snijlijnen).

# gebruik --cutmarksoutside
java -jar appOptimalPageFillPdf-linux.jar \
	--cutmarksoutside

\newpage

-d,--density <arg>

Optioneel. De density (DPI) waarde waarmee van de uitvoer vormen voorvertoningen gemaakt worden.

Standaard waarde: 72 (DPI).

# gebruik -d
java -jar appOptimalPageFillPdf-linux.jar \
	-d 96

# gebruik --density
java -jar appOptimalPageFillPdf-linux.jar \
	--density 96

\newpage

--development

Optioneel. 'Development mode'. Voor ontwikkelaars. Er zullen uitgebreide voorvertoningen worden gegenereerd.

Standaard waarde: geen (geen uitgebreide voorvertoningen).

# gebruik --development
java -jar appOptimalPageFillPdf-linux.jar \
	--development

\newpage

--dryrun

Optioneel. 'Dry-run mode'. Genereer geen uitvoer PDF, SVG en preview bestanden. Bestaande bestanden worden echter wel verwijderd. Layout previews en blok-overzichten worden wel aangemaakt.

Standaard waarde: geen (geen dry-run, alle uitvoer bestanden worden gemaakt).

# gebruik --dryrun
java -jar appOptimalPageFillPdf-linux.jar \
	--dryrun

\newpage

--duplication

Optioneel. Verdubbeling-detectie inschakelen. Aan het einde van de bestandsnaam van een PDF kan een verdubbelingsfactor worden aangegeven d.v.m. een aantal tussen rechte haken: poster_ABC[10].pdf zal resulteren in 10 geplaatste copieën, of een aantal voorafgegaan met een divisie: poster_ABC-10.pdf zal ook resulteren in 10 geplaatste copieën.

Standaard waarde: geen (verdubbeling-detectie uitgeschakeld).

# gebruik --duplication
java -jar appOptimalPageFillPdf-linux.jar \
	--duplication

\newpage

--ezdz

Optioneel. Enkelzijdig/dubbelzijdig-detectie inschakelen. Wanneer ezdz niet is ingeschakeld mag een PDF niet meer dan twee pagina's bevatten. Wanneer ingeschakeld wordt een bestand met EZ of DZ in de naam overeenkomend behandeld als enkel- of dubbelzijdig en mag dat bestand uit meer dan twee pagina's bestaan.

Standaard waarde: geen (ezdz-detectie uitgeschakeld).

# gebruik --ezdz
java -jar appOptimalPageFillPdf-linux.jar \
	--ezdz

\newpage

-f,--finishing <spot-color>

Optioneel. De finishing bepaald de te gebruiken spotcolor welke in elke SVG-file gezet wordt, waardoor de snij-plotter een bepaald snij-mes of afwerking selecteerd.

Standaard waarde: trimbox

Indien de waarde nothing gekozen is, dan zal er geen finishing rond de trimbox van de pagina gezet worden. All finishings worden dan veronderstelt in de PDF pagina aanwezig te zijn.

# gebruik -f
java -jar appOptimalPageFillPdf-linux.jar \
	-f eot

# gebruik --finishing
java -jar appOptimalPageFillPdf-linux.jar \
	--finishing eot
|   | finishing |
| - | --------- |
| 0 | Trimbox   |
| 1 | Thru-cut  |
| 2 | EOT       |
| 3 | Crease    |
| 4 | Route     |
| 5 | Kisscut   |
| 6 | Vcut      |
| 7 | Nothing   |

\newpage

-g,--gutter <arg>

Optioneel. De afstand tussen de geplaatste PDF pagina's op een uitvoer vorm.

Binnen deze vrijgehouden ruimte wordt de eventuele bleed (afloop) van geplaatste PDF elementen gezet.

Standaard waarde: 6 (millimeter).

# gebruik -g
java -jar appOptimalPageFillPdf-linux.jar \
	-g 11

# gebruik --gutter
java -jar appOptimalPageFillPdf-linux.jar \
	--gutter 11

\newpage

--gui

Optioneel. Start grafische gebruikers interface. Eventuele extra argumenten op de command-line zullen in het dialoog venster worden ingevuld.

# gebruik --gui
java -jar appOptimalPageFillPdf-linux.jar \
	--gui

Wanneer de grafische gebruikers interface gestart wordt op een OSX machine, dan sluit het dialoog venster zodra een run gestart wordt. Dit in verband met een bug in de OSX JNI interface. Het is aanbevolen om in dit geval de applicatie vanuit een terminal venster te starten, zodat de programma uitvoer op stdout en stderr te zien is.

\newpage

--handlestrokeonly

Optioneel. 'Handle stroke only'. Verwerk alleen snij-paden met een 'stroke', skip 'stroke-and-fill' en 'fill'.

Standaard waarde: geen (geen handlestrokeonly, alle snij-paden worden verwerkt).

# gebruik --handlestrokeonly
java -jar appOptimalPageFillPdf-linux.jar \
	--handlestrokeonly

\newpage

--handlestrokesoutsidebleedbox

Optioneel. 'Handle strokes outside the bleed box'. Verwerk snij-paden die buiten de bleed-box liggen.

Standaard waarde: geen (geen handlestrokesoutsidebleedbox, alleen snij-paden die volledig binnen de bleed-box liggen worden verwerkt).

# gebruik --handlestrokesoutsidebleedbox
java -jar appOptimalPageFillPdf-linux.jar \
	--handlestrokesoutsidebleedbox

\newpage

-h,--height <arg>

Optioneel. Hoogte van de uitvoer vorm in millimeters.

Standaard waarde: 297.

# gebruik -h
java -jar appOptimalPageFillPdf-linux.jar \
	-h 700

# gebruik --height
java -jar appOptimalPageFillPdf-linux.jar \
	--height 700

\newpage

--help

Optioneel. Laat applicatie help-tekst zien.

# gebruik niets
java -jar appOptimalPageFillPdf-linux.jar

# gebruik --help
java -jar appOptimalPageFillPdf-linux.jar \
	--help

\newpage

-i,--input <file>

Optioneel. Tekst bestand met te verwerken PDF bestandsnamen. Indien niet opgegeven, dan wordt een stream van bestandsnamen via stdin verwacht.

# gebruik -i
java -jar appOptimalPageFillPdf-linux.jar \
	-i ./target/Test/files.txt

# gebruik --input
java -jar appOptimalPageFillPdf-linux.jar \
	--input ./target/Test/files.txt

# lees van `stdin`
find /Users/Shared/Darwin/FileSystem/Klant/ -name "wk*.pdf" \
	! -path "*.v*.pdf" \
	! -path "*poster*.pdf" \
	! -path "*banner*.pdf" \
	| sort | java -jar target/appOptimalPageFillPdf-0.0.1-SNAPSHOT.jar

# combinatie van technieken
find /Users/Shared/Darwin/FileSystem/Klant/ -name "wk*.pdf" \
	! -path "*.v*.pdf" \
	! -path "*poster*.pdf" \
	! -path "*banner*.pdf" \
	| sort > ./target/Test/files.txt

java -jar target/appOptimalPageFillPdf-0.0.1-SNAPSHOT.jar \
	--input ./target/Test/files.txt

Het voordeel van een fysiek invoer bestand is dat je later kunt terugvinden welke bestanden er exact verwerkt zijn. Daar staat tegenover dat na het inlezen via stdin er geen tijdelijk bestand hoeft te worden opgeruimd indien deze applicatie onderdeel is van een groter geheel (een workflow bijvoorbeeld).

\newpage

-j,--jobdescription <text>

Optioneel. Omschrijvende tekst voor deze programma run (een ordernummer bijvoorbeeld). Gebruik bij spaties in de tekst dubbele aanhalingstekens.

Standaard waarde: niets (geen omschrijving).

# gebruik -j
java -jar appOptimalPageFillPdf-linux.jar \
	-j 12376

# gebruik --jobdescription
java -jar appOptimalPageFillPdf-linux.jar \
	--jobdescription "Dit is order 12376, deel 1"

\newpage

-m,--marker <file>

Optioneel. Additioneel PDF element welke op elke rechter-onderhoek geplaatst wordt om de pagina oriëntatie (visueel) te kunnen bepalen.

Standaard waarde: geen (plaats niets).

# gebruik -m
java -jar appOptimalPageFillPdf-linux.jar \
	-m ./data/Spot.pdf

# gebruik --marker
java -jar appOptimalPageFillPdf-linux.jar \
	--marker ./data/Spot.pdf

\newpage

--material <text>

Optioneel. Selecteer het te gebruiken materiaal. De parameter moet een exacte naam zijn uit appOptimalPageFillPdf.materials.

# gebruik --material
java -jar appOptimalPageFillPdf-linux.jar \
	--material "4 POSTERMAT, 2100x1600, 2095x1595"

\newpage

--nopaddingleftright

Optioneel. Geen padding links en rechts.

Standaard waarde: aan (wel padding links en rechts).

# gebruik --nopaddingleftright
java -jar appOptimalPageFillPdf-linux.jar \
	--nopaddingleftright

\newpage

-o,--output <folder>

Optioneel. Geef de uitvoer folder aan. In deze folder worden de resulterende bestanden geschreven.

Standaard waarde: ./output.

# gebruik -o
java -jar appOptimalPageFillPdf-linux.jar \
	-o ./target/Test

# gebruik --output
java -jar appOptimalPageFillPdf-linux.jar \
	--output ./target/Test

\newpage

--optimizelastpage

Optioneel. De laaste pagina optimaliseren zodat er zo min mogelijk materiaal gebruikt wordt. Door middel van het uittesten van alle rotatie variaties wordt de optimale layout bepaald.

Standaard waarde: uit (geen optimalisatie).

# gebruik --optimizelastpage
java -jar appOptimalPageFillPdf-linux.jar \
	--optimizelastpage

\newpage

-p,--padding <arg>

Optioneel. De afstand die vrijgehouden wordt tussen de inhoud en de verschillende randen van een uitvoer vorm.

In deze vrijgehouden ruimte worden, indien de optie registration is gebruikt, registratie stippen voor de snij-plotter geplaatst. Wanneer deze ruimte te klein is opgegeven (kleiner dan 5 mm) worden de registratie stippen niet geplaatst.

Standaard waarde: 12 (millimeter).

# gebruik -p
java -jar appOptimalPageFillPdf-linux.jar \
	-p 22

# gebruik --padding
java -jar appOptimalPageFillPdf-linux.jar \
	--padding 22

\newpage

--preferrotation

Optioneel. Wanneer --preferrotation samen met --rotation is aangegeven, dan wordt de voorkeur gegeven aan geroteerde blokken.

Standaard waarde: geen (voorkeur is niet-geroteerde blokken).

# gebruik --preferrotation
java -jar appOptimalPageFillPdf-linux.jar \
	--preferrotation

\newpage

--preferwidthoverheight

Optioneel. Bij het sorteren van nodes gaat de breedte boven de hoogte.

Standaard waarde: geen (voorkeur is hoogte boven de breedte).

# gebruik --preferwidthoverheight
java -jar appOptimalPageFillPdf-linux.jar \
	--preferwidthoverheight

\newpage

--previews

Optioneel. Genereer previews van de gegenereerde PDF bestanden..

Standaard waarde: geen (geen previews genereren).

# gebruik --previews
java -jar appOptimalPageFillPdf-linux.jar \
	--previews

\newpage

--printduplication

Optioneel. Wanneer meerdere print pagina's de zelfde inhoud hebben, dan worden deze maar één maal gegenereerd. De bestandsnaam krijgt dan de aanduiding (n x printen).

Standaard waarde: geen (duplicaten detectie uitgeschakeld).

# gebruik --printduplication
java -jar appOptimalPageFillPdf-linux.jar \
	--printduplication

\newpage

--registration

Optioneel. Plaats, in de met padding vrijgehouden ruimte, registratie-stippen voor de snij-plotter. Wanneer deze ruimte te klein is opgegeven (kleiner dan 5 mm) worden de registratie stippen niet geplaatst.

Standaard waarde: geen (geen registratie stippen).

# gebruik --registration
java -jar appOptimalPageFillPdf-linux.jar \
	--registration

\newpage

--registrationhorizontal

Optioneel. Plaats, in de met padding vrijgehouden ruimte, horizontale registratie-stippen voor de snij-plotter. Wanneer deze ruimte te klein is opgegeven (kleiner dan 5 mm) worden de registratie stippen niet geplaatst.

Standaard waarde: geen (geen horizontale registratie stippen).

# gebruik --registrationhorizontal
java -jar appOptimalPageFillPdf-linux.jar \
	--registrationhorizontal

\newpage

--registrationvertical

Optioneel. Plaats, in de met padding vrijgehouden ruimte, verticale registratie-stippen voor de snij-plotter. Wanneer deze ruimte te klein is opgegeven (kleiner dan 5 mm) worden de registratie stippen niet geplaatst.

Standaard waarde: geen (geen verticale registratie stippen).

# gebruik --registrationvertical
java -jar appOptimalPageFillPdf-linux.jar \
	--registrationvertical

\newpage

--rotation

Optioneel. De mogelijkheid tot het roteren van te plaatsen PDF bestanden inschakelen voor een optimale vulling.

Standaard waarde: geen (geen rotatie toestaan).

# gebruik --rotation
java -jar appOptimalPageFillPdf-linux.jar \
	--rotation

\newpage

-t,--tolerance <arg>

Optioneel. Tolerantie factor waarmee de beschikbare ruimte voor een PDF kan worden overschreden om toch een plaatsing te kunnen forceren. Eventueel buiten de beschikbare ruimte vallend beeld zal in de gutter of padding van de print-vorm terecht komen. De factor is een percentage van de beschikbare ruimte.

Standaard waarde: 0.0 (percentage, geen tolerantie).

# gebruik -t
java -jar appOptimalPageFillPdf-linux.jar \
	-t 0.01

# gebruik --tolerance
java -jar appOptimalPageFillPdf-linux.jar \
	--tolerance 0.01

\newpage

--verbose

Optioneel. Uitgebreide berichtgeving (logging) inschakelen. Voor ontwikkelaars.

Standaard waarde: geen (geen uitgebreide berichtgeving).

# gebruik --verbose
java -jar appOptimalPageFillPdf-linux.jar \
	--verbose

\newpage

--withsnijlaag

Optioneel. Snij-laag layer in de uitvoer PDF file(s) aan- of uitzetten.

Standaard waarde: geen (geen snij-laag layer).

# gebruik --withsnijlaag
java -jar appOptimalPageFillPdf-linux.jar \
	--withsnijlaag

\newpage

-w,--width <arg>

Optioneel. Breedte van de uitvoer vorm in millimeters.

Standaard waarde: 210.

# gebruik -w
java -jar appOptimalPageFillPdf-linux.jar \
	-w 1000

# gebruik --width
java -jar appOptimalPageFillPdf-linux.jar \
	--width 1000

\newpage

Voorbeeld

Command-line

java -jar target/appOptimalPageFillPdf-linux.jar \
	--input ./target/Test/files.txt \
	--output ./target/Test \
	--marker ./data/Stip.pdf \
	--jobdescription "Omschrijving van order 12376" \
	--finishing trimbox \
	--width 1000 \
	--height 700 \
	--padding 12 \
	--gutter 6 \
	--bleed 3 \
	--tolerance 0.5 \
	--density 96 \
	--previews \
	--rotation \
	--registration \
	--registrationhorizontal \
	--registrationvertical \
	--duplication \
	--barcode \
	--ezdz
  • verwerk bestanden opgegeven in files.txt
  • output naar folder `./target/Test'
  • plaats orientatie marker './data/Stip.pdf'
  • definieer een order omschrijving
  • snij instructie: trimboxen
  • uitvoer materiaal breedte: 1 meter
  • uitvoer materiaal hoogte: 70 centimeter
  • 12 millimeter rand vrijhouden op uitvoer materiaal
  • 6 millimeter tussen de geplaatste PDF elementen
  • 3 millimeter afloop van de geplaatste PDF elementen
  • enige tolerantie mogelijk bij moeilijk te plaatsen elementen
  • 96 DPI voorvertoningen
  • previews van de gegenereerde PDF bestanden worden gemaakt
  • roteren van te plaatsen elementen is toegestaan
  • snij-plotter registratie markeringen plaatsen
  • in bestandsnamen geplaatste duplicatie aanduidingen verwerken
  • per uitvoer vorm zal een unieke barcode worden gegenereerd
  • enkel- en dubbelzijdige aanduidingen (EZ, DZ) in bestandsnamen worden verwerkt.

\newpage

Print vorm

Print vorm (PDF).

\newpage

Snij vorm

Snij vorm (SVG).

\newpage

Print checklist

Print checklist (PDF).

\newpage

Rapport

Vorm rapport (PDF).

\newpage

Overzicht

Plaatsing overzicht (in rapport).

\newpage

Grafische gebruikers interface

GUI.

\newpage

Console van grafische gebruikers interface

GUI.

  • Clickable page previews.
  • Hints wanneer blokken door een aangegeven tolerantie factor toch passend gemaakt zijn.

Changelog

0.0.22 - 2025-07-23

Changed

  • Version bump from 0.0.21 to 0.0.22 (test -> 1.26.3 (was 1.26.2)).

0.0.21 - 2025-05-22

Changed

  • Version bump from 0.0.20 to 0.0.21 (lints -> 6.0.0 (was 5.1.1)).

0.0.20 - 2025-05-22

Changed

  • Version bump from 0.0.19 to 0.0.20 (test -> 1.26.2 (was 1.26.1)).

0.0.19 - 2025-05-20

Changed

  • Version bump from 0.0.18 to 0.0.19 (test -> 1.26.1 (was 1.26.0)).

0.0.18 - 2025-05-13

Changed

  • Version bump from 0.0.17 to 0.0.18 (test -> 1.26.0 (was 1.25.15)).

0.0.17 - 2025-04-02

Changed

  • Version bump from 0.0.16 to 0.0.17 (test -> 1.25.15 (was 1.25.14)).

0.0.16 - 2025-02-17

Changed

  • pkg_optimal_page_fill.

0.0.15 - 2024-12-23

Changed

  • Version bump from 0.0.14 to 0.0.15 (test -> 1.25.14 (was 1.25.13)).

0.0.14 - 2024-12-23

Changed

  • Version bump from 0.0.13 to 0.0.14 (lints -> 5.1.1 (was 5.1.0)).

0.0.13 - 2024-12-19

Changed

  • Version bump from 0.0.12 to 0.0.13 (Support Apple silicon (arm64)).

0.0.12 - 2024-12-18

Changed

  • Version bump from 0.0.11 to 0.0.12 (test -> 1.25.13 (was 1.25.12)).

0.0.11 - 2024-12-12

Changed

  • Version bump from 0.0.10 to 0.0.11 (lints -> 5.1.0 (was 5.0.0)).

0.0.10 - 2024-12-05

Changed

  • Version bump from 0.0.9 to 0.0.10 (test -> 1.25.12 (was 1.25.11)).

0.0.9 - 2024-12-04

Changed

  • Version bump from 0.0.8 to 0.0.9 (test -> 1.25.11 (was 1.25.10)).

0.0.8 - 2024-12-03

Changed

  • Version bump from 0.0.7 to 0.0.8 (test -> 1.25.10 (was 1.25.9)).

0.0.7 - 2024-11-27

Changed

  • Version bump from 0.0.6 to 0.0.7 (test -> 1.25.9 (was 1.25.8)).

0.0.6 - 2024-08-22

Changed

  • Version bump from 0.0.5 to 0.0.6 (SDK update 3.5.1).

0.0.5 - 2024-08-08

Changed

  • Version bump from 0.0.4 to 0.0.5.

0.0.4 - 2024-07-17

Changed

  • Recompile for optimizations from pkg_pdfio and pkg_optimal_page_fill.

0.0.3 - 2024-04-05

Changed

  • Cropped screenshot.png.

0.0.2 - 2024-03-27

Changed

  • Version bump from 0.0.1 to 0.0.2 (Make pure dart).

0.0.1 - 2024-03-04

  • Initial version.

0.0.22

2025-07-23

[exe]

download

0.0.21

2025-05-22

[exe]

download

0.0.19

2025-05-20

[exe]

download

0.0.18

2025-05-13

[exe]

download

0.0.17

2025-04-02

[exe]

download

0.0.16

2025-02-17 download

0.0.15

2024-12-23 download

0.0.13

2024-12-19 download

0.0.12

2024-12-18 download

0.0.11

2024-12-12 download

0.0.7

2024-11-27 download

0.0.6

2024-08-22 download

0.0.5

2024-08-08 download

0.0.4

2024-07-17 download

0.0.3

2024-04-05 download

0.0.2

2024-03-27 download

0.0.1

2024-03-04 download