Licencie

PDFGym je zložený z open source knižníc a ich kód posiela do vášho prehliadača, aby urobil prácu. Väčšina z nich má voľnú (permisívnu) licenciu. Dve sú copyleftové a každá z nich žije presne na jednej trase. Nižšie je každá knižnica zoskupená podľa úlohy, ktorú plní, spolu s licenciou a miestom, kde si ju možno prečítať.

Čítanie a zápis

Dve polovice každej operácie. Čítačka je zároveň kontrolór: každý výsledok otvorí znova a ohlási, čo sa skutočne dostalo na stranu.

KnižnicaÚloha tuLicenciaZdroj
pdf.js Úloha tuČíta a vykresľuje PDF a kontroluje každý výsledok. LicenciaApache-2.0 ZdrojÚplné znenie
@cantoo/pdf-lib Úloha tuZapisuje PDF. LicenciaMIT ZdrojÚplné znenie

Obrázky a písma

Všetko, z čoho sa strana PDF skladá okrem textu: kodér JPEG, dekodéry ukryté vo vnútri pdf.js, podpora TIFF a nástroj na výrez písma, ktorý udržiava vložené písma malé.

KnižnicaÚloha tuLicenciaZdroj
@jsquash/jpeg Úloha tuSpúšťa kodér JPEG v prehliadači. LicenciaApache-2.0 ZdrojÚplné znenie
mozjpeg, libjpeg-turbo Úloha tuSamotný kodér JPEG. LicenciaTri licencie v štýle BSD vrátane IJG ZdrojÚplné znenie
harfbuzzjs Úloha tuZmenšuje vložené písma na glyfy, ktoré dokument skutočne kreslí. LicenciaMIT ZdrojÚplné znenie
UTIF.js Úloha tuDekóduje bežné aj viacstranové súbory TIFF. LicenciaMIT ZdrojÚplné znenie
pako Úloha tuRozbaľuje komprimované obrazové dáta TIFF pre UTIF.js. LicenciaMIT a Zlib ZdrojÚplné znenie
OpenJPEG Úloha tuDekóduje obrázky JPEG 2000 vo vnútri pdf.js. LicenciaBSD-2-Clause ZdrojÚplné znenie
JBIG2, z PDFium Úloha tuDekóduje obrázky JBIG2 vo vnútri pdf.js. LicenciaBSD, The PDFium Authors ZdrojÚplné znenie
qcms Úloha tuAplikuje farebné profily ICC vo vnútri pdf.js. LicenciaMIT, Mozilla ZdrojÚplné znenie

Navrhovanie súkromného textu

Nástroje na súkromie navrhujú, čo môže byť osobný údaj. Model aj jeho spúšťač sa dodávajú do prehliadača a návrhy ho nikdy neopustia.

KnižnicaÚloha tuLicenciaZdroj
Google BERT Mini Úloha tuŠtvorvrstvový základný model na návrhy súkromných údajov. LicenciaApache-2.0 ZdrojZáznam o zdroji
ONNX Runtime Web 1.29.0 Úloha tuSpúšťa tento detektor vo worker vlákne prehliadača. LicenciaMIT ZdrojÚplné znenie

Dvaja hostia s domácimi pravidlami

Dva známe PDF nástroje, MuPDF a Ghostscript, majú licenciu AGPL v3. Prevádzka ktoréhokoľvek z nich za webovou službou zaväzuje prevádzkovateľa zverejniť celú službu za rovnakých podmienok.

PDFGym nepoužíva ani jeden.

Dva copyleftové komponenty, ktoré dodáva, zostávajú vždy len na jednej trase.

Dekodér HEIC sa stiahne, až keď na stránke HEIC do PDF vyberiete fotku HEIC alebo HEIF. Vykresľovač tlačových platní pre Kontrolu pred tlačou sa volá iba z nástroja Kontrola pred tlačou a beží vo vlastnom worker vlákne.

Žiadny iný nástroj ani jeden z nich neimportuje ani nelinkuje.

KnižnicaÚloha tuLicenciaZdroj
@discourse/heic Úloha tuNačíta dekodér HEIC iba na trase HEIC do PDF. LicenciaApache-2.0 ZdrojÚplné znenie
libheif 1.19.7 Úloha tuČíta kontajner HEIC vo vnútri dekodéra viazaného na trasu. LicenciaLGPL-3.0-or-later ZdrojPresný zdroj
libde265 1.0.15 Úloha tuDekóduje obraz HEVC vo vnútri dekodéra viazaného na trasu. LicenciaLGPL-3.0-or-later ZdrojPresný zdroj
Poppler 26.02.0 Úloha tuVykresľuje separačné platne pre Kontrolu pred tlačou, vo vlastnom worker vlákne. LicenciaGPL-2.0-or-later ZdrojÚplné znenie
OpenJPEG 2.5.3 Úloha tuDekóduje obrázky JPEG 2000 v tom istom worker vlákne. LicenciaBSD-2-Clause ZdrojÚplné znenie

Obe používajú vydaný upstream kód bez zmien.

Build Kontroly pred tlačou možno zopakovať z publikovaných zdrojov: záznam o zdroji uvádza presné archívy Popplera a OpenJPEG s ich súčtami SHA-256, obraz Emscripten podľa digestu a adaptér a build skript, ktoré vytvorili WebAssembly.

Časté otázky

Môžem tento kód použiť vo vlastnom projekte?
Každá knižnica si ponecháva vlastnú licenciu, uvedenú vyššie spolu s úplným znením. Voľné licencie (MIT, BSD, Apache-2.0) umožňujú opätovné použitie s uvedením autorstva; dekodér LGPL a vykresľovač platní GPL nesú copyleftové povinnosti opísané v ich textoch.
Prečo sú copyleftové časti ohradené na jednotlivých trasách?
Aby ich povinnosti zostali malé a overiteľné. Dekodér HEIC sa načíta iba tam, kde sa čítajú fotky HEIC, a worker s Popplerom odpovedá iba Kontrole pred tlačou. Nič iné ani jedno z toho neimportuje ani nelinkuje.
Boli knižnice upravované?
Nie. Všetko sa dodáva tak, ako to vydal upstream, preto sú čísla verzií a záznamy o zdrojoch vyššie presné. Opravy od komunity prídu s ďalšou aktualizáciou, a nie že by žili v súkromnom forku.
Kde je vlastný kód webu?
Nástroje, ktoré tieto knižnice prepájajú - pracovný priestor, kontroly, stránky - sú vlastnou prácou projektu. Ťažkú prácu robia knižnice za podmienok uvedených vyššie; overovanie, ktoré odmietne chybné stiahnutie, je naše.

Kam ďalej