imPRESS Studio to profesjonalne narzędzie do impozycji plików PDF, przeznaczone dla drukarni, studiów DTP i grafików przygotowujących publikacje do druku offsetowego, cyfrowego oraz Print-on-Demand.
Impozycja to proces układania stron dokumentu na arkuszach drukarskich w takiej kolejności i orientacji, aby po wydrukowaniu, złożeniu i obcięciu powstała gotowa publikacja z poprawną paginacją. imPRESS Studio automatyzuje ten proces: przyjmuje pliki PDF, układa je na arkuszach (SRA3, A3, B2, Letter lub dowolnym rozmiarze własnym) zgodnie z wybraną metodą oprawy, generuje znaczniki drukarskie, kompensuje pełzanie (creep) i eksportuje gotowy plik produkcyjny — opcjonalnie w standardzie PDF/X-4.
| Obszar | Funkcje |
|---|---|
| Oprawy i układy | Zeszytowa (saddle stitch), klejona (perfect bound), spirala/wiro, N-up ganging, Z-fold, gatefold, harmonijka (accordion), roll-fed step-and-repeat, sheet-fed step & repeat |
| Znaczniki | Linie cięcia, pasery, paski kolorów CMYK, klin szarości K, znaczniki bigowania, kody kreskowe, markery konturów Summa OPOS / OPOS-XY, profile znaczników (marks profiles) |
| Przygotowanie do druku | Kompensacja pełzania, symulacja nadruku (overprint / multiply blend), spady (bleed), strefa bezpieczna, grzbiet |
| Kontrola jakości | Głęboki preflight (DPI obrazów, RGB/CMYK, osadzenie czcionek, przezroczystości, kolory dodatkowe, zgodność PDF/X), raport preflight |
| Eksport | PDF wieloarkuszowy (wybór wersji 1.4–1.7), PDF/X-4 (ISO 15930-7) z profilem ICC — natywnie silnikiem imPRESS Export Engine (z konwersją wektorowego RGB przez ICC) lub przez Ghostscript; PDF/X-1a i X-3 przez Ghostscript; numerowanie stron, strona przewodnika cięcia |
| Automatyzacja | Tryb CLI (impose / license / hotfolder), podsystem hot folder z kolejką, ledgerem SQLite i throttlingiem Ghostscript |
| Produktywność | Interaktywny podgląd z miniaturami, statystyki zużycia materiału i kosztu, overlay loga, sugestie szablonów, lokalizacja wielojęzyczna |
imPRESS Studio zbudowany jest w architekturze warstwowej z wyraźnym podziałem na logikę domenową, przetwarzanie PDF, eksport, automatyzację i warstwę prezentacji. Wszystkie projekty są kompilowane do jednego pliku wykonywalnego (imPRESS Studio.exe) — projekt aplikacji dołącza pliki źródłowe pozostałych modułów przez <Compile Include>, co upraszcza dystrybucję i unika blokad bibliotek DLL.
| Moduł | Odpowiedzialność |
|---|---|
| Imposition.Core | Logika domenowa impozycji: model szablonu (Template), zlecenie (ImpositionJob), silnik (ImpositionEngine), strategie oprawy, układy arkuszy, znaczniki, overlay, optymalizator układu, silnik sugestii szablonów, statystyki zlecenia. |
| Imposition.Pdf | Operacje na plikach PDF: analizator (PdfAnalyzer), kompozytor (PdfComposer), eksporter (PdfExporter), renderer podglądu (PDFium), renderery znaczników i overlay, łączenie PDF, modele i parsery preflight (czcionki, obrazy, przezroczystości, kolory dodatkowe, zgodność standardów). |
| Imposition.Export | Potok eksportu (ExportPipeline), walidator preflight, menedżer profili ICC, generowanie pliku definicji PDF/X (PdfXDefinitionFile), silnik walidacji prepress z zestawem walidatorów, generator podsumowania, wyrażenia zakresów (RangeExpression). |
| Imposition.HotFolder | Podsystem automatyzacji: konfiguracja, obserwator plików (FileSystemWatcher / polling), debouncer zdarzeń, sonda stabilności pliku, kolejka zadań, polityka backoff, ledger SQLite, throttling Ghostscript, host i menedżer. |
| Imposition.Ui | Warstwa prezentacji Avalonia: okno główne, kontrolki (m.in. ImpositionCanvas), dialogi (eksport, szablony, hot foldery, preflight, licencja, ustawienia, pomoc), modele widoku (MVVM, CommunityToolkit.Mvvm), rozszerzenia markup (lokalizacja). |
| Imposition.Utils | Narzędzia współdzielone: ścieżki aplikacji (AppPaths), operacje na plikach, stos undo/redo, konfiguracja loggera (Serilog), licencjonowanie (fingerprint maszyny, plik licencji, generator, walidator), lokalizacja, jednostki wyświetlania. |
| Imposition.App | Punkt wejścia: Program.cs (routing GUI/CLI), CompositionRoot.cs (kontener DI), CliRunner.cs (komendy wsadowe). |
| Komponent | Technologia | Rola |
|---|---|---|
| Środowisko uruchomieniowe | .NET 8 (net8.0) | Platforma docelowa, self-contained win-x64 |
| Interfejs | Avalonia 11.2.7 (Fluent, Skia) | Wieloplatformowy UI, renderowanie przez SkiaSharp |
| Wzorzec UI | CommunityToolkit.Mvvm 8.2.2 | MVVM, generowane właściwości i komendy |
| Analiza PDF | PdfPig 0.1.9 | Odczyt stron, czcionek, obrazów, box-ów |
| Kompozycja PDF | PdfSharpCore 1.3.65 | Montaż stron na arkuszach, rysowanie znaczników |
| Renderowanie podglądu | Docnet.Core 2.6.0 (PDFium) | Rastrowy podgląd arkuszy |
| Grafika | SkiaSharp 2.88.9 | Rysowanie podglądu i overlay |
| Kody kreskowe | ZXing.Net 0.16.10 | Generowanie kodów na znacznikach |
| PDF/X-4 | imPRESS Export Engine (natywny) lub Ghostscript 10.07 (w pakiecie) | Pakowanie do standardu drukarskiego z ICC; natywnie także konwersja wektorowego RGB (WCS) |
| Baza stanu | Microsoft.Data.Sqlite 8.0.10 | Ledger hot folderów (idempotencja) |
| Automatyzacja/host | Microsoft.Extensions.Hosting, Polly 8.4.2 | Hosting hot folderów, retry/backoff |
| CLI | System.CommandLine 2.0 beta | Parser komend wsadowych |
| Logowanie | Serilog 3.1.1 (Console, File) | Strukturalne logi |
| Sprzęt/licencja | System.Management 8.0.0 | Fingerprint maszyny |
CompositionRoot.Build() buduje jeden kontener IServiceProvider współdzielony przez ścieżkę GUI i CLI. Usługi długożyjące (silnik, analizator, kompozytor, walidatory, menedżer profili ICC, podsystem hot folder) rejestrowane są jako singletony; modele widoku jako transient (każde okno dostaje świeżą instancję). Wyjątkiem jest TemplateEditorViewModel — singleton, aby edycje szablonu nie ginęły między otwarciami dialogu.
Main jest celowo synchroniczny i oznaczony [STAThread]. Atrybut STA „trzyma się" wyłącznie metody wejściowej i jest tracony po pierwszym await; rejestracja Win32 drag&drop (RegisterDragDrop) wymaga wątku w trybie STA. Dlatego GUI startuje synchronicznie, a ścieżka CLI (która nie potrzebuje STA) jest delegowana do pomocnika asynchronicznego.
Wszystkie strategie oprawy rejestrowane są jako IBindingStrategy i wstrzykiwane do ImpositionEngine jako słownik kluczowany typem oprawy. Wszystkie walidatory preflight rejestrowane są jako IPrepressValidator — kolejność rejestracji wyznacza kolejność w raporcie.
PdfAnalyzer odczytuje liczbę stron, wymiary, box-y, czcionki, obrazy, przezroczystości.ImpositionEngine.Plan() wybiera strategię wg Template.Binding i wypełnia ImpositionJob.SheetLayouts (lista arkuszy z pozycjami stron — PagePlacement).PdfPreviewRenderer (PDFium) rastruje arkusze; ImpositionCanvas rysuje je z heurystyką LOD (poziom szczegółowości zależny od zoomu).PrepressValidationEngine uruchamia wszystkie walidatory i tworzy PrepressValidationReport.PdfComposer (PdfSharpCore) montuje strony na arkuszach, nanosi znaczniki i overlay.ExportPipeline wywołuje Ghostscript z plikiem definicji PDF/X i profilem ICC.PdfComposer / PdfSharpCore) oraz w podglądzie (ImpositionCanvas / PDFium). Wspólnym szwem dopasowania spadu do komórki jest logika BleedFit; wyjście jest świadome spadu (TrimBox → komórka).
| Element | Wymaganie |
|---|---|
| System operacyjny | Windows 10 / 11 (64-bit) |
| Architektura | x64 |
| .NET | Nie wymaga osobnej instalacji — wydanie jest self-contained |
| Ghostscript | Dołączony w pakiecie (Assets/ghostscript, wersja 10.07) — do konwersji PDF/X-4 |
| Pamięć | Zalecane min. 4 GB RAM (eksport wieloarkuszowy z PDF/X-4 jest intensywny) |
| Dysk | ~300–500 MB (z dołączonym Ghostscript i profilami ICC) |
Aplikacja dystrybuowana jest jako instalator (Inno Setup) generowany skryptem build/pack.ps1. Po instalacji program można uruchomić z menu Start lub bezpośrednio plikiem imPRESS Studio.exe.
Pliki dynamiczne (konfiguracja, szablony, licencje, logi, baza hot folderów) nigdy nie są zapisywane w katalogu Program Files — trafiają do %APPDATA% (dane roaming) i %LOCALAPPDATA% (logi, SQLite, cache). Szczegóły w rozdziale 17. Pliki i lokalizacje danych.
imPRESS Studio używa licencji powiązanej ze sprzętem (machine-bound). Identyfikator maszyny jest hashem obliczanym z parametrów sprzętowych komputera (MachineFingerprint, moduł System.Management).
.json).| Edycja | Opis |
|---|---|
| Trial | 30 dni, pełna funkcjonalność |
| Standard | Podstawowa wersja produkcyjna |
| Professional | Pełna wersja z obsługą PDF/X-4 i CLI |
Eksport z poziomu CLI podlega tej samej bramie licencyjnej co GUI. Jeśli licencja jest nieważna, komenda impose zwraca kod wyjścia 2 i wypisuje komunikat z instrukcją aktywacji.
%APPDATA%\imPRESS Studio\licenses — skopiuj go przed reinstalacją.
Okno główne podzielone jest na trzy kolumny plus nagłówek i pasek stanu.
| Obszar | Zawartość |
|---|---|
| Nagłówek | Logo oraz przyciski: Szablon, Opcje eksportu, Pomoc, Licencja, O programie, a także akcje Planuj i Eksportuj. |
| Lewy panel | Karty: Szablon (bieżący szablon), Pliki źródłowe PDF (lista wczytanych plików), Plik wyjściowy, Akcje, Dokument (liczba stron, arkuszy, sygnatur). |
| Środkowy panel | Interaktywny podgląd arkusza z paskiem narzędzi (zoom, nawigacja, opcje) i pasem miniatur arkuszy. |
| Prawy panel | Statystyki zlecenia: arkusze, sygnatury, zużycie papieru, szacowanie kosztów, informacje o oprawie. |
| Pasek stanu | Aktualny status operacji oraz wskazówki dotyczące obsługi podglądu. |
Szablon (Template) to kompletny plan pracy impozycji zapisywany w formacie JSON. Poniżej pełna referencja pól modelu.
| Pole (JSON) | Typ | Domyślnie | Opis |
|---|---|---|---|
id | string | auto | Identyfikator szablonu (unikalny w bibliotece; generowany automatycznie, jeśli pusty). |
name | string | — | Nazwa wyświetlana. |
binding | BindingType | — | Typ oprawy (patrz rozdział 7). |
pagesPerSignature | int | 8 | Stron na sygnaturę (zeszytowa/klejona; musi być wielokrotnością 4). |
nUpX / nUpY | int | 2 / 1 | Liczba stron w poziomie / pionie (N-up). |
sheet | SheetSize | — | Wymiary arkusza (widthMm, heightMm, name). |
trim | TrimSize | — | Wymiary strony po obcięciu (widthMm, heightMm). |
margins | LayoutMargins | — | Marginesy i odstępy (patrz 6.2). |
marks | MarksOptions | — | Znaczniki (przełączniki legacy; patrz rozdział 8). |
marksProfileRef | string? | null | Referencja do profilu znaczników; gdy ustawiona, ma pierwszeństwo nad marks. |
creep | CreepOptions | — | Kompensacja pełzania (patrz rozdział 9). |
saddle | SaddleOptions | — | Opcje oprawy zeszytowej. |
fold | FoldOptions | — | Opcje falcowania: liczba paneli oraz sizeMode (Panel / FlatProduct) decydujący, czy trim opisuje jeden panel, czy wyrób rozłożony. 1.5.11 |
gatefold | GatefoldOptions | — | Opcje gatefold (styl + redukcja). |
roll | RollOptions | — | Opcje roll-fed. |
stepAndRepeat | StepAndRepeatOptions | — | Opcje step & repeat. |
overlay | OverlayOptions | — | Overlay loga/obrazu. |
duplex | bool | true | Druk dwustronny (work-and-back). |
LayoutMargins)| Pole | Domyślnie | Opis |
|---|---|---|
bleedMm | 3.0 | Spad — grafika wychodząca poza linie cięcia. |
safeZoneMm | 5.0 | Strefa bezpieczna (wcięcie od trim). |
gutterMm | 0.0 | Rynienka — odstęp między sąsiednimi stronami. |
spineMm | 0.0 | Grzbiet dla oprawy klejonej. |
sheetMarginMm | 10.0 | Margines od krawędzi arkusza (chwytak maszyny). |
Metoda Template.Validate() egzekwuje reguły poprawności przed planowaniem:
.json — do wymiany między stanowiskami.Każdy typ oprawy ma dedykowaną strategię (IBindingStrategy) wybieraną przez ImpositionEngine na podstawie pola binding szablonu.
Składki złożone na pół i zszyte zszywkami w grzbiecie. Typowo 8 lub 16 stron na sygnaturę. Idealna dla cienkich publikacji (do ~60 stron). Wymaga kompensacji pełzania przy większych nakładach. Tryby układu (SaddleSheetLayout):
| Tryb | Opis |
|---|---|
TwoUp | Klasyczne 2-up: jedna złożona rozkładówka na arkusz (4 strony na arkusz). |
StackedCopies | N identycznych kopii rozkładówki ułożonych w wierszach na większym arkuszu. Arkusz najpierw cięty na paski, potem składany — typowy workflow cyfrowy. |
EightPageSignature | Klasyczna forma 8-stronicowa: siatka 2×2, górny rząd obrócony o 180° (główkami do siebie), składana dwukrotnie bez cięcia. Liczba stron musi być wielokrotnością 8. |
Każda sygnatura jest osobną składką sklejaną klejem w grzbiecie. Stosowana w grubszych książkach (powyżej ~50 stron). Wymaga ustawienia marginesu grzbietowego (spineMm), którego szerokość zależy od grubości całej książki.
Oprawa na spiralę lub drut — pojedyncze strony z otworami do bindowania.
Wiele różnych ulotek/stron na jednym arkuszu, bez oprawy. Strategia cyklicznie przechodzi przez kolejne strony źródłowe i nigdy nie obraca kopii.
Arkusz składany bez cięcia (ulotki, foldery, mapy). Liczba paneli w FoldOptions.PanelCount:
(arkusz − marginesy − odstępy) ÷ liczba paneli, a format netto
(trim) był wyłącznie prostokątem, w który wpasowywano grafikę. Linie falcu przesuwały się więc
razem z podłożem — ulotka DL o panelach 99 mm impozycjonowana na SRA3 wychodziła z panelami co 143,33 mm,
czyli falcerka bigująca na 99 mm zaginała w poprzek grafiki. Od 1.5.11 szerokość panelu pochodzi
z produktu: panele są układane w podanym rozmiarze, stykają się liniami falcu, a cały blok jest
centrowany na arkuszu; niewykorzystany papier zostaje pusty. Arkusz jest podłożem, nie parametrem projektu.
Całą geometrię wylicza jedna klasa — FoldGeometry — współdzielona przez strategię układania,
walidację szablonu, podgląd i renderer znaczników, dzięki czemu wszystkie cztery zgadzają się co do położenia
bigów. Udostępnia:
| Metoda | Zwraca |
|---|---|
PanelsFor(template) | Liczba paneli; gatefold wyprowadza ją ze stylu (3 skrzydła albo 4 panele), pozostałe z FoldOptions.PanelCount. |
PanelSizeMm(template) | Rozmiar jednego panelu — czyli rozmiar strony, jaki musi mieć źródłowy PDF. |
FlatSizeMm(template) | Rozmiar wyrobu rozłożonego (panel × liczba paneli). |
Compute(template) | FoldLayout w punktach: szerokość i wysokość panelu, początek bloku, odstęp, pozycje linii falcu (FoldLinesPt()) oraz flaga FitsSheet. |
FoldOptions.SizeMode) 1.5.11Produkt składany można opisać z dwóch stron; wybór jest zapisywany w szablonie:
| Wartość | Znaczenie trim | Szerokość panelu |
|---|---|---|
Panel (domyślnie) | Jeden panel — rozmiar strony przychodzącego PDF-a. | trim.widthMm |
FlatProduct | Wyrób rozłożony, np. „A4 poziomo składane do DL”. | trim.widthMm ÷ liczba paneli |
Szablony zapisane przed 1.5.11 wczytują się jako Panel — dokładnie to, co ich
format netto już oznaczał — więc ich arkusze pozostają niezmienione.
Do 1.5.10 kontrolę mieszczenia miał wyłącznie gatefold; Z-fold i harmonijka spadały do ogólnego testu N-up,
który przy NUpX = 1 (z jakim wychodzi każdy preset falcu) sprawdzał, czy mieści się jeden
panel. Trzy panele po 210 mm na arkuszu 297 mm przechodziły walidację, po czym strategia produkowała panele
zachodzące na siebie o 114 mm. Wszystkie trzy oprawy falcowane dzielą teraz jedną kontrolę:
wymaganaSzerokość = panele × szerokośćPanelu + (panele − 1) × odstęp + 2 × marginesArkusza
wymaganaWysokość = wysokośćPanelu + 2 × marginesArkusza
Komunikat nazywa to, co zmierzono: „3 panele po 210,0mm” albo „wyrób rozłożony 297×210mm = 3×99,0mm”.
Do 1.5.10 znaczniki falcu były rysowane wyłącznie dla oprawy zeszytowej, mimo że każdy preset falcu ma je
włączone. Od 1.5.11 kreskowane znaczniki powstają przy górnej i dolnej krawędzi arkusza w pozycjach zwracanych
przez FoldLayout.FoldLinesPt() — identycznie w podglądzie i w wyeksportowanym PDF-ie.
| Typ | Panele | Opis |
|---|---|---|
| Z-fold | 3 | Trzy panele złożone w kształt Z. |
| Gatefold | 3 lub 4 | ThreePanel (6 stron, dwa skrzydła zaginają się do środka) lub FourPanel (8 stron, klasyczna brama). Skrzydła są zwężane o foldReductionMm (domyślnie 2 mm), aby nie kolidowały na linii środka. |
| Accordion | 4+ | Wiele paneli składanych naprzemiennie (harmonijka). |
Produkcja naklejek/etykiet na rolce ciągłej (web-press). Szerokość arkusza = fizyczna szerokość rolki. Opcje (RollOptions):
| Pole | Domyślnie | Opis |
|---|---|---|
maxRollLengthMm | 0 (bez limitu) | Maksymalna długość jednego segmentu wyjściowego; 0 = jeden segment o wyliczonej długości. |
gapXMm / gapYMm | 2.0 | Odstęp poziomy/pionowy między elementami. |
repeatCount | 1 | Łączna liczba elementów do wyprodukowania (variable repeat). |
allowRotation | false | Ocena obrotu 0°/90° i wybór wariantu mieszczącego więcej kroków (basic nesting). |
Powielanie JEDNEJ strony źródłowej w siatkę NxM z opcjonalnymi wzorcami obrotu i odstępem pitch (od środka do środka). Różni się od Ganging tym, że Ganging cykluje przez wiele stron i nie obraca kopii.
| Pole | Opis |
|---|---|
rotationPattern | None, AlternatingRows, AlternatingColumns, Checkerboard — wzorce obrotu 180° dla lepszego nestingu kształtów nieregularnych. |
spacingMode | GapBetween (jak Ganging) lub CenterToCenter (pitch maszynowy; rynienka ignorowana, siatka centrowana). |
horizontalPitchMm / verticalPitchMm | Odstęp od środka do środka (tylko dla trybu CenterToCenter). |
MarksOptions)| Pole | Domyślnie | Opis |
|---|---|---|
crop | true | Linie cięcia w rogach trim. |
registration | true | Pasery (krzyżyki centrujące separacje CMYK). |
colorBars | true | Paski kontrolne CMYK wzdłuż krawędzi. |
foldMarks | true | Znaczniki bigowania (falcowania). |
markLengthMm | 5.0 | Długość linii cięcia. |
markOffsetMm | 3.0 | Odstęp znaczników od krawędzi trim. |
cutterMarks | None | Markery konturu: SummaOPOS (4 czarne kwadraty w rogach) lub SummaOPOSXY (OPOS + etykieta job-ID). |
cutterMarkSizeMm | 3.0 | Bok kwadratu markera (Summa domyślnie 3 mm). |
cutterMarkOffsetMm | 5.0 | Prześwit między obszarem cięcia a markerem (Summa wymaga ~5–8 mm). |
Nowsze szablony zamiast płaskich przełączników używają profili znaczników wskazywanych przez marksProfileRef. Profile są przechowywane w pliku (file-backed store) i seedowane wbudowanymi profilami przy pierwszym uruchomieniu. Resolver używa profilu, gdy referencja jest niepusta, w przeciwnym razie wraca do przełączników legacy marks. Profile można edytować w dedykowanym edytorze (MarksProfileEditor) i obsługują m.in.: styl i pozycję paserów, styl pasków kolorów, kolory farby znaczników, kody kreskowe, klin szarości K (1.4.4).
Podgląd potrafi symulować nadruk metodą multiply blend — pokazuje ciemnienie przy nadrukowaniu kolorów CMYK na siebie, co pomaga przewidzieć efekt na prasie.
W oprawie zeszytowej wszystkie składki są zagnieżdżone w sobie. Wewnętrzne strony „wychodzą" poza krawędź zewnętrznych o grubość poprzedzających kartek. Po obcięciu zewnętrznej krawędzi marginesy wewnętrznych stron stają się węższe — nawet o kilka milimetrów przy grubszych publikacjach.
Kompensacja pełzania przesuwa treść wewnętrznych stron w kierunku grzbietu, tak aby po obcięciu marginesy były identyczne na wszystkich stronach.
CreepOptions)| Pole | Domyślnie | Opis |
|---|---|---|
enabled | false | Włącz kompensację. |
paperThicknessMm | 0.1 | Grubość pojedynczej kartki (np. 0,1 mm dla 100 g/m²; 0,13 mm dla 115 g/m²). |
Karta Pliki źródłowe PDF w lewym panelu zarządza listą dokumentów wejściowych.
ImpositionCanvas dobiera poziom szczegółowości renderowania na podstawie aktualnego zoomu, co utrzymuje płynność przy dużej liczbie arkuszy.
Preflight to automatyczna kontrola poprawności pliku PDF przed drukiem. Głęboki analizator (PdfPreflightAnalyzer) bada plik, a silnik walidacji (PrepressValidationEngine) uruchamia zestaw walidatorów i tworzy raport (PrepressValidationReport) z poziomami ważności (severity).
| Walidator | Co sprawdza |
|---|---|
| BleedValidator | Obecność i wielkość spadów. |
| PageBoxConsistencyValidator | Spójność box-ów strony (MediaBox/TrimBox/BleedBox). |
| PageSizeValidator | Wymiary stron (mieszane / nieoczekiwane rozmiary). |
| ImageDpiValidator | Rozdzielczość obrazów (zbyt niskie DPI do druku). |
| RgbColorSpaceValidator | Wykrycie przestrzeni RGB tam, gdzie oczekiwane CMYK. |
| MixedColorSpaceValidator | Mieszane przestrzenie barwne w dokumencie. |
| FontEmbeddingValidator | Nieosadzone czcionki. |
| TransparencyValidator | Przezroczystości (ryzyko przy starszych RIP). |
| SpotColorValidator | Kolory dodatkowe (spot) — wykrycie i liczba. |
| PdfStandardValidator | Zgodność z deklarowanym standardem PDF/X. |
W trybie ścisłego preflight ostrzeżenia przerywają eksport. Raport preflight można obejrzeć w dedykowanym dialogu (PreflightReportDialog), a podsumowanie generuje PreflightSummaryGenerator. W potoku eksportu preflight uruchamiany jest przed kompozycją, z opcjonalnym callbackiem potwierdzenia (confirmAfterPreflight).
Trzy odmiany różnią się dokładnie trzema rzeczami, obsługiwanymi w jednym miejscu
(ImpressExportEngine.PackageAsPdfX):
| Standard | Wersja PDF | Kolor | Przezroczystość |
|---|---|---|---|
| PDF/X-1a:2001 (ISO 15930-4) | 1.4 | tylko DeviceCMYK, DeviceGray, kolory dodatkowe | zabroniona |
| PDF/X-3:2003 (ISO 15930-6) | 1.4 | dopuszcza kolor niezależny od urządzenia (ICCBased) | zabroniona |
| PDF/X-4:2010 (ISO 15930-7) | 1.6 | jak X-3 | dozwolona |
Oba standardy są zdefiniowane na PDF 1.4, który nie zna przezroczystości. Silnik nie
spłaszcza grafiki — zamiana faktycznie półprzezroczystej treści na kryjącą wymaga
kompozycji strony, a to zadanie rasteryzatora; wykonane po cichu zamieniłoby tekst wektorowy
w piksele. Zamiast tego NativeTransparencyFlattener rozdziela dwa przypadki:
| Konstrukcja | Traktowanie |
|---|---|
/Group << /S /Transparency >> przy braku innej przezroczystości | nieaktywna — usuwana |
/CA 1, /ca 1, /BM /Normal, /SMask /None | nieaktywne — usuwane |
/ca lub /CA < 1 | maluje — eksport odrzucony |
maska miękka (/SMask) w stanie graficznym lub w obrazie | maluje — eksport odrzucony |
| tryb mieszania inny niż Normal / Compatible | maluje — eksport odrzucony |
Nieaktywne wpisy są usuwane wyłącznie wtedy, gdy cały dokument jest wolny od przezroczystości, która maluje: grupa izolowana albo z wybijaniem staje się obserwowalna, gdy w grę wchodzi prawdziwa przezroczystość.
PdfSharpCore stempluje /Group << /CS /DeviceRGB /S /Transparency >> na
każdej serializowanej stronie — zmierzone na pustej stronie bez treści i bez
przezroczystości. Usunięcie klucza przez model obiektowy nic nie daje, bo zapisujący dopisuje go
z powrotem. Grupy są więc wycinane z zapisanego pliku, a zamiennik ma tę samą długość w bajtach
(spacje są legalnym białym znakiem między tokenami PDF), dzięki czemu tablica referencji
pozostaje poprawna bez przebudowy.
Po zapisie plik jest czytany ponownie i weryfikowany: pozostała przezroczystość (a dla X-1a także pozostały DeviceRGB) przerywa eksport. Zmiana w bibliotece objawi się odmową eksportu, a nie plikiem deklarującym zgodność, której nie ma.
Po naciśnięciu Eksportuj (Ctrl+E) ExportPipeline.RunAsync wykonuje:
ExportOptions)| Opcja | Opis |
|---|---|
| PDF/X-4 | Standard ISO 15930-7. Obsługuje przezroczystości, warstwy i profile ICC. |
| Profil ICC | Profil kolorów wyjściowych (np. ISOcoated_v2_eci dla offsetu na papierze kredowanym). |
| Ścisły preflight | Zatrzymaj eksport przy ostrzeżeniach. |
| Zakres arkuszy | Np. 1-5, 2,4,6, 1,3-7 (parser RangeExpression). |
| Numerowanie stron | Stempel numeracji (PageNumberingOptions). |
| Przewodnik cięcia | Strona ze schematem cięcia gilotyną + tabelą pozycji (--cutting-guide w CLI). |
PDF/X-4 (ISO 15930-7) to standard dla druku obsługujący przezroczystości, warstwy i profile ICC, zalecany przez większość drukarni. Od 1.5.2 pakowanie wykonuje domyślnie natywny imPRESS Export Engine (OutputIntent + XMP + TrimBox + PDF 1.6, konwersja wektorowego RGB→CMYK przez profil ICC silnikiem kolorów Windows); pliki z obrazami RGB oraz tryby X-1a/X-3 obsługuje Ghostscript (dołączony, wersja 10.07) z plikiem definicji (PdfXDefinitionFile / PDFX_def.ps) i profilem ICC.
| Profil | Zastosowanie |
|---|---|
| ISOcoated_v2_eci / PSOcoated_v3 | Offset, papier kredowany błyszczący. |
| PSO_Uncoated_ISO12647 / PSOuncoated_v3_FOGRA52 | Offset, papier niepowlekany. |
| eciRGB_v2 / sRGB | Druk cyfrowy, wydruki RGB. |
--permit-file-read dla profilu ICC w PDFX_def.ps. Rzeczywiste błędy Ghostscript trafiają na stdout (nie tylko stderr).
Po zaplanowaniu impozycji prawy panel pokazuje statystyki obliczane przez JobStatistics:
| Wskaźnik | Opis |
|---|---|
| Arkusze i sygnatury | Liczba fizycznych arkuszy z maszyny. |
| Wypełnione / puste sloty | Ile pozycji na arkuszu zajętych stronami. |
| Powierzchnia papieru | Brutto i netto (po obcięciu) w m². |
| Szacowana waga | Na podstawie gramatury (g/m²). |
| Wykorzystanie / odpad | Procent powierzchni trafiającej do publikacji vs. obcinanej. |
| Szacowany koszt | Z pola „Cena za arkusz". |
| Informacje o oprawie | Typ, stron na sygnaturę, spad, rynienka. |
Podsystem hot folder monitoruje wskazane katalogi i automatycznie przetwarza pliki, które się w nich pojawią. Architektura jest oparta na Microsoft.Extensions.Hosting i odporna na błędy (retry/backoff przez Polly, idempotencja przez ledger SQLite).
| Komponent | Rola |
|---|---|
| HotFolderConfig / Store | Konfiguracja folderów (hotfolders.json), walidacja. |
| Watching | Obserwator (FileSystemWatcher lub polling), debouncer zdarzeń, sonda stabilności pliku (czeka aż plik przestanie rosnąć). |
| Queueing | Kolejka zadań, polityka backoff przy błędach. |
| State | Ledger SQLite (SqliteProcessingLedger) — śledzi przetworzone pliki, zapobiega ponownemu przetwarzaniu. |
| Processing | Throttling Ghostscript (limit równoległych konwersji), strategia nazewnictwa wyjścia, przejścia plików. |
| Hosting | Host i menedżer (start/stop/reload), snapshot statusu, metryki diagnostyczne. |
Hot foldery konfiguruje się w dialogu menedżera (HotFolderManagerDialog) i edytora (HotFolderEditDialog), lub z CLI (patrz rozdział 16). Domyślny limit równoległych procesów Ghostscript to 2 (konfigurowalny w globalnych ustawieniach).
%APPDATA% / %LOCALAPPDATA% (nigdy w Program Files) — patrz rozdział 17.
imPRESS Studio rozpoznaje argumenty wiersza poleceń (parser System.CommandLine). Bez argumentów uruchamia GUI; z argumentem-czasownikiem działa headless.
impose"imPRESS Studio.exe" impose \
--source wejscie.pdf \
--output wyjscie.pdf \
--template szablon.json \
--pdfx4
| Opcja | Wymagane | Opis |
|---|---|---|
--source | tak | Ścieżka do źródłowego PDF. |
--output | tak | Ścieżka pliku wyjściowego. |
--template | tak | Plik szablonu JSON. |
--pdfx4 | nie | Konwersja do PDF/X-4 przez Ghostscript. |
--gs | nie | Ścieżka do Ghostscript (jeśli nie w PATH). |
--cutting-guide | nie | Dołącz stronę przewodnika cięcia. |
Kody wyjścia: 0 — sukces; 1 — błąd; 2 — brak/nieważna licencja.
license"imPRESS Studio.exe" license fingerprint
"imPRESS Studio.exe" license info
"imPRESS Studio.exe" license activate --key KLUCZ_BASE64
hotfolder"imPRESS Studio.exe" hotfolder run # demon w foreground (Ctrl+C zatrzymuje)
"imPRESS Studio.exe" hotfolder list # status wszystkich folderów
"imPRESS Studio.exe" hotfolder start <GUID>
"imPRESS Studio.exe" hotfolder stop <GUID>
"imPRESS Studio.exe" hotfolder reload # przeładuj hotfolders.json
Komenda hotfolder run musi być pierwszą komendą procesu — jest przechwytywana w Program.Main przed parserem, ponieważ wymaga zestawienia hosta wokół CLI.
Helper AppPaths centralizuje wszystkie ścieżki. Dane roaming idą do %APPDATA%\imPRESS Studio, dane lokalne do %LOCALAPPDATA%\imPRESS Studio.
| Lokalizacja | Zawartość |
|---|---|
%APPDATA%\…\templates | Szablony impozycji (JSON). |
%APPDATA%\…\presets | Presety. |
%APPDATA%\…\licenses | Plik licencji (.json). |
%APPDATA%\…\icc | Profile ICC użytkownika. |
%APPDATA%\…\export-presets | Presety eksportu. |
%APPDATA%\…\localization | Nakładki lokalizacji (własne paczki .json). |
%APPDATA%\…\marks-profiles | Profile znaczników. |
%LOCALAPPDATA%\…\logs | Logi (Serilog). |
%LOCALAPPDATA%\…\state | Stan, baza SQLite hot folderów. |
%LOCALAPPDATA%\…\cache | Cache. |
Interfejs jest w pełni lokalizowany przez LocalizationService i rozszerzenie markup LocExtension. Wbudowane języki obejmują m.in.: polski (pl), angielski (en), niemiecki (de), hiszpański (es), francuski (fr), włoski (it), japoński (ja), koreański (ko), rosyjski (ru), turecki (tr). Własne paczki językowe (.json) można dodać w katalogu nakładek lokalizacji.
Jednostki wyświetlania (DisplayUnitsService) obsługują milimetry i cale. Model danych jest kanoniczny w milimetrach; konwersja odbywa się na granicy XAML przez MmConverter. Przy przełączaniu mm/cale presety szablonów zamieniają zestawy ISO ↔ US (1.4.5).
| Skrót | Działanie |
|---|---|
| Ctrl+O | Wczytaj plik PDF |
| Ctrl+P | Zaplanuj impozycję |
| Ctrl+E | Eksportuj do PDF |
| Ctrl++ / Ctrl+- | Przybliż / oddal podgląd |
| Ctrl+0 / F | Dopasuj widok do okna |
| R | Obróć widok o 90° |
| ← / → | Poprzedni / następny arkusz |
| F1 | Pomoc wewnątrz aplikacji |
| Kółko myszy | Zoom względem kursora |
| Przeciąganie | Przesuwanie widoku (pan) |
| Drag & drop PDF | Wczytaj plik przez upuszczenie |
Otwórz Licencja i wklej klucz aktywacyjny lub wczytaj plik .json.
Ghostscript jest dołączony, ale przy własnej ścieżce wskaż gswin64c.exe w opcjach (lub --gs w CLI). Pamiętaj o uprawnieniu odczytu profilu ICC w trybie SAFER.
Sprawdź, czy PDF nie jest zaszyfrowany (Info w lewym panelu). PDF-y z ograniczeniami mogą wymagać usunięcia zabezpieczeń.
Trim + spad + rynienka + marginesy arkusza przekracza rozmiar arkusza. Wybierz większy arkusz lub zmniejsz marginesy/spad. Walidacja szablonu sygnalizuje to komunikatem o wymaganej szerokości/wysokości.
Zamknij plik wyjściowy w Acrobacie/przeglądarce lub wybierz inną ścieżkę.
Eksport wieloarkuszowy z PDF/X-4 jest intensywny. Rozważ eksport bez PDF/X-4 i konwersję zbiorczą skryptem, lub użyj hot folderów z throttlingiem.
| Wersja | Najważniejsze zmiany |
|---|---|
| 1.0.x | Pierwsze wydania: silnik impozycji, oprawa zeszytowa i klejona, podgląd, eksport PDF, znaczniki, kompensacja pełzania, CLI. |
| 1.1.0 | Podsystem Hot Folder (kolejka, ledger SQLite, throttling Ghostscript, host). |
| 1.1.1 | Głęboki preflight prepress (analizator PDF + silnik walidacji z 10 walidatorami). |
| 1.2.x | Roll-fed step-and-repeat, sheet-fed step & repeat, markery Summa OPOS / OPOS-XY (print&cut), overlay loga (PNG/JPG/PDF na każdym arkuszu). |
| 1.3.x | Profile znaczników (marks profiles) z edytorem i file-backed store; rozbudowa opcji znaczników. |
| 1.4.0–1.4.3 | Dalsze usprawnienia układów, znaczników i przepływu eksportu. |
| 1.4.4 | Wydzielenie paska kolorów z parsera; klin szarości K (grayscale wedge). |
| 1.4.5 | Presety szablonów zamieniają zestawy ISO ↔ US przy przełączaniu mm/cale; zakres stron resetowany przy zmianie pliku źródłowego. |
| 1.4.6–1.4.7 | Pakiet napraw stabilności i poprawności (spady quarter-turn, mirroring duplex, kolejność Z-fold/Accordion, wycieki zasobów). |
| 1.4.8 | Numeracja biletów, work-and-turn, podgląd spasowania przód/tył, doradca arkusza, PDF/X-3, Preflight 2.0 (zawartość stron i adnotacje), parytet CLI. |
| 1.5.0 | imPRESS Export Engine: natywny PDF/X-4 z konwersją wektorowego RGB→CMYK przez ICC (WCS) — bez Ghostscripta; wybór silnika i wersji PDF przy eksporcie; natywny skan pokrycia farbą; przeprojektowany menedżer szablonów (zakładki, sekcje kontekstowe). |
| 1.5.1 | Naprawa cichej mutacji szablonu (Run.Text TwoWay), preflight po polsku, komunikaty z nazwą ocenianego szablonu. |
| 1.5.2 | Hot foldery 2.0 (szablon z listy, silnik i wersja PDF per folder, sekcja Zaawansowane, auto-Ghostscript); komplet ramek stron (CropBox/BleedBox/TrimBox) w eksporcie. |
| 1.5.4–1.5.6 | Poprawki i usprawnienia przepływu eksportu oraz podglądu. |
| 1.5.7 | Pasek arkuszy przeniesiony do inspektora; kliknięcie miniatury przestaje kasować plan. |
| 1.5.8 | Sugestie szablonów szeregowane sześcioma ważonymi czynnikami, z uzasadnieniem i pamięcią wyborów drukarni; własne produkty; profile prepress (progi preflightu jako profil maszyny, pięć wbudowanych); preflight: strefa bezpieczna, limit farby (TAC) czytany z content streamu, budowa czerni, trapping, kolory dodatkowe, warstwy, kodowania obrazów; kompensacja pełzania z gramatury i rodzaju papieru. |
| 1.5.9 | Listy rozmiarów podążają za szablonem (arkusz wybrany jest arkuszem użytym); dopasowanie nazwy arkusza z przyrostkiem orientacji; Optymalizuj N-up potrafi także zmniejszyć układ, tą samą arytmetyką co walidacja. |
| 1.5.10 | Ganging kolejnych stron dokumentu (GangingPageMode); kolejność stron przeciąganiem miniatur, trzymana jako permutacja i odtwarzana po przebudowie dokumentu; naprawa {loc:Loc} — przełączanie języka działa w całym interfejsie; pomoc w aplikacji napisana od nowa w obu językach. |
| 1.5.12 | Natywne pakowanie PDF/X-1a i PDF/X-3 (PackageAsPdfX) — Ghostscript przestaje być zależnością; usuwanie nieaktywnych konstrukcji przezroczystości i odmowa przy przezroczystości, która maluje (NativeTransparencyFlattener); weryfikacja zapisanego pliku pod kątem przezroczystości i (dla X-1a) DeviceRGB; skan pokrycia farbą i wyszukiwanie Ghostscripta rozdzielone na NativeInkScanner i GhostscriptLocator. |
| 1.5.11 | Geometria falcu liczona z produktu (FoldGeometry, FoldSizeMode) zamiast z podziału arkusza; wspólna kontrola mieszczenia paneli; znaczniki falcu dla opraw falcowanych; podgląd arkusza na żywo i walidacja na żywo w menedżerze szablonów; rozmiar użytku z listy formatów standardowych; presety przemianowane na punkty startowe i pogrupowane; wykrywanie spadu w wymiarach pliku oraz progi dopasowania skalowane z formatem w sugestiach; kontrola mieszczenia siatki Step & Repeat z rozstawem osi. |
| 1.5.3 | Zakładka Podgląd: miniatury bez limitu z przesuwnym oknem pamięci i edycją stron (obrót, skala szarości natywnie na silniku); Plik → Zapisz PDF; start bez auto-szablonu; Informacje o pliku na zakładkach; pigułka pliku (wersja/kolory/min DPI); tolerancyjny dekoder Flate. |
Pełny, szczegółowy changelog znajduje się w pliku changelog.html dołączonym do aplikacji.