Komprimera PDF under Linux: använd QPDF och Ghostscript på rätt sätt

Under Linux kan du i terminalen optimera en PDF strukturellt med ett dokumenterat QPDF-kommando eller låta Ghostscript pdfwrite bygga upp den på nytt. Om den nya filen är mindre och fortfarande klarar allt du behöver visar sig först när du kontrollerar den sparade utdatafilen.

Strukturoptimering eller ombyggnad: vilket verktyg passar?

De båda programmen arbetar på helt olika sätt. QPDF-kommandot på den här sidan lämnar innehållet på dina sidor som det är och sparar bara filens objekt på nytt och så kompakt som möjligt. Det gör det till exempel genom att samla objekt i objektströmmar och komprimera om Flate-data. Bilder samplas varken ner eller kodas om som JPEG. QPDF:s valfria bildoptimering är ett separat steg med förluster, som nästa avsnitt kort sätter i sitt sammanhang. De enskilda alternativen beskrivs i QPDF-dokumentationen.

Ghostscript fungerar annorlunda. Med utdataenheten pdfwrite läser det in PDF-filen och skapar en ny fil från varje sidas ritinstruktioner. Text och vektorgrafik bevaras i regel som sådana, så sidorna blir alltså inte bara bilder. Beroende på inställning kan Ghostscript dock räkna om bilder. Dessutom kan allt som inte hör till sidans synliga utseende förändras. Detta förklaras i Ghostscript-handboken om pdfwrite.

Vissa program erbjuder en tredje metod: De skapar varje sida på nytt som en bild. Då går inbyggd text, sökfunktion och interaktiva element i regel förlorade. Inget av de båda kommandona på den här sidan arbetar så.

Tre sätt att minska storleken på en PDF och vad de ändrar i dokumentet
MetodVad som händerBilderText och funktioner
QPDF, strukturoptimeringObjekt och Flate-data sparas mer kompaktSamplas inte ner. En valfri omkodning till JPEG kan leda till att detaljer går förlorade.Sidinnehållet byggs inte upp på nytt, men kontrollera ändå resultatet
Ghostscript pdfwrite, ombyggnadSidor skapas på nytt utifrån sina ritinstruktionerKan samplas ner beroende på förinställningText och vektorer bevaras oftast. Länkar, formulär och metadata kan ändras.
Skapa sidor som bilderVarje sida blir en bildBeror på den valda upplösningenInbyggd text, sökfunktion och interaktiva element går i regel förlorade

Ingen av dessa metoder garanterar en mindre fil. Som tumregel gäller: Om din PDF främst består av text och vektorgrafik bör du börja med QPDF. Det gäller också om bilder, länkar eller formulär ska ändras så lite som möjligt. Ghostscript kan vara aktuellt om stora foton eller skanningar står för storleken och du kan offra lite bildkvalitet för det. Vad förlustfri komprimering och komprimering med förluster konkret innebär förklaras i guiden Komprimera PDF utan kvalitetsförlust.

Program med grafiskt gränssnitt använder samma metoder. Enligt egna uppgifter skiljer PDFsam mellan ren strukturoptimering i utgåvan Basic och separat bildkomprimering i utgåvorna Visual och Enhanced. Äldre anvisningar för filhanterarskript eller gränssnitt som anropar Ghostscript i bakgrunden gäller delvis tidigare Ubuntu-versioner. Följ därför inte deras installationssteg utan att kontrollera dem. PDF24 Creator finns enligt tillverkaren bara för Windows. Någon Linux-utgåva erbjuds inte.

Om du inte vill installera något kan du använda PDF-kompressorn i webbläsaren. Den bearbetar filen på din enhet utan att ladda upp den. Vi har dock inte testat den separat i Linux-webbläsare. Hur lokal bearbetning i webbläsaren skiljer sig från verkligt offlinearbete beskrivs i guiden Komprimera PDF utan uppladdning.

Kontrollera versionen och skriv till en separat utdatafil

Översikt över kommandona

Välj ett av de sex kommandona i den här guiden. Du ser kommandot oförändrat och får veta vad varje del betyder.

Kommandona kommer från de officiella handböckerna för QPDF och Ghostscript. Vi har inte själva kört dem under Ubuntu eller någon annan distribution. De installerade versionerna på ditt system kan skilja sig från dem som beskrivs i onlinedokumentationen.

Den här sidan kör inga kommandon och visar ingen terminalutmatning. Du ser vad ditt system meddelar först när du själv kör ett kommando.

Visa QPDF-version

Visar den installerade QPDF-versionen. Kontrollera den innan du använder de övriga kommandona.

Visar den installerade QPDF-versionen.
qpdf --version

Du kan också markera och kopiera kommandot direkt i kodfältet.

Kommandots delar
qpdfProgram
Anropar kommandoradsprogrammet QPDF.
--versionVisa version
Skriver ut den version av QPDF som används på ditt system.

Om skalet meddelar att kommandot inte hittades är QPDF förmodligen inte installerat. Paketnamn och installation beror på din distribution.

Avsnitt i guiden

Visa Ghostscript-version och utdataenheter

Visar Ghostscript-versionen och de tillgängliga utdataenheterna.

Visar Ghostscript-versionen och tillgängliga utdataenheter.
gs -h

Du kan också markera och kopiera kommandot direkt i kodfältet.

Kommandots delar
gsProgram
Anropar Ghostscript. Under Unix heter programmet gs.
-hHjälp
Skriver ut version, alternativ, format, tillgängliga utdataenheter och sökväg.

Om skalet meddelar att kommandot inte hittades är Ghostscript förmodligen inte installerat. Anteckna distribution och version så att du senare kan följa upp hur resultaten uppstod.

Avsnitt i guiden

Spara strukturen mer kompakt

Sparar filens objekt på nytt och så kompakt som möjligt. Bilderna varken nedsamplas eller kodas om till JPEG.

QPDF-kommando från dokumentationen: sparar strukturen mer kompakt utan att sampla ner bilder eller koda om dem som JPEG.
qpdf "original.pdf" --object-streams=generate --compress-streams=y --decode-level=generalized --recompress-flate --compression-level=9 "optimiert-qpdf.pdf"

Du kan också markera och kopiera kommandot direkt i kodfältet.

Kommandots delar
qpdfProgram
Anropar kommandoradsprogrammet QPDF.
"original.pdf"Indatafil
PDF-filen som läses. Resultatet hamnar i en separat fil.
--object-streams=generateSkapa objektströmmar
Samlar lämpliga objekt i objektströmmar och komprimerar dem. Utdata får då minst PDF-version 1.5.
--compress-streams=yKomprimera strömmar
Komprimerar strömmar med Flate om de inte redan är komprimerade på annat sätt.
--decode-level=generalizedPacka upp med generella filter
Packar upp data med generella filter som stöds, till exempel LZW, Flate, ASCII85 och ASCIIHex. JPEG-data (DCT) packas inte upp.
--recompress-flateKomprimera om Flate
Packar upp befintliga Flate-strömmar och komprimerar dem på nytt. Det kan göra att skrivningen tar längre tid.
--compression-level=9Komprimeringsnivå
Väljer den högsta zlib-nivån för Flate inom det dokumenterade intervallet från 1 till 9. Högre nivåer tar längre tid. Värdet har inget med JPEG-kvalitet att göra.
"optimiert-qpdf.pdf"Utdatafil
Den nya filens namn. I de båda kontrollkommandona används den som indata.

Först när du jämför antalet byte ser du om den nya filen är mindre. Ett separat namn för utdatafilen skyddar inte mot att en befintlig fil med samma namn skrivs över. Välj därför ett namn som ännu inte används. Kommandot garanterar inte att en digital signatur förblir giltig.

Avsnitt i guiden

Bygg om PDF med pdfwrite

Ghostscript läser in PDF-filen och skapar en ny fil utifrån ritinstruktionerna för varje sida, här med förinställningen /ebook.

Ghostscript-exempel med förinställningen /ebook. Bilddetaljer och dokumentfunktioner kan ändras.
gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -dPDFSETTINGS=/ebook -sOutputFile="optimiert-gs.pdf" "original.pdf"

Du kan också markera och kopiera kommandot direkt i kodfältet.

Kommandots delar
gsProgram
Anropar Ghostscript.
-dSAFERÅtkomstkontroll
Begränsar åtkomsten till filer och enheter. Sedan version 9.50 är detta standard. Det är ingen allmän säkerhetsgaranti.
-dBATCHAvsluta efteråt
Avslutar Ghostscript så snart de angivna filerna har bearbetats, i stället för att växla till interaktivt läge.
-dNOPAUSEUtan paus
Undertrycker frågan och pausen i slutet av varje sida.
-sDEVICE=pdfwriteUtdataenhet
Väljer pdfwrite, som skapar en ny PDF. Text och vektorgrafik bevaras i regel. Allt som inte ingår i sidans synliga innehåll kan ändras.
-dPDFSETTINGS=/ebookFörinställning
Ställer in en uppsättning enskilda parametrar med medelhög bildupplösning. Namnet beskriver ett användningsområde, ingen kvalitetsnivå eller garanterad besparing.
-sOutputFile="optimiert-gs.pdf"Utdatafil
Anger den nya filens namn.
"original.pdf"Indatafil
PDF-filen som Ghostscript läser in.

Bilddetaljer och dokumentfunktioner kan ändras även om sidorna ser likadana ut. Ingen viss storlek eller kvalitet utlovas. Kontrollera den sparade utdatafilen och välj ett filnamn som ännu inte används.

Avsnitt i guiden

Kontrollera utdatafilens uppbyggnad

Kontrollerar syntaxen i den sparade utdatafilen. För Ghostscript-resultatet byter du ut filnamnet.

Kontrollerar syntaxen i den sparade utdatafilen. För Ghostscript-resultatet byter du ut filnamnet.
qpdf "optimiert-qpdf.pdf" --check

Du kan också markera och kopiera kommandot direkt i kodfältet.

Kommandots delar
qpdfProgram
Anropar kommandoradsprogrammet QPDF.
"optimiert-qpdf.pdf"Fil som ska kontrolleras
Den tidigare sparade utdatafilen från QPDF-kommandot.
--checkKontrollera uppbyggnaden
Kontrollerar struktur, kryptering, linjärisering och strömmarnas kodning.

Returvärdet 0 betyder att kontrollen inte hittade några fel, 2 betyder fel och 3 betyder varningar. Kontrollen gäller bara filens uppbyggnad. Den visar inte om filen ser rätt ut, om formulär och länkar fungerar eller om den är ofarlig.

Avsnitt i guiden

Skriv ut sidantal

Skriver ut antalet sidor i den sparade utdatafilen. Kör kommandot igen med originalets namn och jämför de båda talen.

Visar sidantalet i den sparade utdatafilen. Kör kommandot igen med originalets namn och jämför.
qpdf "optimiert-qpdf.pdf" --show-npages

Du kan också markera och kopiera kommandot direkt i kodfältet.

Kommandots delar
qpdfProgram
Anropar kommandoradsprogrammet QPDF.
"optimiert-qpdf.pdf"Fil vars sidor ska räknas
Den tidigare sparade utdatafilen från QPDF-kommandot.
--show-npagesRäkna sidor
Skriver ut antalet sidor i den angivna filen.

Samma sidantal betyder inte att innehåll, bilder och funktioner är oförändrade. Granska sidorna själv.

Avsnitt i guiden

Knappen skriver det visade kommandot till urklipp först när du klickar på den. Den läser inte urklipp, sparar ingenting och skickar ingenting.

Kommandona på den här sidan kommer från de officiella handböckerna för QPDF och Ghostscript. Vi har inte själva kört dem under Ubuntu eller någon annan distribution, så detta är ingen testad Ubuntu-anvisning. Kontrollera först vilka versioner som är installerade på ditt system. Paketen i din distribution kan skilja sig från de versioner som beskrivs i den aktuella onlinedokumentationen.

Visa installerade versioner

Visar den installerade QPDF-versionen.
qpdf --version
Visar Ghostscript-versionen och tillgängliga utdataenheter.
gs -h

Om skalet meddelar att ett kommando inte hittades är programmet förmodligen inte installerat. Vad paketet heter och hur du installerar det beror på din distribution. Anteckna distribution och versioner så att du kan återskapa förutsättningarna för ett resultat senare.

Grundregler för varje försök

  • Lämna originalet orört. Indata och utdata ska alltid ha olika filnamn.
  • Ge varje utdatafil ett nytt namn som inte redan används, så att du inte skriver över en tidigare fil.
  • Utgå från originalet igen vid varje nytt försök, inte från resultatet av föregående körning.
  • Använd inga alternativ eller skript som ersätter indatafilen direkt.

QPDF: optimera lagringsstrukturen

QPDF-kommando från dokumentationen: sparar strukturen mer kompakt utan att sampla ner bilder eller koda om dem som JPEG.
qpdf "original.pdf" --object-streams=generate --compress-streams=y --decode-level=generalized --recompress-flate --compression-level=9 "optimiert-qpdf.pdf"

Kommandot läser original.pdf och skriver en ny fil med namnet optimiert-qpdf.pdf. Alternativen gör att objekt samlas i objektströmmar, dataströmmar komprimeras och Flate-data komprimeras om med den högsta nivån. Bilder räknas inte om. Objektströmmar kräver PDF 1.5. Om en mottagare uttryckligen kräver en äldre PDF-version passar detta kommando inte utan vidare.

QPDF kan dessutom optimera bilder och koda om JPEG-data med valbar kvalitet. Alternativet för JPEG-kvalitet finns från version 12.1. Båda åtgärderna innebär förluster och kan försämra redan komprimerade JPEG-bilder ytterligare. Använd dem bara om du sedan kontrollerar bilderna särskilt.

Ghostscript: skriv om PDF-filen med en förinställning

Ghostscript-exempel med förinställningen /ebook. Bilddetaljer och dokumentfunktioner kan ändras.
gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -dPDFSETTINGS=/ebook -sOutputFile="optimiert-gs.pdf" "original.pdf"

-sDEVICE=pdfwrite väljer PDF-utdata, -sOutputFile anger namnet på den nya filen och indatafilen står sist. -dBATCH och -dNOPAUSE hindrar Ghostscript från att vänta på inmatning. -dSAFER anges på samma sätt även i exemplen i Ghostscripts kommandoradsanvisning. Förinställningen /ebook är bara en utgångspunkt och ingen rekommendation för varje fil.

Förstå Ghostscripts förinställningar rätt

Med -dPDFSETTINGS väljer du ett helt paket av enskilda parametrar på en gång. Namnet på en förinställning beskriver ett användningsområde. Det står varken för en kvalitetsnivå eller för en viss besparing.

Förinställningar för -dPDFSETTINGS enligt den aktuella Ghostscript-handboken (version 10.09.0). Din installerade version kan avvika.
FörinställningAvsett syfteNedsampling av färg- och gråskalebilder
/screenSkärmvisning, låg upplösningAktiverad. Målvärde 72 dpi, bara för bilder med en upplösning över 1,5 gånger detta värde.
/ebookMedelhög upplösningAktiverad. Målvärde 150 dpi, bara för bilder med en upplösning över 1,5 gånger detta värde.
/printerUtskriftInte aktiverad som standard
/prepressFörberedelse för tryckInte aktiverad som standard. Inte automatiskt det mest originaltrogna valet.
/defaultBred användningInte aktiverad som standard

Ger /prepress alltså bäst kvalitet? Nej. Handboken påpekar uttryckligen att /prepress inte är den mest originaltrogna inställningen. Utan -dPDFSETTINGS kan resultatet ligga närmare originalet. Inte heller den minsta filen garanteras av /prepress.

Målvärdena för /screen och /ebook betyder inte att varje bild därefter har exakt 72 eller 150 dpi. Bilder under tröskeln samplas inte ner och behåller sin upplösning. Det innebär dock inte nödvändigtvis att de förblir helt oförändrade, eftersom förinställningens övriga parametrar, till exempel för bildkodning eller färger, ändå kan ändra dem. Alternativet -r ersätter inte nedsampling. Det styr bara upplösningen när Ghostscript måste rendera delar som en reservlösning och minskar inte storleken på inbäddade bilder. Enligt handboken är det ofta bättre att ställa in enskilda parametrar specifikt än att förlita sig på en förinställning.

Använd inte samma förinställning för alla filer. Ett textdokument, en fotokatalog och en skanning reagerar olika. För skanningar är det bäst att börja redan vid skanningen. Hur det går till förklaras i guiden Minska storleken på en skannad PDF.

Kontrollera text, länkar, formulär och signaturer

Att en PDF ser likadan ut efter komprimeringen bevisar inte att allt som var lagrat har bevarats. Ghostscript bygger upp filen på nytt. Enligt Ghostscripts förklaring av PDF-optimering kan ett oförändrat utseende dölja ändrade instruktioner och metadata. Även efter QPDF ska du kontrollera de funktioner som är viktiga för dig:

  • Markera och kopiera text och prova sökfunktionen.
  • Klicka på länkar och bokmärken.
  • Fyll i formulärfält och provspara dem om filen är ett formulär.
  • Kontrollera uppgifter som titel eller författare om en mottagare använder dem.
  • Om en viss standard som PDF/A krävs ska du kontrollera den med ett verktyg avsett för det. Inget av kommandona här garanterar denna status.

Digitalt signerade PDF-filer

Inget av de båda kommandona kan garantera att en digital signatur fortfarande är giltig efter omskrivningen. Komprimering är därför inget sätt att minska storleken på en signerad PDF. Behåll det signerade originalet oförändrat. Om någon annan har signerat dokumentet och du behöver en mindre version ska du skaffa den osignerade ursprungsfilen eller prata med undertecknaren. Stäm av en ny signering med utfärdaren eller mottagaren. Bakgrundsinformation finns hos Adobe om begränsningar för signerade PDF-filer. En inskannad, synlig underskrift är ingen digital signatur.

Att ta bort lösenordsskydd eller redigeringsbegränsningar hör inte till att minska filstorleken, och här finns inga kommandon för det. Be i stället avsändaren om en lämplig version. Mer om hur du hanterar sådana dokument finns i guiden Förstå signaturer och formulär.

Jämför resultatstorleken och behåll originalet

Att ett kommando körs utan felmeddelande säger ännu inget om resultatet. Jämför den exakta storleken på originalet och utdatafilen i byte, inte bara avrundade uppgifter i MB. Hur många procent du har sparat kan du räkna ut med kalkylatorn för komprimeringsgrad.

Kontrollera syntax och sidantal

Kontrollerar syntaxen i den sparade utdatafilen. För Ghostscript-resultatet byter du ut filnamnet.
qpdf "optimiert-qpdf.pdf" --check

QPDF anger med returvärdet 0 att kontrollen är felfri, med 2 att det finns fel och med 3 att det finns varningar. Kontrollen gäller bara filens uppbyggnad. Den visar inte om formulär, länkar och bilder fortfarande fungerar och ser ut som tidigare.

Visar sidantalet i den sparade utdatafilen. Kör kommandot igen med originalets namn och jämför.
qpdf "optimiert-qpdf.pdf" --show-npages

Kontrollera i en PDF-läsare

  1. Öppna den sparade utdatafilen på nytt från dess mapp.
  2. Bläddra igenom alla sidor och jämför sidformat och orientering med originalet.
  3. Titta på bilder, liten text och tunna linjer vid hög förstoring.
  4. Testa sökfunktion, länkar och formulär enligt beskrivningen i föregående avsnitt.
  5. Öppna om möjligt filen även i en annan PDF-läsare.

Större, oförändrad eller tom?

Ghostscript kan också göra en PDF större. Filen byggs upp på nytt och kodas på ett annat sätt, och de nya instruktionerna behöver ibland mer plats än de gamla. Även med QPDF finns det inte mycket att vinna om filen redan är kompakt lagrad.

Ett större eller knappt mindre resultat kan ändå vara giltigt. Om det är det visar sig först genom samma kontroller av den sparade filen som för alla andra utdatafiler, eftersom storleken ensam inte säger något om fel eller förlorade funktioner. Behåll till sist den fil som är bäst lämpad. Ofta är det helt enkelt originalet. Det är annorlunda om utdatafilen är tom, oläsbar eller skadad. Då är det ett misslyckat försök och ingen särskilt kraftig komprimering. Skicka inte den filen. Läs meddelandena i terminalen och börja om med originalet och ett nytt namn på utdatafilen.

Om PDF-filen fortfarande är för stor för en mottagares gräns hittar du nästa steg i guiden PDF-filen blir inte mindre. Behåll alltid originalet tills den nya versionen har kommit fram och accepterats.

Integritetsinställningar

Välj om du vill tillåta valfri användningsanalys och annonsering. I den här opublicerade förhandsvisningen förblir båda avstängda även om du tillåter dem. Dokumentverktygen fungerar oavsett ditt val. Du kan ändra ditt val när som helst i sidfoten.

Nödvändiga inställningar

Krävs

Dina val och färgtemat sparas lokalt. Dokumentverktygen är tillgängliga även utan de valfria tjänsterna.

Inaktiv

Valfri mätning av användningen. Inte aktiv för närvarande: om du tillåter den sparas ditt val, men ingen analystjänst aktiveras i den här förhandsvisningen.

Inaktiv

Valfri annonsering. Inte aktiv för närvarande: om du tillåter den sparas ditt val, men ingen annonstjänst aktiveras i den här förhandsvisningen.

Valfri användningsanalys och annonsering är avstängda.