Què passa realment quan comprimeu un PDF
El Compress de PDF123 fa recompressió de fluxos i empaquetatge de fluxos d'objectes amb qpdf, no reescalat d'imatges ni subconjuntat de fonts. La linealització gairebé no canvia la mida del fitxer.

Dos PDF poden veure's idèntics a la pantalla i, tot i així, diferir en tres ordres de magnitud: 50 KB contra 50 MB. La diferència gairebé mai no és als operadors de text. En un contracte de vint pàgines, aquests operadors solen ocupar unes desenes de kilobytes; tota la resta són mostres d'imatge, un programa de font incrustat sencer i la densitat amb què s'empaqueten els fluxos i els objectes.
Això té una conseqüència que val la pena dir d'entrada: «comprimir un PDF» no és una acció, sinó quatre. Cadascuna encongeix coses diferents i té un preu diferent, i tractar-les com una de sola produeix experiències contradictòries: el fitxer es comprimeix però no s'encongeix, o s'encongeix però les pàgines perden nitidesa.
La mida ve de tres fonts
La majoria de casos de «per què és tan gran aquest PDF?» comencen amb un escaneig o una fotografia d'alta resolució encara incrustats a la mida de captura. Val la pena fer l'aritmètica un cop: una pàgina de mida carta a 8,5 × 11 polzades capturada a 300 DPI fa uns 2550 × 3300 píxels, i a tres bytes per píxel això són uns 25 MB sense comprimir. Vint pàgines així sovint arriben als 60-80 MB abans que ningú no toqui la compressió.
La segona font són les fonts tipogràfiques. Un PDF pot incrustar un programa de font complet perquè qualsevol màquina renderitzi el text de manera idèntica, i aquest cost es paga per la mida de les taules de glifs, no per la quantitat de text que realment es llegeix. És per això que el subconjuntat de fonts és una palanca de mida a part.
La tercera és l'empaquetatge mateix. Un mateix contingut es pot desar amb configuracions de compressió malgastadores, o els seus objectes poden quedar escampats pel fitxer, cadascun amb la seva pròpia comptabilitat. Res d'això no canvia ni un píxel ni un glif, i és exactament la part que la recompressió de fluxos pot tocar.
«Comprimir» són quatre palanques diferents
Hi ha quatre palanques sobre la mida; actuen en capes diferents i els seus costos gairebé no es trepitgen. Triar la palanca equivocada és la causa més habitual que una compressió sembli no fer res.
| Palanca | Què toca | Guany de mida | Cost |
|---|---|---|---|
| Recompressió de fluxos i fluxos d'objectes | Com es comprimeixen els fluxos de contingut, com es desen i s'empaqueten els objectes | Depèn de com de lax era l'original | L'aspecte de les pàgines no canvia |
| Reescalat d'imatge | El nombre de píxels, és a dir, la resolució | Gran | Resolució reduïda permanentment |
| Recodificació d'imatge amb pèrdua | La representació en bytes del mapa de bits | Gran | Qualitat d'imatge reduïda |
| Subconjuntat de fonts | Les taules de glifs incrustades | Moderat | Els glifs no utilitzats ja no són editables |
| Linealització | L'ordre dels objectes | Gairebé zero | A canvi, guanya temps de càrrega de la primera pàgina |
Les quatre primeres files s'anomenen «compressió» a la lleugera, però només la primera deixa el contingut intacte. També és la fila amb un rendiment més fàcil de maljudicar: un escaneig la mida del qual prové sobretot de mostres d'imatge en brut té poc marge per eliminar-hi redundància, i les palanques que el reduirien de debò són el reescalat i la recodificació amb pèrdua, al preu de perdre aquella resolució i aquella qualitat per sempre.
Quina de les quatre fa el Compress de PDF123
Comprimeix PDF (POST /api/v1/misc/compress-pdf) fa només la primera fila. Executa qpdf amb la compressió dels fluxos no comprimits (--compress-streams=y), una segona passada sobre els fluxos ja comprimits amb Flate (--recompress-flate) i l'empaquetatge dels objectes en fluxos d'objectes (--object-streams=generate).
No reescala imatges, no recodifica mapes de bits a una qualitat JPEG inferior ni fa subconjunts de fonts. Les pàgines haurien de veure's igual, i l'estalvi ve de la recompressió Flate i de l'empaquetatge de fluxos d'objectes.
La condició de fallada mereix la mateixa claredat. Quan la mida d'un fitxer prové sobretot de dades d'imatge ja comprimides com a JPEG, Flate no té res més a esprémer, perquè aquests bytes d'imatge queden fora de l'abast dels tres commutadors anteriors. És per això que un paquet d'escaneigs pot tornar només uns quants per cent més petit, mentre que un PDF amb molt de text de mida similar hi guanya bastant més.
El camí invers és Descomprimeix PDF, que expandeix els fluxos per inspeccionar-los (--qdf, fluxos d'objectes desactivats) i tampoc no canvia l'aspecte de les pàgines.
Els problemes que no són de mida volen una altra via
| Què necessiteu | La via que cal seguir |
|---|---|
| Aspecte idèntic, només treure la despesa d'empaquetatge | Comprimeix PDF |
| Un paquet d'escaneigs realment massa gran i pèrdua de qualitat acceptable | Reescalat o recodificació amb pèrdua, no aquest Compress |
| Encara editable, però el caràcter següent no s'escriu | Una altra configuració d'exportació o el fitxer d'origen, vegeu el subconjuntat de fonts |
| Que el navegador vegi abans la primera pàgina | La linealització resol la primera pintada, no la mida |
| El fitxer no s'obre de cap manera | Repara PDF; és un problema d'estructura, no de mida |
Hi ha un parany a l'última fila: aquí Linealitza PDF no és una implementació a part, sinó un àlies de Compress. Tots dos apunten a la mateixa operació; l'identificador canònic és misc/compress-pdf i linearize-pdf n'és un àlies, el portal sempre envia linearize=true i optimizeLevel=1 per a aquesta eina, el servidor no llegeix cap dels dos camps i a qpdf mai no se li passa --linearize. L'operació que realment linealitza un fitxer és Afegeix contrasenya, quan xifra.
Així doncs, si el que voleu és el mateix aspecte en un fitxer més petit, Comprimeix PDF és tota la resposta. Si voleu reduir imatges amb pèrdua o fer subconjunts de fonts, aquesta via no és la palanca adequada. El fitxer torna directament, sense cap compte. Per veure on viuen de debò els objectes, els fluxos i la taula de referències creuades, continueu amb Què hi ha dins d'un PDF.