Am o 72.9 MB fișier PDF care trebuie să se micșoreze într-sub 500KB.
Fișierul a fost o imagine JPEG pe care am avut scanate, și apoi convertite în pdf.
Utilizați următoarele ghostscript comandă:
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf input.pdf
-dPDFSETTINGS=/ecran
de calitate inferioară, de dimensiuni mai mici. (72 dpi)-dPDFSETTINGS=/prepress
de ieșire similare cu Acrobat Distiller "Prepress Optimizat" setare (300 dpi)-dPDFSETTINGS=/printer
selectează ieșire similară cu Acrobat Distiller "de Imprimare Optimizat" setare (300 dpi)-dPDFSETTINGS=/default
selectează ieșire destinate a fi utile într-o varietate largă de utilizări, eventual în detrimentul unei mai mari de fișier de ieșireModul meu preferat de a face acest lucru este de a converti pdf la ps și înapoi. Nu funcționează întotdeauna, dar atunci când aceasta funcționează rezultatele sunt frumos:
ps2pdf input.pdf output.pdf
Aceasta funcționează, de asemenea, direct pe pdf's, după cum a sugerat în comentarii.
Unii utilizatori, de asemenea, raportul mai mult succes atunci când se utilizează ebook settings, după cum urmează:
ps2pdf -dPDFSETTINGS=/ebook input.pdf output.pdf
aking1012 este corect. Cu mai multe informații cu privire la posibile încorporat imagini, hyperlink-uri, etc.. ar fi mult mai ușor să răspundă la această întrebare!
Aici sunt un cuplu de script și de linie de comandă soluții. Utilizarea ca tu de cuviință.
Dacă aveți un pdf cu imagini scanate, puteți folosi "converti" pentru a crea un pdf cu jpeg de compresie (această metodă se poate utiliza pe orice pdf, dar'll pierde toate informatii text).
De exemplu:
convert -density 200x200 -quality 60 -compress jpeg input.pdf output.pdf
Reglați densitate (de exemplu, 100x100) și calitate pentru nevoile dumneavoastra.
În funcție de dvs. de intrare jpeg compresie ar putea să nu fie cea mai buna alegere din cauza artefacte de compresie. Aveți de ales între BZip, Fax, Group4, JPEG, JPEG2000, fără Pierderi, LZW, RLE sau Zip ca alterna metodele de compresie (unele permit doar b/w imagini). Pentru detalii a se vedea aici.
Am fost capabil de a realiza o mare de compresie pentru scanat/fotografiat documente (în funcție de setările). În funcție de documentul sursă, ați putea dori pentru a reduce adâncimea de culoare (profunzime
argument).
Am nevoie să reducă un PDF care conținea plin de culoare scanează un document. Fiecare dintre paginile mele a fost un plin de culoare imagine cât dosarul a fost în cauză. Au fost imagini de pagini care conțin text și imagini, dar ele au fost create prin scanarea unei imagini.
Am folosit o combinație de mai jos ghostscript de comandă și unul de la un alt fir.
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dDownsampleColorImages=true \
-dColorImageResolution=150 -dNOPAUSE -dBATCH -sOutputFile=output.pdf input.pdf
Acest lucru reduce rezoluția imaginii la 150dpi, să-mi tai dimensiune în jumătate. Se uită la document, nu a existat aproape nici o vizibilă pierdere de calitate a imaginii. Textul este încă perfect lizibil pe Nexus7 2012.
Aici este un script pentru rescrierea scanate pdf-uri:
#!/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 \
$1
Ai putea personaliza un pic pentru a face mai reutilizabile, dar dacă aveți doar un singur pdf, ai putea înlocui $1
cu numele de fișier pdf și bung într-un terminal.
Eu folosesc, de obicei ps2pdf pentru a face acest lucru (mai ușor de sintaxă), ceva de genul asta:
ps2pdf -dPDFSETTINGS=/ebook BiggerPdf SmallerPDF
Am folosi următorul script python pentru a reduce dimensiunea tuturor fișierelor pdf într-un dir într-un server de producție (8.04). Așa ar trebui să funcționeze.
#!/usr/bin/python
import os
for fich in os.listdir('.'):
if fich[-3:]=="pdf":
os.system("ps2pdf -dPDFSETTINGS=/ebook %s reduc/%s" % (fich,fich))
Acest lucru va avea un rezultat bun.
Cel mai bun pentru mine a fost
convert -compress Zip -density 150x150 input.pdf output.pdf
Alte moduri:
#### 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
ce privește
Eu recomand pdfsizeopt.
Este mult mai eficientă în termeni de reducere a dimensiunii decât oricare dintre cele anterioare CLI și GUI-ul, care am încercat (inclusiv "converti", "gs", pdftk
, etc.) — deși, eventual, mai lent cu pngout` activat —, și nu au unele probleme (nu foarte pixelat/degradat imagini, nici o pierdere de marcaje, etc.).
Acum, dacă aveți nevoie pentru a atinge o anumită dimensiune, indiferent de consecințe (inc. imaginile degradante la un punct de imposibilitatea citirii), acesta nu ar putea fi instrumentul de care aveți nevoie, dar ca întotdeauna-du-te de lucru-pentru soluție, pentru a reduce inutile de mari dimensiuni în format Pdf, fără a pierde din lizibilitate, de informații și de o calitate acceptabilă a imaginii, cred că este cea mai bună opțiune. (Notă: am tendința să-l folosească după ce a făcut mai întâi o vectorizare-OCR în Adobe Acrobat [funcția folosit pentru a fi numit "CleanScan"], care poate avea un dramatic dimensiunea impactului pe unele scanate documente de tip text.)
Recomand generic Unix instala:
curl -L-o https://raw.githubusercontent.com/pts/pdfsizeopt/master/pdfsizeopt.single cp pdfsizeopt.singur /usr/local/bin/pdfsizeopt
Utilizare:
pdfsizeopt original.pdf [compressed.pdf]
Notă pentru mac utilizatorii găsi acest post (sau Linuxbrew utilizatori): există un Homebrew instala formula:
brew install --HEAD pts/utils/pdfsizeopt
Control de calitate de compresie:
#!/bin/sh
INPUT=$1; shift
OUTPUT=$1; 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}
Din moment ce link-ul a fost prima dată pentru mine când am căutat în Google, am crezut că am'd mai adaugă o posibilitate. Niciuna dintre soluțiile de mai sus a fost de lucru pentru mine pe un pdf exportate din Inkscape (15 mb), dar am fost în sfârșit capabil să scadă în jos pentru 1 mb de deschidere în GIMP, și exportul în format pdf din nou.
O altă opțiune, care a fost aproape (dar textul a fost un pic neclare) a fost ImageMagick's a converti utilitate:
convert -compress Zip input.pdf output.pdf
În final mi-am scris propriul script bash pentru a rezolva acest lucru, se folosește mogrify
, "converti" și " gs " pentru a extrage pagini pdf și png, le redimensiona, de a le converti la 1-bit bmp și apoi să le reconstruiască în format pdf. Reducerea dimensiunii fișierului poate fi de peste 90%. Disponibil la http://www.timedicer.co.uk/programs/help/pdf-compress.sh.php.
Am fost confruntă cu aceeași problemă, și a fost bucuros să găsesc acest thread. Mai exact am avut un pdf generat de imagini scanate, și trebuie să își reducă octet dimensiunea cu un factor de 6.
Din păcate, niciuna dintre soluțiile de mai sus a lucrat :(. Apoi mi-am dat seama că undeva, în scanner->jpeg->pdf proces dimensiunea paginii a ajuns umflat cu un factor de aprx 4. Documentele nu au fost scanate toate Scrisoare de dimensiuni, dar pdf-ul a avut dimensiunea de
identify -verbose doc_orig.pdf | grep "Print size"
Print size: 35.4167x48.7222
Am primit rezultatele dorite în cele din urmă cu un "converti" comanda care a făcut atât de redimensionare, precum și de compresie pași într-unul:
convert -density 135x135 -quality 70 -compress jpeg -resize 22.588% doc_orig.pdf doc_lowres.pdf
Rețineți că doc_orig avut densitate de 72x72 dpi.
Dacă conversia djvu, de asemenea, ar fi bine și dacă nu sunt culori, sunt implicate, ai putea încerca următoarele:
Converti pdf la jpg fișiere folosind pdfimages -j
Dacă primiți fișiere pbm în schimb, tu ar trebui să facă pas intermediar:
pentru numele de fișier în $(e *.pbm); face converti $FILENAME ${FILENAME%.*}.jpg ;face
Comanda de conversie este de imagemagick pachet.
Apoi, utilizați scantailor pentru a face tif's de acesta.
Într-un ultim pas te duci la scantailors afară direcory (unde tif's sunt situate) și se aplică djvubind pentru acel director.
Acest lucru ar trebui să reducă dimensiunea drastic, fără mari pierderi de calitate a textului. Dacă doriți un control mai fin asupra ocr-backend, puteți încerca djvubind ... nu-ocr
și de a folosi ocrodjvu pentru a adăuga ocr strat după aceea.
Dacă aveți culoare's în document lucrurile devin un pic mai complicate. În loc de djvubind ai putea folosi didjvu și în scantailor aveți pentru a schimba la modul mixt și, uneori, selectați culoare-imagini manual.
Puteți încerca acest lucru :
$ 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
Este mai rapid decât " gs " dar comprese pana la 30%, în acest caz, pentru o 107.5 MiB fișier de intrare.
Pentru mine gs "ecran" opțiune a fost prea rău, și `ebook unul prea mare.
Mi document original conținute de text de culoare și imagini alb-negru (în funcție de pagina).
Cea mai bună soluție mie mi-a venit a fost:
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dDownsampleColorImages=true -dDownsampleGrayImages=true -dDownsampleMonoImages=true -dColorImageResolution=130 -dGrayImageResolution=130 -dMonoImageResolution=130 -r130 -dNOPAUSE -dBATCH -sOutputFile=output_lr.pdf input.pdf
Rețineți că nivelul de compresie nu este liniară.. daca am fost specificarea 135 n't comprimat, am găsit 130 sa fie (in cazul meu) rezoluția maximă care realizează o compresie.