ฉันมีไฟล์ PDF 72.9MB ที่ฉันต้องลดขนาดให้ต่ำกว่า 500KB
ไฟล์นี้เป็นภาพ JPEG ที่ฉันสแกนแล้วแปลงเป็น pdf
pdfopt
มีรูปแบบที่ง่ายและปรับปรุงความเร็วในการโหลดและการเปลี่ยนหน้าในยุค iPad :-)
ฉันมีไฟล์ PDF 72.9MB ที่ฉันต้องลดขนาดให้ต่ำกว่า 500KB
ไฟล์นี้เป็นภาพ JPEG ที่ฉันสแกนแล้วแปลงเป็น pdf
pdfopt
มีรูปแบบที่ง่ายและปรับปรุงความเร็วในการโหลดและการเปลี่ยนหน้าในยุค iPad :-)
คำตอบ:
aking1012 ถูกต้อง ด้วยข้อมูลเพิ่มเติมเกี่ยวกับรูปภาพแบบฝังที่เป็นไปได้ไฮเปอร์ลิงก์และอื่น ๆ มันจะตอบคำถามนี้ได้ง่ายขึ้น!
ต่อไปนี้เป็นโซลูชันสคริปต์และบรรทัดคำสั่งสองสามรายการ ใช้ตามที่เห็นสมควร
ใช้คำสั่งghostscriptต่อไปนี้:
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf input.pdf
-dPDFSETTINGS=/screen
คุณภาพต่ำกว่าขนาดเล็กลง ( 72 dpi )-dPDFSETTINGS=/ebook
เพื่อคุณภาพที่ดีขึ้น แต่ PDF ที่ใหญ่ขึ้นเล็กน้อย ( 150 dpi )-dPDFSETTINGS=/prepress
เอาต์พุตคล้ายกับการตั้งค่า "Prepress Optimized" ของ Acrobat Distiller ( 300 dpi )-dPDFSETTINGS=/printer
เลือกเอาต์พุตคล้ายกับการตั้งค่า "การเพิ่มประสิทธิภาพการพิมพ์" ของ Acrobat Distiller ( 300 dpi )-dPDFSETTINGS=/default
เลือกเอาต์พุตที่ต้องการให้มีประโยชน์สำหรับการใช้งานที่หลากหลายซึ่งอาจมีค่าใช้จ่ายของไฟล์เอาต์พุตที่ใหญ่กว่าscreen
ตั้งค่านั้นมีคุณภาพต่ำเกินไปสำหรับฉัน แต่ebook
ทำงานได้ดีตัด PDF ที่ใช้การสแกนขนาด 33Mb ลงเหลือ 3.6Mb และทำให้อ่านได้ง่ายมาก ตัวเลือกอื่น ๆ สำหรับ-dPDFSETTINGS
ตัวเลือกมีอยู่ที่นี่: milan.kupcevic.net/ghostscript-ps-pdfและอาจเป็นความคิดที่ดีที่จะรวมไว้ในคำตอบนี้
วิธีที่ฉันโปรดปรานในการทำเช่นนี้คือการแปลงไฟล์ PDF เป็น ps และย้อนกลับ แม้ว่ามันจะไม่ได้ผลเสมอไป แต่เมื่อมันใช้งานได้ผลดี:
ps2pdf input.pdf output.pdf
นอกจากนี้ยังใช้งานได้กับไฟล์ PDF โดยตรงตามที่แนะนำในความคิดเห็น
ผู้ใช้บางคนรายงานความสำเร็จมากขึ้นเมื่อใช้การตั้งค่า ebookดังนี้:
ps2pdf -dPDFSETTINGS=/ebook input.pdf output.pdf
ps2pdf intput.pdf output.pdf
หากคุณมีไฟล์ PDF ที่มีรูปภาพที่สแกนคุณสามารถใช้convert
เพื่อสร้างรูปแบบไฟล์ PDF ด้วยการบีบอัด jpeg (คุณสามารถใช้วิธีนี้กับรูปแบบไฟล์ PDF ใดก็ได้ แต่คุณจะหลวมข้อมูลข้อความทั้งหมด)
ตัวอย่างเช่น:
convert -density 200x200 -quality 60 -compress jpeg input.pdf output.pdf
ปรับความหนาแน่น (เช่น 100x100) และคุณภาพตามความต้องการของคุณ
ทั้งนี้ขึ้นอยู่กับการบีบอัด jpeg อินพุตของคุณอาจไม่ใช่ตัวเลือกที่ดีที่สุดเนื่องจากการบีบอัดส่วน คุณมีตัวเลือกระหว่าง BZip, แฟกซ์, Group4, JPEG, JPEG2000, Lossless, LZW, RLE หรือ Zip เป็นวิธีการบีบอัดสำรอง (บางตัวเลือกอนุญาตเฉพาะภาพ b / w) สำหรับรายละเอียดดูที่นี่
ฉันสามารถบรรลุอัตราส่วนการบีบอัดที่ยอดเยี่ยมสำหรับเอกสารที่สแกน / ถ่ายภาพ (ขึ้นอยู่กับการตั้งค่า) ขึ้นอยู่กับแหล่งเอกสารคุณอาจต้องการลดความลึกของสี ( -depth
อาร์กิวเมนต์)
pdfimages input.pdf pages
เพื่อแยกไฟล์ pbm คุณสามารถทำสิ่งfor page in *.pbm; do convert $page -compress Group4 -type bilevel TIFF:- | convert - output.pdf
ต่อไปนี้: OCR ใด ๆ จะหายไปดังนั้นฉันจึงมักจะทำpdfsandwich output.pdf
ซึ่งดูเหมือนว่าจะลดขนาดไฟล์ให้ดียิ่งขึ้น
gs
เบื้องหลัง
--density --quality --compress
-density -quality -compress
-resize 50%
เช่นกันเปลี่ยนเปอร์เซ็นต์ขึ้นอยู่กับจำนวน DPI ที่ใช้ในขณะสแกน
ฉันต้องการลดขนาด PDF ที่มีการสแกนเอกสารสีเต็มรูปแบบ หน้าของฉันแต่ละหน้ามีภาพสีเต็มรูปแบบเท่าที่เกี่ยวข้องกับไฟล์ พวกเขาเป็นภาพของหน้าเว็บที่มีข้อความและภาพ แต่ถูกสร้างขึ้นโดยการสแกนไปที่ภาพ
ฉันใช้การรวมกันของคำสั่ง ghostscript ด้านล่างและอีกอันจากเธรดอื่น
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dDownsampleColorImages=true \
-dColorImageResolution=150 -dNOPAUSE -dBATCH -sOutputFile=output.pdf input.pdf
สิ่งนี้ลดความละเอียดของภาพเป็น 150dpi ลดขนาดไฟล์ลงครึ่งหนึ่ง เมื่อมองดูเอกสารคุณภาพของภาพแทบจะไม่มีการสูญเสียไปเลย ข้อความยังคงสามารถอ่านได้อย่างสมบูรณ์ใน 2012 Nexus7 ของฉัน
นี่คือสคริปต์สำหรับเขียนไฟล์ 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 \
$1
คุณสามารถปรับแต่งได้เล็กน้อยเพื่อให้สามารถนำมาใช้ใหม่ได้มากขึ้น แต่ถ้าคุณมีไฟล์ PDF เพียงไฟล์เดียวคุณก็สามารถแทนที่$1
ด้วยชื่อไฟล์ pdf ของคุณและต่อยในเทอร์มินัล
ฉันมักจะใช้ ps2pdf ทำ (ไวยากรณ์ง่ายขึ้น) บางสิ่งเช่นนี้:
ps2pdf -dPDFSETTINGS=/ebook BiggerPdf SmallerPDF
ฉันใช้สคริปต์ python ต่อไปนี้เพื่อลดขนาดของไฟล์ pdf ทั้งหมดใน dir ในเซิร์ฟเวอร์ที่ใช้งานจริง (8.04) ดังนั้นควรทำงาน
#!/usr/bin/python
import os
for fich in os.listdir('.'):
if fich[-3:]=="pdf":
os.system("ps2pdf -dPDFSETTINGS=/ebook %s reduc/%s" % (fich,fich))
นี้จะมีผลดี
ดีที่สุดสำหรับฉันคือ
convert -compress Zip -density 150x150 input.pdf output.pdf
ทางอื่น:
#### 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
ความนับถือ
pdf2ps input.pdf temp.ps && ps2pdf14 temp.ps output.pdf && rm temp.ps
ฉันเพิ่งพบปัญหานี้ด้วยตัวเอง หากใช้การสแกนแบบง่ายให้เลือกโหมดข้อความสำหรับการสแกนความละเอียดต่ำและคุณไม่จำเป็นต้องกังวลเกี่ยวกับสิ่งที่บรรทัดคำสั่ง แค่พูด.
ควบคุมคุณภาพการบีบอัด:
#!/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}
shift
หมายเหตุ พารามิเตอร์แรกคือไฟล์อินพุตที่สองคือไฟล์เอาต์พุตและพารามิเตอร์ที่เหลือจะถูกส่งผ่านไปgs
ตามที่เป็นอยู่
เนื่องจากลิงค์นี้เป็นครั้งแรกสำหรับฉันเมื่อฉันค้นหาใน Google ฉันคิดว่าฉันจะเพิ่มความเป็นไปได้อีกหนึ่งอย่าง วิธีแก้ปัญหาข้างต้นไม่ได้ผลสำหรับฉันใน pdf ที่ส่งออกจาก Inkscape (15 mb) แต่ในที่สุดฉันก็สามารถย่อขนาดลงเหลือ 1 mb โดยเปิดใน GIMP และส่งออกเป็น pdf อีกครั้ง
ตัวเลือกอื่นที่เข้ามาใกล้ (แต่ข้อความค่อนข้างเลือนเล็กน้อย) คือยูทิลิตี้การแปลงของ ImageMagick:
convert -compress Zip input.pdf output.pdf
convert -compress Zip
ขึ้น
มันมีประสิทธิภาพมากขึ้นในแง่ของการลดขนาดกว่าใด ๆ ของ CLI และ GUI ซอฟต์แวร์ก่อนหน้านี้ที่ผมได้ลอง (รวมทั้งconvert
, gs
, pdftk
ฯลฯ ) - แม้ว่าอาจจะช้ากว่าที่มีpngout
การเปิดใช้งาน - และไม่ได้มีบางส่วนของปัญหาของพวกเขา (ไม่หนัก รูปภาพที่เป็นพิกเซล / เสื่อมคุณภาพไม่มีการสูญเสียบุ๊คมาร์ค
ทีนี้ถ้าคุณจำเป็นต้องมีขนาดที่แน่นอนไม่ว่าผลที่ตามมา (รวมถึงการลดขนาดภาพลงเป็นจุดที่อ่านไม่ได้) มันอาจไม่ใช่เครื่องมือที่คุณต้องการ แต่เป็นวิธีแก้ปัญหาที่ใช้งานได้ตลอดเวลาเพื่อลดขนาดที่ไม่จำเป็น ในรูปแบบ PDF โดยไม่สูญเสียความสามารถในการอ่านข้อมูลและคุณภาพของภาพที่ยอมรับได้ฉันคิดว่านี่เป็นตัวเลือกที่ดีที่สุด (หมายเหตุ: ฉันมักจะใช้หลังจากทำ vectorization-OCR ใน Adobe Acrobat เป็นครั้งแรก [ฟังก์ชั่นที่ใช้เรียกว่า "CleanScan"] ซึ่งสามารถส่งผลกระทบต่อขนาดของเอกสารข้อความสแกนที่สแกนได้)
ฉันแนะนำการติดตั้ง Unix ทั่วไป :
ติดตั้งการพึ่งพาที่จำเป็นทั้งหมด:
ดาวน์โหลดและติดตั้งโปรแกรมปฏิบัติการ:
curl -L -o https://raw.githubusercontent.com/pts/pdfsizeopt/master/pdfsizeopt.single
cp pdfsizeopt.single /usr/local/bin/pdfsizeopt
การใช้งาน:
pdfsizeopt original.pdf [compressed.pdf]
หมายเหตุสำหรับผู้ใช้mac ที่ค้นหาโพสต์นี้ (หรือผู้ใช้ Linuxbrew): มีสูตรการติดตั้ง Homebrew:
brew install --HEAD pts/utils/pdfsizeopt
ฉันกำลังเผชิญปัญหาเดียวกันและดีใจที่ได้พบเธรดนี้ โดยเฉพาะฉันมีไฟล์ PDF ที่สร้างขึ้นจากภาพที่สแกนและจำเป็นต้องลดขนาดไบต์ลงด้วย 6 เท่า
น่าเสียดายที่ไม่มีวิธีแก้ปัญหาใด ๆ ที่ได้ผล :( จากนั้นฉันก็รู้ว่ามีบางส่วนในสแกนเนอร์ -> jpeg-> กระบวนการ pdf ขนาดของหน้าได้รับการปูดด้วยปัจจัย aprx 4 เอกสารที่สแกนทั้งหมดล้วนขนาดตัวอักษร แต่ pdf มีขนาดเท่ากับ
identify -verbose doc_orig.pdf | grep "Print size"
Print size: 35.4167x48.7222
ในที่สุดฉันก็ได้รับผลลัพธ์ที่ต้องการด้วยคำสั่ง "แปลง" ซึ่งทำทั้งปรับขนาดและบีบอัดขั้นตอนในที่เดียว:
convert -density 135x135 -quality 70 -compress jpeg -resize 22.588% doc_orig.pdf doc_lowres.pdf
โปรดทราบว่า doc_orig มีความหนาแน่น 72x72 dpi
หากการแปลงเป็น djvu จะใช้ได้เช่นกันและหากไม่มีสีที่เกี่ยวข้องคุณสามารถลองทำสิ่งต่อไปนี้:
แปลงไฟล์ pdf เป็นไฟล์ jpg โดยใช้ pdfimages -j
หากคุณได้รับไฟล์ pbm แทนคุณควรทำตามขั้นตอนกลาง:
for FILENAME in $(ls *.pbm); do convert $FILENAME ${FILENAME%.*}.jpg ;done
คำสั่ง convert มาจากแพ็คเกจ imagemagick
จากนั้นใช้scantailorเพื่อสร้าง tif จากมัน
ในขั้นตอนสุดท้ายคุณไปที่ scantailors out direcory (ที่ tif's ตั้งอยู่) และใช้djvubindกับไดเร็กทอรีนั้น
สิ่งนี้ควรลดขนาดไฟล์ลงอย่างมากโดยไม่สูญเสียคุณภาพของข้อความ หากคุณต้องการควบคุมdjvubind --no-ocr
ocr -backend ให้ละเอียดยิ่งขึ้นคุณอาจลองและใช้ ocrodjvu เพื่อเพิ่มเลเยอร์ ocr ในภายหลัง
หากคุณมีสีในเอกสารของคุณสิ่งที่ซับซ้อนมากขึ้น แทนที่จะเป็นdjvubindคุณสามารถใช้didjvuและในโหมดดูแรลเลอร์คุณต้องเปลี่ยนเป็นโหมดผสมและบางครั้งก็เลือกภาพสีด้วยตนเอง
โหลดภาพหรือแม้แต่ไฟล์ pdf ลงใน inkscape
จาก inkscape: บันทึกในรูปแบบเวกเตอร์ (เป็น. svg ดั้งเดิม)
นำเข้าไฟล์เวกเตอร์ลงใน Scribus แก้ไขเลย์เอาต์และส่งออก / บันทึกเป็น. pdf จากที่นั่น
เครื่องมือบีบอัด PDF ที่เรียบง่ายสุด ๆ : หน้า GitHub
การติดตั้งบน Ubuntu:
sudo add-apt-repository ppa:jfswitz/released
sudo apt-get update
sudo apt-get install pdf-compressor
มันใช้ผี
คุณสามารถลองสิ่งนี้:
$ 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
มันเร็วกว่าgs
แต่บีบอัดมากถึง 30% ในกรณีนี้สำหรับไฟล์อินพุต 107.5MiB
สำหรับฉันscreen
ตัวเลือกgs นั้นแย่เกินไปและตัวที่ebook
ใหญ่เกินไป
เอกสารต้นฉบับของฉันมีข้อความเป็นสีและภาพขาวดำ (ขึ้นอยู่กับหน้า)
ทางออกที่ดีที่สุดที่ฉันคิดไว้คือ:
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
โปรดทราบว่าระดับการบีบอัดไม่ใช่เชิงเส้น .. หากฉันระบุ 135 มันไม่ได้บีบอัดฉันพบว่า 130 เป็น (ในกรณีของฉัน) ความละเอียดสูงสุดที่ได้รับการบีบอัด
ฉันใช้คำสั่งด้านล่าง แต่ไม่ได้บีบอัดไฟล์ PDF ของฉันอย่างมีนัยสำคัญ บางครั้งบางส่วนถูกดำคล้ำหลังจากการบีบอัด
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf $INPUTFILE
"ps2pdf -dPDFSETTINGS=/ebook %s %s" % (input_file_path, out_file_path)
หลังจากท่องเว็บมากเกินไปฉันก็ไม่พบห้องสมุดบีบอัดที่เหมาะสม pdfcompressor.com
ฉันมาข้าม นี่เป็นเพียงเว็บไซต์ที่ยอดเยี่ยม มันบีบอัดไฟล์ PDF โดย 95% (15Mb ของไฟล์) ดังนั้นฉันใช้ซีลีเนียมและทอร์เพื่อทำการบีบอัดโดยอัตโนมัติ ชำระเงินที่เก็บ Github ของฉัน [GITHUB] ( https://github.com/gugli28/PdfCompressor )