PM Preflight
PM Preflight został stworzony z myślą o ułatwieniu procesu sprawdzania dostarczonych do produkcji
plików oraz ich wizualizacji celem zatwierdzenia przez zleceniodawcę plików do druku.
Są one następnie wizualizowane po to aby zdalnie zatwierdzić w zamawiającego, pliki z których zostanie wykonana produkcja.
PM Preflight:
usprawnienie przygotowania plików do produkcji
PM Preflight ściśle współpracuje z oprogramowaniem callas pdfToolbox server. Oprogramowanie obsługuje prawie wszystkie typy produkcji poligraficznych, a więc:
- ulotki, wizytówki
- ulotki składane
- notesy
- foldery szyte zeszytowo
- kalendarze
- broszury w oprawie klejonej
- produkty wielkoformatowe
- różne typy wykończeń - lakiery, złocenia
- i wiele innych…
Sprawdzenie pod kątem druku obejmuje:
- występowanie spadów — ich ewentualne dorobienie w oparciu o dostarczony plik poprzez procedurę odbicia lustrzanego zawartości
- nałożenie wykrojników
- wygenerowanie odpowiedniego pliku do wykonania lakieru UV
- zarządzanie kolorystyką CMYK, Pantone etc.
- określenie poprawności wykonania grzbietów broszur klejonych
- zróżnicowanie stron przednich i tylnych produktów w zakresie falcowania (przykład: 3A4/ A4 składane w C — bigi występują w sekwencji 210-210-207 na stronie przedniej a na tylnej w sekwencji 207-210-210)
- możliwość sprawdzenia dowolnego parametru i jego poprawienie z wykorzystaniem plików konfiguracyjnych *.kfpx programu callas pdfToolbox server
Oprogramowanie występuje w dwóch wersjach:
Zasada działania PM Preflight
Aplikacja PmPreflight działa jako program nasłuchujący katalogu wejściowego, do którego należy wgrać plik JobDefnition (opisany w dalszej części dokumentu). Na podstawie danych umieszczonych w JobDe- finition tworzone są pliki wynikowe na które składają się:
- Plik PDF po Preflight
- Plik PDF po Preflight zawierający dodatkową warstwę wizualizującą takie parametry jak bleedbox, trimbox, lakier UV, wykrojniki, itp.
- Pliki jpg będące miniaturami powyższych plików PDF
- Plik JobResult zawierający informacje o lokalizacji plików wynikowych oraz informacje o błędach /ostrzeżeniach / zastosowanych fixupach.
- Plik jpg będący połączeniem dwóch innych plików jpg (używane do tworzenia podglądu dwukomponentowych produktów, takich jak kalendarz z wypukłą główką)
Program obsługuje następujące formaty plików wejściowych: pdf, jpg, png, gif oraz tiff.
Opis logiczny PM Preflight:
- Folder wejściowy(w tym folderze aplikacja oczekuje na pliki JSON z definicją zadań: JobDefinition, których format opisano w kolejnych punktach)
- Folder udostępniony(w tym folderze aplikacja przechowuje pliki wynikowe, dostępne dla innych urządzeń w sieci)
- Nazwa udziału(nazwa pod jaką Folder udostępniony jest widoczny w sieci — parametr jest używany w plikach JSON JobResult, których format opisano w kolejnych punktach)
- Ścieżka do plikuz definicjami błędów (plik csv)
- Folder zapisu statusu aplikacji— do tego folderu aplikacja periodycznie zapisuje swój status (w formacie PreflighterStatus opisanym w dalszej części dokumentu).
- Nazwa preflightera— nazwa pliku tworzonego przez aplikację w katalogu zapisu status aplikacji (system zapisze plik pod nazwą json)
- Ścieżka do aplikacjipdfToolbox Server (ścieżka do CLI pdftoolbox servera) PmPreflight tworzy dwa rodzaje logów:
- Error log— błędy w wykonywaniu aplikacji (ewentualne problemy z dostępem do plików, ).
Plik ten znajduje się w katalogu „Folder udostępniony”/Logs/Y-M-D-error.log
- Preflight log— plik CSV zapisujący informacje o przetwarzanym pliku oraz czas jego
Plik ten znajduje się w katalogu „Folder udostępniony”/Logs/Y-M-D-preflight.log
-
- bleedBox(float)— spady w pracy w System sprawdza, czy praca zawiera odpowiednie spady, tzn, czy format wgranej pracy jest w formacie netto + spad z każdej strony. Domyślnie 3mm.
- cornerRadius(float)— promień zaokrąglenie (domyślnie 0 mm) na rogach (używane dla wizualizacji Trimboxa dla produktów z zaokrąglonymi rogami)
- foldList(List<List<float>>)— lista definicji linie bigowania dla każdej Jeżeli stron jest więcej niż obiektów foldList, kolejne linie będą używane do stron modulo. Wartości dodatnie oznaczają pionowe linie bigów, a ujemne poziome. Linie bigów nakładane są względem zadanych wymiarów pracy (z uwzględnieniem ewentualnego obrotu. Np. dla A4 do DL w Z (format zdefiniowany jako width:297, height: 210) mamy „foldList”: [[99, 198]] ponieważ na pierwszej i drugiej stronie linie bigów należy znaznaczyć 99mm i 198mm od lewej strony. W przypadku dla A4 do DL w C (format zdefiniowany jako width:297, height: 210) mamy „foldList”: [[97, 197], [100, 200]], ponieważ na drugiej stronie bigi są odbiciem lustrzanym tych na pierwszej (nie są symetryczne)
- height(float)— oczekiwana wysokość strony netto
- innerMargin(float)— wielkość wewnętrznego marginesu bezpieczeństwa w mm (domyślnie 3mm)
- numberOfPages(int)— ilość stron projektu, nadmiarowe strony zostaną usunięte
- jobId(int)— unikalny numer zadania (ustawiany przez aplikację korzystającą z PmPreflight, wykorzystywany do identyfikacji zadania)
- kfpxProfile— ścieżka do pliku .kfpx z definicją profilu pdfToolbox, który ma być zastosowany do
- pathResult(string)— miejsce gdzie PmPreflight ma umieścić plik wynikowy zawierający informacje o wykonanym zadaniu (w formacie JobResult). Pliki wynikowe mają następującą nazwę: jobId_token.json
- safeArea(float)— wielkość nadlewki strony w stosunku do trimboxa (domyślnie 3mm)
- token(string)— dodatkowy token zadania — przydatny jeżeli w obrębie jednego zadania (jobId) wykonywanych jest kilka procesów preflight
- userFileList(List<string>)— lista plików (pełne ścieżki) które mają być użyte do Preflight
- width(float)— oczekiwana szerokość strony netto w mm
- checkBleedbox(bool)— informuje czy program ma sprawdzać, czy w pracy są spady. Domyślnie false.
- applyBleedbox(bool)— informuje czy jeżeli spadów brakuje to system ma je automatycznie dołożyć (spady lustrzane). Ma sens tylko z checkBleedbox = true. Domyślnie false.
- innerMarginTop(float/null)— pozwala na przeładowanie innerMargin i zdefiniowanie innego marginesu bezpieczeństwa u góry. Domyślnie null
- innerMarginRight, innerMarginBottom, innerMarginLeft(float/null)— jak wyżej dla marginesu prawego, dolnego i lewego
- flipMargin(bool)— flaga informująca, czy marginesy mają się obracać jeżeli praca jest obrócona (np. format to 210×297, a klient wgrał 297×210). Domyślnie
- mirrorMarginOnEven(bool)— flaga informująca, czy margines ma być lustrzanie odbijany na parzystych stronach (np. dla katalogów szytych). Domyślnie false.
- sizeCheckThreshold(float)— system informuje, czy wgrana praca nie jest za wysoka/szeroka. Ta zmienna określa przy jakim przekroczeniu rozmiaru (w mm) to ostrzeżenia ma się pojawiać. Domyślnie
- prepareFlyer(bool)— flaga informująca czy system ma przygotować pliki do ulotki Wymaga licencji modułu 3D.
- creases(SheetCreases)— definicja bigów w ulotce Ma sens tylko jeżeli prepareFlyer = true. Wartość null tej zmiennej spowoduje wygenerowanie płaskiej ulotki. Domyślnie null. Strukturę SheetCreaes opisano pod listą zmiennych. Wymaga licencji modułu 3d.
- uvPagesCount(int)— ilość stron z lakierem UV, nadmiarowe strony zostaną usunięte.
- uvFilesList(List<string>)– lista plików (pełne ścieżki) które mają być użyte do Preflight lakieru UV
- foldMarksFile(string)— ścieżka do pliku z wykrojnikiem który ma zostać nałożony w pliku podglądu jako warstwa „Wykrojnik/Makieta”. Strony z pliku foldMarksFile nakładane są po kolei w pętli, w przypadku 10-cio stronicowej pracy i 4-ro stronicowego pliku foldMarksFile zostanie on nałożony 2 razy w całości oraz dodatkowo dwie pierwsze strony na stronach 9 i 10.
- foldMarksFileFlipped(string)— ścieżka do pliku z wykrojnikiem który należy zastosować jeżeli klient wgra pracę obróconą. Jeżeli ten parametr nie zostanie podany system samodzielnie obróci
- flippedClockwise(bool)— określa, czy jeżeli wgrany plik jest obrócony w stosunku do zadanego formatu o 90 stopni, to system ma zakładać, że obrócono go w kierunku wskazówek Domyślnie false — system zakłada, że obrócone pliki obrócono w kierunku przeciwnym do wskazówek zegara. Używane jedynie przy generowaniu plików do podglądu 3D. Wymaga licencji modułu 3d.
- prepareFlippingBookCover(bool)— określa czy system ma potraktować wgrywany plik jako okładkę katalogu klejonego, tzn. czy ma pociąć obrazki w sposób umożliwiający ich użycie w podglądzie Wymaga licencji modułu 3d.
- spineWidth(float)— ma sens tylko jeżeli prepareFlippingBookCover = Określa jak szeroki jest grzbiet we wgranym pliku (w mm). Np. plik jest okładką katalogu A4 z 5mm grzbietem, czyli jego format to 425mm x 297mm. Podając parametr spineWidth = 5, system na podglądzie zaznaczy grzbiet o szerokości 5mm, a ponadto przygotuje pliki jpg do podglądu 3d poprzez odcięcie grzbietu (z obu stron). Wymaga licencji modułu 3d.
- glueOnShortEdge(bool)— flaga informująca, czy produkt jest klejony po krótkim boku (powoduje dodanie na proofie znacznika miejsca klejenia). Domyślnie Ma również wpływ na generowanie obrazków do podglądu 3d.
- glueOnLongEdge(bool)— flaga informująca, czy produkt jest klejony po długim boku (powoduje dodanie na proofie znacznika miejsca klejenia). Domyślnie Ma również wpływ na generowanie obrazków do podglądu 3d.
- overlapWidth(float/null)— zmienna informująca o długości nadlewki w stosunku do oczekiwanego formatu netto. Ma sens wyłącznie z glueOnShortEdge lub glueOnLongEdge. W przypadku produktów typu notesy klejone (np. A4) do formatu netto okładki dodawana jest nadlewka którą skleja się Część tej nadlewki stanowi grzbiet a część zachodzi na tył notesu. Ten parametr jest potrzebny (wraz z spineWidth oraz glueOnShortEdge lub glueOnLongEdge) do przygotowania odpowiedniego podglądu 3d katalogu. Oczywiście w przypadku notesu A4 z nadlewką 30mm, klejonego po krótkim boku, praca powinna mieć wymiary: 210mm x 227mm. System nie dokłada nadlewki, a jedynie w odpowiednim miejscu ją odcina do podglądu i w odpowiednim miejscu rysuje grzbiet. Domyślnie null. Wymaga licencji modułu 3d.
- prepareFlippingBookContent(bool)— informuje system czy ma przygotować obrazy jpg do podglądu katalogu (strony środkowe). Domyślnie false. Wymaga licencji modułu 3d.
- flippingBookMergeOnLongEdge(bool)— flaga informująca, czy strony katalogu są łączone po krótkim czy po długim boku. Ma sens wyłącznie w przypadku użycia prepareFlippingBookContent lub prepareFlippingBookCover. Domyślnie true. Wymaga licencji modułu 3d.
- fixedAutoPages(FixedAutoPages)— struktura określająca pliki które należy automatycznie dograć do pracy. Np. jeżeli chcemy aby do pracy jednostronnej na drugiej stronie dodać automatycznie jakieś informacje/reklamę to możemy użyć tego parametru. Domyślnie null. Strukturę FixedAutoPages opisano pod listą zmiennych.
- productionTrimBox(float/null)— wielkość trimboxa pliku produkcyjnego w stosunku do pracy (w mm). Jeżeli chcemy, aby trimbox pliku produkcyjnego był większy o np. 3mm od trimboxa projektu (np. dla wykrajarki), należy użyć tego Plik podglądu pozostanie bez zmian.
- thumbMaxWidth, thumbMaxHeight(uint)— maksymalna szerokość/wysokość miniatur Jeżeli zdefiniujemy, np. 800×800 a praca będzie pozioma, to plik podglądu zostanie dopasowany do szerokości, jeżeli praca będzie pionowa, to plik podglądu zostanie dopasowany do maksymalnej wysokości (z zachowaniem proporcji)
- productionOverlayFile(string/null)— plik PDF który zostanie nałożony na plik produkcyjny przed procesem preflightu. Może zostać wykorzystany np. do nałożenia białych prostokątów w miejsca klejenia, aby mieć pewność, że nie będzie w tym miejscu farby. Plik nakładany jest w trybie pętli (jeżeli plik wejściowy ma 4 strony, a plik overlay ma 2, to plik zostanie nałożony 2 razy, 1:1, 2:2, 3:1, 4:2)
- productionOverlayFileFlipped(string/null)— działa tak samo jak productionOverlayFile, ale jest używany w sytuacji gdy wgrany plik jest obrócony o 90 stopni w stosunku do zadanego formatu.
- applyMockupOnProduction(bool)— nakłada mockup (foldMarksFile, foldMarksFileFlipped) na plik produkcyjny jako osobną warstwę (o nazwie „Mockup”) domyślnie ukrytą z flagą “Drukuj jeżeli widoczna”. Operacja wykonywana jest po Jeżeli praca jest obrócona o 90 stopni w stosunku do zadanego formaty to używany jest plik foldMarksFileFlipped, w przeciwnym wypadku plik foldMarksFile. Jeżeli odpowiedniego pliku nie ma, proces jest pomijany.
- productionOverlyAfterPreflight(bool)— domyślnie Ustawienie wartości na true powoduje nałożenie pliku productionOverlay po preflight.
W zmiennych typu floatużywamy „.” (kropki) jako znaku dziesiętnego. Opis struktury SheetCreases(pola):
- vertical(List<floa>)— lista bigów pionowych (w stosunku do format pracy) w Liczy dodatnie oznaczają big „z przodu”, ujemne big „od tyłu”.
- horizontal(List<floa>)— lista bigów poziomych. Mechanizm jak w przypadku pionowych
- firstFront(bool)— flaga informująca, czy pierwsza strona pracy ma być z Np. w przypadku ulotki A4 do DL w C pierwsza strona pracy to część zewnętrzna i na podglądzie 3d powinna być z tyłu. Domyślnie false.
- foldingOrder(List<string>)— sekwencja zawierająca słowa „left” lub „right” informująca o kolejności składania
Przykład (dla ulotki A4 do DL w C, format 297×210):
“creases”: { “fistFront”: false,
“foldingOrder”: [“left”,”right”], “horizontal”: [],
“vertical”: [-97,-197]
}
Opis struktury FixedAutoPages(pola):
- file(string)— ścieżka do pliku, który ma zostać dołożony
- fileFlipped(string)— ścieżka do pliku, który ma zostać dołożony, jeżeli klient wgra pracę odwróconą w stosunku do zadanego formatu
- insertAfter(int)— po której stronie mają zostać dołożone strony z tego 0 (zero) oznacza, że strony mają być dodane na początku
- numberOfCopies(int)— ilość kopii stron z pliku jaka ma zostać dołożona
- jobId(string)— jak w przypadku jobDefinition
- token(string)— jak w przypadku jobDefinition
- pathImage1(string)— ścieżka do pierwszego obrazka
- pathImage2(string)— ścieżka do drugiego obrazka
- pathImage1Uv(string, opcjonalne)— ścieżka do pierwszego obrazka z lakierem UV
- pathImage2Uv(string, opcjonalne)— ścieżka do drugiego obrazka z lakierem UV
- image1widthMm(float)— szerokość rzeczywistej pracy, którą obrazek przedstawia w mm z image1heighMm(float)— wysokość rzeczywistej pracy, którą obrazek przedstawia w mm z image2widthMm(float)— szerokość rzeczywistej pracy, którą obrazek przedstawia w mm z image2heighMm(float)— wysokość rzeczywistej pracy, którą obrazek przedstawia w mm
- image1widthPx(int)— szerokość pierwszego obrazka (w pikselach). Jeżeli nie zostanie podana system wyliczy parametr samodzielnie
- image1heightPx(int)— wysokość pierwszego obrazka (w pikselach). Jeżeli nie zostanie podana system wyliczy parametr samodzielnie
- image2widthPx(int)— szerokość drugiego obrazka (w pikselach). Jeżeli nie zostanie podana system wyliczy parametr samodzielnie
- image2heightPx(int)— wysokość drugiego obrazka (w pikselach). Jeżeli nie zostanie podana system wyliczy parametr samodzielnie
- wegGlMode(bool)— tworzy obrazki wymagane dla podglądu Wymaga licencji modułu 3d.
- overlapMm— ilość mm jaką obrazek 2 ma zachodzić na obrazek 1 (w mm).
- joinOn(string)— może przyjąć wartość top, left, bottom lub Aplikacja dołączy obraz 2 do joinOn strony obrazu 1 (domyślnie top), z zakładką overlapMm.
- pathResult(string)— jak w przypadku jobDefinition
- imagesWithoutMarkers(string)— lista (pełne ścieżki) miniatur bez markerów
- imagesWithMarkers(string)— lista (pełne ścieżki) miniatur z markerami
- pdfWithoutMarkers(string)— ścieżka do pliku wynikowego PDF (bez markerów)
- pdfWithMarkers(string)— ścieżka do pliku wynikowego PDF (z markerami)
- pdfUV(string)— ścieżka do pliku wynikowego PDF (z lakierem UV)
- jobId(int)— numer zadania podany na wejście Preflight
- token(string)— token podany na wejście Preflight
- width(float)— szerokość stron z uwzględnieniem ewentualnego obrócenia pracy z height(float)— wysokość stron z uwzględnieniem ewentualnego obrócenia pracy z numberOfPages(int)— ilość stron
- logsList<string>— lista informacji o błędach /ostrzeżeniach/ zastosowanych fixupach
- sourceFiles(List<string>)— lista plików użytych do wykonania preflight
- flyer(WebGlFlyer)— definicja ulotki 3d używana przez skrypt javascript wyświetlający ulotkę
- flyerBoced(WebGlFlyer)— definicja ulotki 3d używana przez skrypt javascript wyświetlający ulotkę 3d w wersji z nałożonymi liniami
- flippingBookPages(List<string>)— lista plików jpg do wyświetlenia w podglądzie 3d katalogu jako strony środka
- flippingBookCover(List<string>)— lista plików jpg do wyświetlenia w podglądzie 3d katalogu jako strony okładki
- flippingBookFlipVertical(bool)— informacja czy podgląd katalogu należy obrócić o 90 stopni (np. w przypadku pionowego katalogu szytego po krótkiej krawędzi)
Pliki JobDefinition oraz JobResult używają formatu JSON
- mergedImage(string)— ścieżka do połączonego pliku
- mergedImageUv(string)— ścieżka do połączonego pliku UV
- token, jobId(string, string)— przepisane z jobDefinition
- widthMm, heightMm(decimal, decimal)— wymiary pracy po połączeniu, przeliczone na mm
- widthPx, heightPx(int, int)— wymiary połączonego pliku w px
- webGlWidthPx, webGlHeightPx(int, int) — wymiary tekstury dla webGl
- success(bool)— informuje, czy połączenie się powiodło
- logs(list<string>)— lista ewentualnych błędów przy tworzeniu połączonego obrazka
W pliku JobResult w polu logs znajduje się lista ostrzeżeń / błędów / fixupów, które możemy podzielić na dwie grupy:
Będące wynikiem zastosowania profilu na .kfpx na pliku (wszystkie informacje, które może zwrócić Callas pdfToolbox, zawarte w definicji profilu)
Wykryte przez aplikację przed lub po wykonaniu preflight:
- blankPage— informuje, że projekt zawiera puste strony
- fileFliped— informuje, że projekt wejściowy jest obrócony w stosunku do zadanych parame- trów (np. wgrano 297×210 zamiast 210×297)
- pageFlipped— informuje, że strony projektu są odwrócone w stosunku do siebie
- fileTooWide— informuje, że plik wejściowy jest zbyt szeroki, tzn większy niż netto + bleedbox
- fileTooNarrow— informuje, że plik wejściowy jest zbyt wąski, tzn jest mniejszy niż format netto
- fileTooHight— informuje, że plik wejściowy jest zbyt wysoki, tzn większy niż netto + bleedbox
- fileTooLow– informuje, że plik wejściowy jest zbyt niski, tzn jest mniejszy niż format netto
- preflightFailed— informuje, że proces preflight nie udał się.
- mirrorBleedAdded— informuje, że proces preflight dodał spady
- mirrorBleedNeeded— informuje, że proces system wykrył brak spadów
- tooFewPages— informuje, że podana ilość stron jest mniejsza od wymaganej
- tooManyPages— informuje, że w pracy jest więcej stron niż jest to wymagane
- tooManyUvPages— informuje, że pliku lakieru UV jest więcej stron niż jest to wymagane
- multiStripImagesNotSupported— informuje, że na wejście podano plik tiff z wieloma strona- mi, a takowych system nie obsługuje.
- fileTypeNotSupported— informuje, że na wejście podano plik w nieobsługiwanym formacie
- fileCorrupted— informuje, że na wejście podano uszkodzony plik
Dla każdego logu możemy zdefiniować (w pliku .csv podanym jako parametr wejściowy programu) na- stępujące informacje:
- Severity— rodzaj błędu (np. info, warning, error, fatal), które mogą zostać później użyte przez oprogramowanie czytające Sam fakt pojawienia się w jobResult loga (np. fileToNarrow) nie oznacza, że preflight się nie udał. Jest to tylko informacja, która może zostać użyta przez zewnętrzne oprogramowanie w dowolny sposób.
- Message— informacja tekstowa o błędzie — dowolny ciąg znaków, który może później zostać użyty przez oprogramowanie interpretujące pliki JobResult.
- InfoUrl— adres URL prowadzący do strony www zawierającej informacje o ostrzeżeniu / błędzie.
Wszystkie parametry są opcjonalne. Nie podanie pliku .csv z informacjami jako parametru do aplikacji spowoduje, że plik JobResult będzie zawierał jedynie kody ostrzeżeń / błędów / fixupów.
Program oprócz plików jobResult zwraca również pliki jobStatus (do tego samego katalogu do którego na końcu umieszczany jest jobResult). Pliki mają tak samo skonstruowaną nazwę jak pliki jobResult, z tą różnicą, że rozszerzenie to .status.json, a nie .json. Plik jobStatus zawiera następującą strukturę danych:
- statusCode(string)— kod statusu
- info(string)— opis tekstowy statusu
- progres(int)— postęp w procentach








