Jak mohu zmenšit velikost souboru naskenovaného PDF souboru?

297

Mám soubor ve formátu PDF ve formátu 72,9 MB, který se musím zmenšit na méně než 500 kB.

Soubor byl snímek JPEG, který jsem naskenoval a poté převedl na pdf.

    
dané tamimym 16.03.2012 18:12

20 odpovědí

119

aking1012 má pravdu. S dalšími informacemi o možných vložených obrázcích, hypertextových odkazů atd. By bylo mnohem jednodušší odpovědět na tuto otázku!

Zde je několik řešení skriptů a příkazových řádků. Používejte podle svého uvážení.

odpověděl v2r 16.03.2012 18:28
413

Použijte následující příkaz ghostscript :

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf input.pdf
  • -dPDFSETTINGS=/screen nižší kvalita, menší velikost. ( 72 dpi )
  • -dPDFSETTINGS=/ebook pro lepší kvalitu, ale o něco větší pdf. ( 150 dpi )
  • -dPDFSETTINGS=/prepress výstup podobný nastavení Acrobat Distiller "Prepress Optimized" ( 300 dpi )
  • -dPDFSETTINGS=/printer volí výstup podobný nastavení Acrobat Distiller "Print Optimized" ( 300 dpi )
  • -dPDFSETTINGS=/default vybírá výstup, který má být užitečný pro širokou škálu použití, možná na úkor většího výstupního souboru
odpověděl Michael D 15.02.2013 14:53
123

Můj oblíbený způsob, jak to udělat, je převést pdf na ps a zpět. Ne vždy to funguje, ale když to funguje, výsledky jsou hezké:

ps2pdf input.pdf output.pdf

Toto také pracuje přímo na stránkách pdf, jak bylo navrženo v komentářích.

    
odpověděl don.joey 16.01.2013 10:18
106

Pokud máte pdf se skenovanými obrázky , můžete použít souborconvert pro vytvoření pdf s kompresí jpeg (Tuto metodu můžete použít v libovolném formátu PDF. ztratíte veškeré textové informace).

Například:

convert -density 200x200 -quality 60 -compress jpeg input.pdf output.pdf

Upravte hustotu (např. 100x100) a kvalita podle svých potřeb.

V závislosti na vašem vstupu jpeg komprese nemusí být tou nejlepší volbou kvůli kompresním artefaktům. Máte možnost vybrat mezi možnostmi BZip, Fax, Group4, JPEG, JPEG2000, Lossless, LZW, RLE nebo Zip jako alternativní kompresní metody (některé pouze umožňují černobílé snímky). Podrobnosti naleznete v zde .

Dosáhl jsem skvělých poměrů komprese pro skenované / vyfotografované dokumenty (v závislosti na nastavení). V závislosti na zdroji dokumentu můžete snížit hloubku barev (argument-depth).

    
odpověděl someonr 19.05.2014 19:39
30

Potřeboval jsem zmenšit velikost souboru PDF, který obsahoval plné barevné skenování dokumentu. Každá z mých stránek byla úplně barevným obrazem, pokud jde o soubor. Byly to obrázky stránek obsahujících text a obrázky, ale byly vytvořeny skenováním na obrázek.

Použil jsem kombinaci níže uvedeného příkazu ghostscript a jednoho z jiného podprocesu.

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dDownsampleColorImages=true \
-dColorImageResolution=150 -dNOPAUSE  -dBATCH -sOutputFile=output.pdf input.pdf

Toto snížilo rozlišení obrazu na 150dpi, což snížilo velikost souboru na polovinu. Když se podíváme na dokument, nedošlo téměř k žádné ztrátě kvality obrazu. Text je stále dokonale čitelný na mé Nexus7 v roce 2012.

    
odpověděl mlitty 19.01.2014 07:25
24

Zde je skript pro přepsání naskenovaných pdf:

#!/bin/sh

gs  -q -dNOPAUSE -dBATCH -dSAFER \
    -sDEVICE=pdfwrite \
    -dCompatibilityLevel=1.3 \
    -dPDFSETTINGS=/screen \
    -dEmbedAllFonts=true \
    -dSubsetFonts=true \
    -dColorImageDownsampleType=/Bicubic \
    -dColorImageResolution=72 \
    -dGrayImageDownsampleType=/Bicubic \
    -dGrayImageResolution=72 \
    -dMonoImageDownsampleType=/Bicubic \
    -dMonoImageResolution=72 \
    -sOutputFile=out.pdf \
     

Můžete jej přizpůsobit trochu, aby byl znovu použitelný, ale pokud máte pouze jeden pdf, můžete jen nahradit s vaším názvem pdf a zavěsit jej do terminálu.

    
odpověděl Oli 31.08.2010 22:29
17

Obvykle používám ps2pdf (snadnější syntaxe), něco takového:

ps2pdf -dPDFSETTINGS=/ebook BiggerPdf SmallerPDF

Používám následující skript Pythonu ke zmenšení velikosti všech souborů pdf v dir na výrobním serveru (8.04). Tak to by mělo fungovat.

#!/usr/bin/python

import os

for fich in os.listdir('.'):
        if fich[-3:]=="pdf":
                os.system("ps2pdf -dPDFSETTINGS=/ebook %s reduc/%s" % (fich,fich))
    
odpověděl Javier Rivera 01.09.2010 09:26
13

  1. Používám LibreOffice Draw k otevření pdf.
  2. Potom exportuji jako pdf
  3. Nastavte "kvalitu komprese jpeg" na 50% a "rozlišení obrazu" na 150 dpi

To bude mít dobrý výsledek.

    
odpověděl Marius4674 14.06.2016 11:59
6

Nejlepší pro mě byl

convert -compress Zip -density 150x150 input.pdf output.pdf

Další způsoby:

#### gs
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf $INPUTFILE

### pdf2ps && ps2pdf
pdf2ps input.pdf output.ps && ps2pdf output.ps output.pdf

### Webservice
http://compress.smallpdf.com/de

s ohledem na

    
odpověděl oxidworks 21.04.2016 13:03
5

Jen jsem se s tímto problémem setkal sám. Pokud používáte jednoduché skenování, vyberte režim skenování s nízkým rozlišením a nebudete se muset starat o věci v příkazovém řádku. Jen říká.

    
odpověděl user179584 29.07.2013 23:13
3

Protože tento odkaz byl pro mě první, když jsem hledal ve službě Google, myslel jsem si, že přidám ještě jednu možnost. Žádné z výše uvedených řešení pro mě nefungovalo na exportu z Inkscape (15 mb), ale nakonec jsem ho dokázal zmenšit na 1 MB tak, že jsem ho otevřela v GIMP a exportovala jako PDF znovu.

Další možnost, která se blížila (ale text byl trochu rozmazaný) byla utilita konverze ImageMagick:

convert -compress Zip input.pdf output.pdf
    
odpověděl mbroshi 13.02.2014 13:32
3

Nakonec jsem napsal svůj vlastní bash skript, abych to vyřešil, použijemogrify,convert ags pro extrahování stránek ve formátu png, jejich změnu velikosti, převedení na 1-bit bmp a jejich opětovné sestavení jako pdf. Snížení velikosti souboru může být více než 90%. K dispozici na adrese Odkaz .

    
odpověděl scoobydoo 21.09.2016 14:15
2

Ovládejte kvalitu komprese:

#!/bin/sh
INPUT=; shift
OUTPUT=; shift
GS_BIN=/usr/bin/gs
QFACTOR="0.40"

# Image Compression Quality
#
# Quality HSamples VSamples QFactor
# Minimum [2 1 1 2] [2 1 1 2] 2.40
# Low     [2 1 1 2] [2 1 1 2] 1.30
# Medium  [2 1 1 2] [2 1 1 2] 0.76
# High    [1 1 1 1] [1 1 1 1] 0.40
# Maximum [1 1 1 1] [1 1 1 1] 0.15 

${GS_BIN} -dBATCH -dSAFER -DNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=${OUTPUT} -c "<< /ColorImageDict << /QFactor ${QFACTOR} /Blend 1 /HSample [1 1 1 1] /VSample [1 1 1 1] >> >> setdistillerparams" -f ${INPUT}
    
odpověděl user525719 02.04.2016 06:11
1

Pokud by převedení na djvu bylo také v pořádku a pokud nejsou zahrnuty žádné barvy, můžete zkusit následující:

Převedete pdf do jpg souborů pomocípdfimages -j

Pokud získáte místo toho soubory pbm, měli byste provést přechodný krok:

for FILENAME in $(ls *.pbm); do convert $FILENAME ${FILENAME%.*}.jpg ;done

Příkaz konverze je z balíčku imagemagick.

Pak použijte scantailor , abyste z toho vyloučili tif.

V posledním kroku přejdete do scantailors out direcory (kde se nacházíte) a použijte djvubind do tohoto adresáře.

Mělo by to drasticky snížit velikost souborů, aniž by došlo k velké ztrátě kvality textu. Pokud chcete jemnější kontrolu nad okr-backendem, můžete zkusitdjvubind --no-ocr a použít ocrodjvu pro přidání vrstvy ocr poté.

Pokud máte ve svém dokumentu barvu, věci se trochu komplikují. Namísto djvubind můžete použít didjvu a ve scantailor musíte přepnout do smíšeného režimu a ručně vybrat barvy.

    
odpověděl student 11.09.2011 10:43
1

načíst obrázek nebo dokonce soubor PDF do souboru inkscape.

Z inkscape: Uložit ve vektorovém formátu (jako nativní .svg).

Importujte vektorové soubory do scribus, upravte rozvržení a export / uložte jako .pdf odtud

    
odpověděl ape 28.07.2013 22:45
1

Měl jsem stejný problém a byl jsem rád, že jsem našel toto vlákno. Konkrétně jsem měl z generovaných skenovaných obrázků pdf a musel jsem snížit jeho velikost byte o faktor 6.

Bohužel, žádné z výše uvedených řešení nefungovalo :(. Pak jsem si uvědomil, že někde v procesu skenování-> jpeg-> pdf se velikost stránky dostala nafouknutá faktorem aprx 4. Dokumenty, které jsem naskenoval byly všechny velikosti písmen, ale formát PDF měl velikost

identify -verbose doc_orig.pdf | grep "Print size"
 Print size: 35.4167x48.7222

Konečně jsem získal požadované výsledky pomocí příkazu "konvertovat", který provedl změnu velikosti i komprese v jednom:

convert -density 135x135 -quality 70 -compress jpeg -resize 22.588% doc_orig.pdf doc_lowres.pdf

Všimněte si, že doc_orig měl hustotu 72x72 dpi.

    
odpověděl Kalpit 20.03.2016 12:56
0

Super jednoduchý nástroj pro kompresi PDF: stránka GitHub.

Instalace na Ubuntu:

sudo add-apt-repository ppa:jfswitz/released

sudo apt-get update

sudo apt-get install pdf-compressor

Používá ghostscript.

    
odpověděl John 12.10.2015 14:39
0

Nedávno jsem objevil a důrazně doporučuji pdfsizeopt .

Je mnohem efektivnější než kterýkoliv předchozí software CLI a GUI, který jsem vyzkoušel (včetněconvert,gs,pdftk atd.) - ačkoli možná pomalejší s aktivovanýmpngout nemají některé z jejich problémů (žádné výrazné pixely / degradované obrázky, žádná ztráta záložek atd.).

Doporučuji obecnou instalaci systému Unix :

  1. Nainstalujte všechny požadované závislosti:

  2. Stáhněte a nainstalujte spustitelný soubor:

    curl -L -o https://raw.githubusercontent.com/pts/pdfsizeopt/master/pdfsizeopt.single
    cp pdfsizeopt.single /usr/local/bin/pdfsizeopt
    

Použití:

pdfsizeopt original.pdf [compressed.pdf]
    
odpověděl Serge B. 02.03.2018 15:37
0

Můžete to zkusit:

$ time pdftk myFile.pdf output myFile__SMALLER.pdf compress
GC Warning: Repeated allocation of very large block (appr. size 16764928):
    May lead to memory leak and poor performance.
GC Warning: Repeated allocation of very large block (appr. size 8384512):
    May lead to memory leak and poor performance.
GC Warning: Repeated allocation of very large block (appr. size 11837440):
    May lead to memory leak and poor performance.
GC Warning: Repeated allocation of very large block (appr. size 8384512):
    May lead to memory leak and poor performance.
GC Warning: Repeated allocation of very large block (appr. size 33525760):
    May lead to memory leak and poor performance.
GC Warning: Repeated allocation of very large block (appr. size 7254016):
    May lead to memory leak and poor performance.
GC Warning: Repeated allocation of very large block (appr. size 34041856):
    May lead to memory leak and poor performance.
GC Warning: Repeated allocation of very large block (appr. size 33525760):
    May lead to memory leak and poor performance.

real    0m23.677s
user    0m23.142s
sys     0m0.540s
$ du myFile*.pdf
108M    myFile.pdf
74M     myFile__SMALLER.pdf

Je rychlejší nežgs, ale komprimuje až 30% v tomto případě pro vstupní soubor 107.5MiB.

    
odpověděl SebMa 09.08.2018 18:01
-2

Použil jsem příkazy níže, ale to podstatně nezkomprimovalo. Někdy se část po částech zčernala po kompresi.

  1. gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf $INPUTFILE

  2. "ps2pdf -dPDFSETTINGS=/ebook %s %s" % (input_file_path, out_file_path)

Po příliš mnoho putování po webu jsem prostě nemohl najít správnou komprimační knihovnu. Přišel jsem napdfcompressor.com. To je jen úžasné webové stránky. Komprimuje soubor PDF o 95% (15 MB souborů). Tak jsem použil selén a Tor pro automatizaci komprese. Kontrola mého úložiště Github. [GITHUB] ( Odkaz )

    
odpověděl Prince 08.05.2018 13:10