ฉันจะลดขนาดไฟล์ของไฟล์ PDF ที่สแกนได้อย่างไร


372

ฉันมีไฟล์ PDF 72.9MB ที่ฉันต้องลดขนาดให้ต่ำกว่า 500KB

ไฟล์นี้เป็นภาพ JPEG ที่ฉันสแกนแล้วแปลงเป็น pdf


1
มันขึ้นอยู่กับสิ่งที่กินพื้นที่ ... ต้องการข้อมูลเพิ่มเติม การบีบอัดพื้นที่ภาพอาจช่วยได้ แต่ถ้าคุณพยายามสเปรย์ไฟล์กองใหญ่นั่นจะไม่ได้ผล ต้องการข้อมูลเพิ่มเติมอย่างจริงจัง
RobotHumans

1
แปลงเป็น DjVu แทนที่จะพยายามที่จะลดขนาดเป็นไปไม่ได้ในรูปแบบ PDF (ที่มาตาม)
zetah

ไฟล์นี้เป็นภาพ jpeg ที่ฉันสแกนแล้วแปลงเป็น pdf
tamimym

ดูเหมือนว่าจะช่วยให้ขนาดไฟล์เพียงเล็กน้อย แต่pdfoptมีรูปแบบที่ง่ายและปรับปรุงความเร็วในการโหลดและการเปลี่ยนหน้าในยุค iPad :-)
Ari B. Friedman

1
PDF เป็น PS ไม่มีประสิทธิภาพในไฟล์ PDF ที่สแกนฉันพยายามแปลงไฟล์ 56 ​​MB เป็นไฟล์ ps แต่ไฟล์ ps แปลงเป็น 1.3 GB และอีกครั้ง ps2pdf จะถูกแปลงเป็นไฟล์ 45 MB

คำตอบ:


145

aking1012 ถูกต้อง ด้วยข้อมูลเพิ่มเติมเกี่ยวกับรูปภาพแบบฝังที่เป็นไปได้ไฮเปอร์ลิงก์และอื่น ๆ มันจะตอบคำถามนี้ได้ง่ายขึ้น!

ต่อไปนี้เป็นโซลูชันสคริปต์และบรรทัดคำสั่งสองสามรายการ ใช้ตามที่เห็นสมควร


15
ขอบคุณมากสำหรับคำแนะนำของคุณเปลือก Ghostscript ทำงานสิ่งมหัศจรรย์และหดตัวลงไป 460KB :)
tamimym

นั่นไม่จำเป็นต้องเป็นความจริง หากเนื้อหาเปลี่ยนจากภาพเป็นข้อความนั่นเป็นสิ่งที่ยอมรับได้ [นั่นคือการสันนิษฐานว่าข้อความถูกทำให้กลมกลืนอย่างถูกต้อง]
15161 พระสงฆ์

2
ฉันแนะนำให้คุณลดขนาดสคริปต์ script คุณสามารถปรับแต่งรหัสเพื่อใช้ค่า ppi ที่คุณต้องการ (72 โดยค่าเริ่มต้น) และเข้าถึงขนาดไฟล์ที่คุณต้องการเพื่อลดคุณภาพอย่างน้อยที่สุด ทำให้ฉันสามารถอัปโหลดเอกสารที่สแกนได้ขนาด 11 MB ด้วยขนาดสูงสุด ขนาด 3 MB โดยไม่สูญเสียคุณภาพจำนวนมาก
Severo Raz

4
shrinkpdf ใช้งานได้ดี!
AmanicA

2
เชลล์ ghostscript ที่ OP อ้างถึงอยู่ที่askubuntu.com/questions/113544/หรือไม่?
user13107

519

ใช้คำสั่ง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 เลือกเอาต์พุตที่ต้องการให้มีประโยชน์สำหรับการใช้งานที่หลากหลายซึ่งอาจมีค่าใช้จ่ายของไฟล์เอาต์พุตที่ใหญ่กว่า

5
นี่ควรเป็นคำตอบที่ยอมรับได้ ghostscript คือการนำ PDF, XPS และ PS มาใช้กับ unices และสามารถทำทุกอย่างที่มีคุณภาพดีที่สุด ...
dom0

7
@Sina: จริงๆแล้วมีสคริปต์ Nautilus พร้อม GUI พื้นฐานที่ใช้ Zenity ที่ใช้คำสั่ง gs นี้พร้อมตัวเลือกระดับคุณภาพทั้งหมด: launchpad.net/compress-pdf
Sadi

36
นี่คือคำตอบที่ถูกต้องสำหรับคำถามนี้ (บีบอัดไฟล์ pdf ซึ่งส่วนใหญ่เป็นข้อมูลบิตแมป) ฉันพบว่าการscreenตั้งค่านั้นมีคุณภาพต่ำเกินไปสำหรับฉัน แต่ebookทำงานได้ดีตัด PDF ที่ใช้การสแกนขนาด 33Mb ลงเหลือ 3.6Mb และทำให้อ่านได้ง่ายมาก ตัวเลือกอื่น ๆ สำหรับ-dPDFSETTINGSตัวเลือกมีอยู่ที่นี่: milan.kupcevic.net/ghostscript-ps-pdfและอาจเป็นความคิดที่ดีที่จะรวมไว้ในคำตอบนี้
naught101

5
gs พารามิเตอร์การกำหนดค่าที่พร้อมใช้งาน: ghostscript.com/doc/current/Ps2pdf.htm
Antonios Hadjigeorgalis

3
ในวันที่ 17.10 มันสร้าง 42 mb pdf เป็น 127 mb :(
YaSh Chaudhary

156

วิธีที่ฉันโปรดปรานในการทำเช่นนี้คือการแปลงไฟล์ PDF เป็น ps และย้อนกลับ แม้ว่ามันจะไม่ได้ผลเสมอไป แต่เมื่อมันใช้งานได้ผลดี:

ps2pdf input.pdf output.pdf

นอกจากนี้ยังใช้งานได้กับไฟล์ PDF โดยตรงตามที่แนะนำในความคิดเห็น

ผู้ใช้บางคนรายงานความสำเร็จมากขึ้นเมื่อใช้การตั้งค่า ebookดังนี้:

ps2pdf -dPDFSETTINGS=/ebook input.pdf output.pdf 

4
นี่เป็นวิธีที่ง่ายและมีประสิทธิภาพในการทำ ฉันประหลาดใจที่เห็นว่าวิธีนี้บีบอัดไฟล์มากน้อยแค่ไหน ขอบคุณ!
Gabriel

16
แม้ว่าที่จริงแล้ววิธีการนี้จะกลายเป็นทางออกที่ฉันโปรดปรานในการบีบอัดไฟล์ PDF แต่มันก็แยกการเชื่อมโยง URL ที่เอกสารอาจมี (ซึ่งไม่ได้เกิดขึ้นกับวิธีการของ @Michael D) นอกจากนั้นความเจ๋งที่สุดคือทั้งหมดที่ฉันสามารถคิดได้ในการเรียกใช้ตัวอย่างนี้! (:
รูเบนส์

1
@ Rubens Ah ไม่ทราบเกี่ยวกับความจริงที่ว่ามันแบ่งการเชื่อมโยง URL ขอบคุณที่เพิ่มสิ่งนั้น
don.joey

3
การข้ามนี้เป็นการป้องกันด้วยรหัสผ่าน ... เพียงแค่ sayin '
jojo

8
ps2pdf จะใช้ไฟล์ PDF เป็นอินพุตดังนั้นคุณสามารถทำสิ่งนี้ได้ในขั้นตอนเดียว:ps2pdf intput.pdf output.pdf
frabjous

127

หากคุณมีไฟล์ 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อาร์กิวเมนต์)


3
สำหรับเอกสารที่สแกนซึ่งข้อความเป็นสิ่งที่คุณสนใจแทนที่จะเป็นรูปภาพและการรักษาความลึกไม่เป็นปัญหาการบีบอัด jpeg ไม่ใช่ความคิดที่ดีเพราะสิ่งประดิษฐ์มักจะเป็นสิ่งที่สังเกตได้อย่างชัดเจน หากคุณใช้pdfimages input.pdf pagesเพื่อแยกไฟล์ pbm คุณสามารถทำสิ่งfor page in *.pbm; do convert $page -compress Group4 -type bilevel TIFF:- | convert - output.pdfต่อไปนี้: OCR ใด ๆ จะหายไปดังนั้นฉันจึงมักจะทำpdfsandwich output.pdfซึ่งดูเหมือนว่าจะลดขนาดไฟล์ให้ดียิ่งขึ้น
Brian Z

1
@ BrianZ แน่ใจว่าการบีบอัด jpeg ไม่ใช่ตัวเลือกที่ดีที่สุดเสมอไป แต่สำหรับฉันแล้วมันเป็นวิธีที่ดีที่สุดสำหรับเอกสารประเภทผสม ฉันเพิ่มข้อมูลเกี่ยวกับวิธีการบีบอัดอื่น ๆ ลงในคำตอบ
คนที่

2
ในที่สุดวิธีนี้ใช้gsเบื้องหลัง
alfC

2
ผมใช้เส้นประคู่สำหรับตัวเลือกที่จะเรียกใช้คำสั่งVS--density --quality --compress -density -quality -compress
Rotareti

1
หากคุณภาพของรูปภาพไม่ใช่สิ่งที่น่ากังวลมากที่สุด (และคุณเพียงต้องการได้รับไฟล์แนบของอีเมลที่มีขนาดเล็กพอที่จะส่ง) อาจเพิ่มได้-resize 50%เช่นกันเปลี่ยนเปอร์เซ็นต์ขึ้นอยู่กับจำนวน DPI ที่ใช้ในขณะสแกน
chrki

41

ฉันต้องการลดขนาด PDF ที่มีการสแกนเอกสารสีเต็มรูปแบบ หน้าของฉันแต่ละหน้ามีภาพสีเต็มรูปแบบเท่าที่เกี่ยวข้องกับไฟล์ พวกเขาเป็นภาพของหน้าเว็บที่มีข้อความและภาพ แต่ถูกสร้างขึ้นโดยการสแกนไปที่ภาพ

ฉันใช้การรวมกันของคำสั่ง ghostscript ด้านล่างและอีกอันจากเธรดอื่น

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

สิ่งนี้ลดความละเอียดของภาพเป็น 150dpi ลดขนาดไฟล์ลงครึ่งหนึ่ง เมื่อมองดูเอกสารคุณภาพของภาพแทบจะไม่มีการสูญเสียไปเลย ข้อความยังคงสามารถอ่านได้อย่างสมบูรณ์ใน 2012 Nexus7 ของฉัน


3
+1 สำหรับภาพตัวอย่างลง แต่เก็บข้อความเป็นเวกเตอร์ สร้างความแตกต่างอย่างมากในด้านโดยไม่ทำให้ข้อความของฉันเป็นตัวหนังสือ
Jason O'Neil

เยี่ยมมากที่เราสามารถปรับความละเอียดด้วยคำสั่งนี้ - นี่ให้ผลลัพธ์ที่ดีกว่าการใช้ dPDFSETTINGS = \ screen
แลกเปลี่ยน

29

นี่คือสคริปต์สำหรับเขียนไฟล์ 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 ของคุณและต่อยในเทอร์มินัล


1
ทำงานได้ดีขอบคุณ Oli คุณได้ตอบทุกสิ่งที่ฉันถามมาแล้วในตอนนี้ :-D
Rob Cowell

นี่คือคำตอบที่ดี แต่ในกรณีของฉันอย่างน้อยก็จะใช้เวลามากของเวลาในการแปลงค่อนข้างใหญ่ (> 10Mb) รูปแบบไฟล์ PDF (มากกว่านาที)
Gabriel

ฉันไม่แน่ใจว่าเกิดอะไรขึ้น แต่ PDF 30 MB ส่งผลให้มีขนาดไฟล์ 68 MB แทนที่จะลดขนาดก็ขยายใหญ่ขึ้น เอาต์พุตเดียวกันหากใช้ ps2pdf โดยตรงตามที่ระบุในคำตอบถัดไป
Ed Villegas

@EdVillegas สิ่งเดียวที่ฉันคิดได้ (เพื่ออธิบายประเภทที่เพิ่มขึ้น) คือภาพมีความละเอียดต่ำกว่าภาพที่สร้าง (72dpi) หรือการฝังฟอนต์ในทุกฟอนต์
Oli

21

ฉันมักจะใช้ 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))

ขอบคุณสำหรับโซลูชันทางเลือก ฉันลองใช้ Oli ก่อนแล้วก็ให้ผลลัพธ์ตามที่ฉันต้องการ แต่ฉันจะเก็บมันไว้ใช้อ้างอิงในอนาคตด้วย
Rob Cowell

1
-dPDFSETTINGS = / ตัวเลือกเครื่องพิมพ์จะปรับขนาด 50% ebook ทำปรับขนาด 90%
neouyghur

17
  1. ฉันใช้LibreOffice Drawเพื่อเปิดไฟล์ pdf
  2. ฉันแล้ว "ส่งออกเป็น pdf"
  3. และตั้งค่า "คุณภาพการบีบอัด jpeg" เป็น 50% และ "ความละเอียดของภาพ" ถึง 150 dpi

นี้จะมีผลดี


ทางออกที่เป็นไปได้ที่เลวร้ายที่สุดสำหรับปัญหา! มันทำให้ไฟล์ของฉันยุ่งมาก!

9

ดีที่สุดสำหรับฉันคือ

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

ความนับถือ


ทางออกที่ดี ง่ายต่อการจดจำและนำไฟล์ PDF ของฉันมาจาก 32 ถึง 3.5 MB โดยไม่สูญเสียความสามารถในการอ่าน
Immanuel Weihnachten

ฉันชอบวิธีที่สอง pdf2ps input.pdf temp.ps && ps2pdf14 temp.ps output.pdf && rm temp.ps
McPeppr

5

ฉันเพิ่งพบปัญหานี้ด้วยตัวเอง หากใช้การสแกนแบบง่ายให้เลือกโหมดข้อความสำหรับการสแกนความละเอียดต่ำและคุณไม่จำเป็นต้องกังวลเกี่ยวกับสิ่งที่บรรทัดคำสั่ง แค่พูด.


1
นี่คือคำตอบเดียวในหัวข้อนี้ที่แก้ไขปัญหาของฉัน ฉันดูหมิ่น Simplescan แต่มันเป็นคำตอบสำหรับฉันจริงๆแทนที่จะต่อสู้กับ Xsane ในสิ่งที่ดูเหมือนจะเป็นความเจ็บปวดที่ไม่รู้จบ
versvs

4

ควบคุมคุณภาพการบีบอัด:

#!/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}

... ดังนั้นทั้งอินพุตและเอาต์พุตเป็นอาร์กิวเมนต์เดียวกันหรือไม่ คุณอาจต้องการเพิ่มแนวทางการใช้งาน
เล็ก ๆ น้อย ๆ

2
shiftหมายเหตุ พารามิเตอร์แรกคือไฟล์อินพุตที่สองคือไฟล์เอาต์พุตและพารามิเตอร์ที่เหลือจะถูกส่งผ่านไปgsตามที่เป็นอยู่
Mikko Rantalainen

ฉันคิดว่าคุณต้องการ / HSample sและ / VSample sไม่ใช่ / HSample และ / VSample ดูตัวอย่างเอกสาร ps2pdfหรือคู่มืออ้างอิงภาษา PostScript บางทีก็น่าสังเกตว่าช่วง QFactor ที่อนุญาตคือ 0 ถึง 1,000,000 และค่าที่ต่ำกว่าจะให้คุณภาพที่สูงกว่า
Pont

3

เนื่องจากลิงค์นี้เป็นครั้งแรกสำหรับฉันเมื่อฉันค้นหาใน Google ฉันคิดว่าฉันจะเพิ่มความเป็นไปได้อีกหนึ่งอย่าง วิธีแก้ปัญหาข้างต้นไม่ได้ผลสำหรับฉันใน pdf ที่ส่งออกจาก Inkscape (15 mb) แต่ในที่สุดฉันก็สามารถย่อขนาดลงเหลือ 1 mb โดยเปิดใน GIMP และส่งออกเป็น pdf อีกครั้ง

ตัวเลือกอื่นที่เข้ามาใกล้ (แต่ข้อความค่อนข้างเลือนเล็กน้อย) คือยูทิลิตี้การแปลงของ ImageMagick:

convert -compress Zip input.pdf output.pdf

ฉันเดาว่านี่คือสิ่งที่คุณหมายถึงโดย "ความคลุมเครือเล็กน้อย" แต่เพื่อให้ชัดเจนconvert -compress Zipขึ้น
Sparhawk

3

ในท้ายที่สุดผมเขียนสคริปต์ทุบตีของตัวเองที่จะแก้ปัญหานี้จะใช้mogrify, convertและgsเพื่อดึงหน้า PDF เป็น PNG, ปรับขนาดพวกเขาแปลงให้ BMP 1 บิตแล้วสร้างพวกเขาเป็น pdf การลดขนาดไฟล์อาจเกิน 90% มีจำหน่ายที่http://www.timedicer.co.uk/programs/help/pdf-compress.sh.php


3

ผมขอแนะนำpdfsizeopt

มันมีประสิทธิภาพมากขึ้นในแง่ของการลดขนาดกว่าใด ๆ ของ CLI และ GUI ซอฟต์แวร์ก่อนหน้านี้ที่ผมได้ลอง (รวมทั้งconvert, gs, pdftkฯลฯ ) - แม้ว่าอาจจะช้ากว่าที่มีpngoutการเปิดใช้งาน - และไม่ได้มีบางส่วนของปัญหาของพวกเขา (ไม่หนัก รูปภาพที่เป็นพิกเซล / เสื่อมคุณภาพไม่มีการสูญเสียบุ๊คมาร์ค

ทีนี้ถ้าคุณจำเป็นต้องมีขนาดที่แน่นอนไม่ว่าผลที่ตามมา (รวมถึงการลดขนาดภาพลงเป็นจุดที่อ่านไม่ได้) มันอาจไม่ใช่เครื่องมือที่คุณต้องการ แต่เป็นวิธีแก้ปัญหาที่ใช้งานได้ตลอดเวลาเพื่อลดขนาดที่ไม่จำเป็น ในรูปแบบ PDF โดยไม่สูญเสียความสามารถในการอ่านข้อมูลและคุณภาพของภาพที่ยอมรับได้ฉันคิดว่านี่เป็นตัวเลือกที่ดีที่สุด (หมายเหตุ: ฉันมักจะใช้หลังจากทำ vectorization-OCR ใน Adobe Acrobat เป็นครั้งแรก [ฟังก์ชั่นที่ใช้เรียกว่า "CleanScan"] ซึ่งสามารถส่งผลกระทบต่อขนาดของเอกสารข้อความสแกนที่สแกนได้)


ฉันแนะนำการติดตั้ง Unix ทั่วไป :

  1. ติดตั้งการพึ่งพาที่จำเป็นทั้งหมด:

  2. ดาวน์โหลดและติดตั้งโปรแกรมปฏิบัติการ:

    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

2

ฉันกำลังเผชิญปัญหาเดียวกันและดีใจที่ได้พบเธรดนี้ โดยเฉพาะฉันมีไฟล์ 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


1

หากการแปลงเป็น 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-ocrocr -backend ให้ละเอียดยิ่งขึ้นคุณอาจลองและใช้ ocrodjvu เพื่อเพิ่มเลเยอร์ ocr ในภายหลัง

หากคุณมีสีในเอกสารของคุณสิ่งที่ซับซ้อนมากขึ้น แทนที่จะเป็นdjvubindคุณสามารถใช้didjvuและในโหมดดูแรลเลอร์คุณต้องเปลี่ยนเป็นโหมดผสมและบางครั้งก็เลือกภาพสีด้วยตนเอง


1

โหลดภาพหรือแม้แต่ไฟล์ pdf ลงใน inkscape

จาก inkscape: บันทึกในรูปแบบเวกเตอร์ (เป็น. svg ดั้งเดิม)

นำเข้าไฟล์เวกเตอร์ลงใน Scribus แก้ไขเลย์เอาต์และส่งออก / บันทึกเป็น. pdf จากที่นั่น


0

เครื่องมือบีบอัด PDF ที่เรียบง่ายสุด ๆ : หน้า GitHub

การติดตั้งบน Ubuntu:

sudo add-apt-repository ppa:jfswitz/released

sudo apt-get update

sudo apt-get install pdf-compressor

มันใช้ผี


0

คุณสามารถลองสิ่งนี้:

$ 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


0

สำหรับฉัน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 เป็น (ในกรณีของฉัน) ความละเอียดสูงสุดที่ได้รับการบีบอัด


-1

ฉันใช้คำสั่งด้านล่าง แต่ไม่ได้บีบอัดไฟล์ PDF ของฉันอย่างมีนัยสำคัญ บางครั้งบางส่วนถูกดำคล้ำหลังจากการบีบอัด

  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)

หลังจากท่องเว็บมากเกินไปฉันก็ไม่พบห้องสมุดบีบอัดที่เหมาะสม pdfcompressor.comฉันมาข้าม นี่เป็นเพียงเว็บไซต์ที่ยอดเยี่ยม มันบีบอัดไฟล์ PDF โดย 95% (15Mb ของไฟล์) ดังนั้นฉันใช้ซีลีเนียมและทอร์เพื่อทำการบีบอัดโดยอัตโนมัติ ชำระเงินที่เก็บ Github ของฉัน [GITHUB] ( https://github.com/gugli28/PdfCompressor )

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.