Tôi có một tệp PDF 72,9 MB mà tôi cần thu nhỏ lại dưới 500KB.
Tệp này là hình ảnh JPEG mà tôi đã quét và sau đó được chuyển đổi thành pdf.
pdfopt
có một cú pháp đơn giản và cải thiện tốc độ tải và chuyển trang trong kỷ nguyên iPad. :-)
Tôi có một tệp PDF 72,9 MB mà tôi cần thu nhỏ lại dưới 500KB.
Tệp này là hình ảnh JPEG mà tôi đã quét và sau đó được chuyển đổi thành pdf.
pdfopt
có một cú pháp đơn giản và cải thiện tốc độ tải và chuyển trang trong kỷ nguyên iPad. :-)
Câu trả lời:
aking1012 là đúng. Với nhiều thông tin liên quan đến hình ảnh nhúng có thể, siêu liên kết, v.v. sẽ dễ dàng hơn nhiều để trả lời câu hỏi này!
Dưới đây là một vài giải pháp về kịch bản và dòng lệnh. Sử dụng khi bạn thấy phù hợp.
Sử dụng lệnh ghostscript sau :
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf input.pdf
-dPDFSETTINGS=/screen
chất lượng thấp hơn, kích thước nhỏ hơn. ( 72 dpi )-dPDFSETTINGS=/ebook
cho chất lượng tốt hơn, nhưng pdf lớn hơn một chút. ( 150 dpi )-dPDFSETTINGS=/prepress
đầu ra tương tự như cài đặt "Prepress Optimized" của Acrobat Distiller ( 300 dpi )-dPDFSETTINGS=/printer
chọn đầu ra tương tự như cài đặt "Tối ưu hóa in" của Acrobat Distiller ( 300 dpi )-dPDFSETTINGS=/default
chọn đầu ra dự định sẽ hữu ích trong nhiều mục đích sử dụng khác nhau, có thể bằng chi phí của một tệp đầu ra lớn hơnscreen
cài đặt này có chất lượng quá thấp đối với tôi, nhưng ebook
hoạt động tốt, cắt PDF dựa trên quét 33Mb xuống còn 3,6Mb và giữ cho nó rất dễ đọc. Các tùy chọn khác cho -dPDFSETTINGS
tùy chọn được liệt kê ở đây: milan.kupcevic.net/ghostscript-ps-pdf , và có thể nên đưa chúng vào câu trả lời này.
Cách yêu thích của tôi để làm điều này là chuyển đổi pdf sang ps và quay lại. Tuy nhiên, không phải lúc nào nó cũng hoạt động, nhưng khi nó hoạt động thì kết quả rất tuyệt:
ps2pdf input.pdf output.pdf
Điều này cũng trực tiếp hoạt động trên pdf, như được đề xuất trong các ý kiến.
Một số người dùng cũng báo cáo thành công hơn khi sử dụng cài đặt ebook như sau:
ps2pdf -dPDFSETTINGS=/ebook input.pdf output.pdf
ps2pdf intput.pdf output.pdf
Nếu bạn có pdf với hình ảnh được quét , bạn có thể sử dụng convert
để tạo pdf với nén jpeg (Bạn có thể sử dụng phương pháp này trên bất kỳ pdf nào, nhưng bạn sẽ mất tất cả thông tin văn bản).
Ví dụ:
convert -density 200x200 -quality 60 -compress jpeg input.pdf output.pdf
Điều chỉnh mật độ (ví dụ 100x100) và chất lượng theo nhu cầu của bạn.
Tùy thuộc vào nén jpeg đầu vào của bạn có thể không phải là lựa chọn tốt nhất do các tạo phẩm nén. Bạn có thể lựa chọn giữa BZip, Fax, Group4, JPEG, JPEG2000, Lossless, LZW, RLE hoặc Zip làm phương thức nén thay thế (một số chỉ cho phép hình ảnh b / w). Để biết chi tiết xem tại đây .
Tôi đã có thể đạt được tỷ lệ nén tuyệt vời cho các tài liệu được quét / chụp ảnh (tùy thuộc vào cài đặt). Tùy thuộc vào nguồn tài liệu, bạn có thể muốn giảm độ sâu màu ( -depth
đối số).
pdfimages input.pdf pages
để giải nén các tệp pbm, thì bạn có thể làm một cái gì đó như : for page in *.pbm; do convert $page -compress Group4 -type bilevel TIFF:- | convert - output.pdf
. Bất kỳ OCR nào cũng sẽ bị mất nên tôi thường làm vậy pdfsandwich output.pdf
, điều này dường như làm giảm kích thước tệp hơn nữa.
gs
đằng sau hậu trường.
--density --quality --compress
vs -density -quality -compress
.
-resize 50%
, thay đổi tỷ lệ phần trăm tùy thuộc vào mức độ DPI được sử dụng trong khi quét
Tôi cần phải thu nhỏ kích thước PDF có chứa bản quét màu đầy đủ của tài liệu. Mỗi trang của tôi là một hình ảnh đầy đủ màu sắc liên quan đến tập tin. Chúng là hình ảnh của các trang chứa văn bản và hình ảnh, nhưng chúng được tạo ra bằng cách quét vào một hình ảnh.
Tôi đã sử dụng kết hợp lệnh ghostscript dưới đây và một từ một luồng khác.
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dDownsampleColorImages=true \
-dColorImageResolution=150 -dNOPAUSE -dBATCH -sOutputFile=output.pdf input.pdf
Điều này làm giảm độ phân giải hình ảnh xuống 150dpi, giảm kích thước tệp của tôi xuống một nửa. Nhìn vào tài liệu, hầu như không có sự mất mát đáng chú ý nào về chất lượng hình ảnh. Văn bản vẫn hoàn toàn có thể đọc được trên Nexus7 2012 của tôi.
Đây là một kịch bản để viết lại các bản pdf được quét:
#!/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
Bạn có thể tùy chỉnh nó một chút để làm cho nó có thể tái sử dụng nhiều hơn nhưng nếu bạn chỉ có một pdf, bạn chỉ có thể thay thế $1
bằng tên tệp pdf của mình và bung nó trong một thiết bị đầu cuối.
Tôi thường sử dụng ps2pdf để làm điều này (cú pháp dễ dàng hơn), đại loại như thế này:
ps2pdf -dPDFSETTINGS=/ebook BiggerPdf SmallerPDF
Tôi sử dụng tập lệnh python sau đây để giảm kích thước của tất cả các tệp pdf trong một thư mục trong một máy chủ sản xuất (8.04). Vì vậy, nó nên làm việc.
#!/usr/bin/python
import os
for fich in os.listdir('.'):
if fich[-3:]=="pdf":
os.system("ps2pdf -dPDFSETTINGS=/ebook %s reduc/%s" % (fich,fich))
Điều này sẽ có một kết quả tốt.
Tốt nhất cho tôi là
convert -compress Zip -density 150x150 input.pdf output.pdf
Những cách khác:
#### 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
Trân trọng
pdf2ps input.pdf temp.ps && ps2pdf14 temp.ps output.pdf && rm temp.ps
Tôi chỉ gặp phải vấn đề này bản thân mình. Nếu sử dụng quét đơn giản, hãy chọn chế độ văn bản để quét độ phân giải thấp và bạn sẽ không cần phải lo lắng về nội dung dòng lệnh. Chỉ cần nói.
Kiểm soát chất lượng nén:
#!/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
. Tham số đầu tiên là tệp đầu vào, thứ hai là tệp đầu ra và phần còn lại của các tham số sẽ được chuyển sang nguyên trạng gs
.
Vì liên kết này là lần đầu tiên đối với tôi khi tôi tìm kiếm trong Google, tôi nghĩ rằng tôi sẽ thêm một khả năng nữa. Không có giải pháp nào ở trên hoạt động với tôi trên pdf được xuất từ Inkscape (15 mb), nhưng cuối cùng tôi đã có thể thu nhỏ nó xuống còn 1 mb bằng cách mở nó trong GIMP và xuất lại dưới dạng pdf.
Một tùy chọn khác đã đến gần (nhưng văn bản hơi mờ) là tiện ích chuyển đổi của ImageMagick:
convert -compress Zip input.pdf output.pdf
convert -compress Zip
xuất hiện để rasterise tất cả các vectơ.
Cuối cùng tôi đã viết kịch bản bash của riêng tôi để giải quyết việc này, nó sử dụng mogrify
, convert
và gs
trích xuất các trang pdf như png, thay đổi kích thước chúng, chuyển chúng tới 1-bit bmp và sau đó xây dựng lại chúng như pdf. Giảm kích thước tập tin có thể hơn 90%. Có sẵn tại địa chỉ http://www.timedicer.co.uk/programs/help/pdf-compress.sh.php .
Tôi thực sự khuyên bạn nên pdfsizeopt .
Đó là hiệu quả hơn về mặt giảm kích thước so với bất kỳ CLI và giao diện phần mềm trước đó tôi đã cố gắng (bao gồm convert
, gs
, pdftk
, vv) - mặc dù có thể chậm hơn với pngout
kích hoạt - và không có một số vấn đề của họ (không nặng nề hình ảnh pixelated / xuống cấp, không mất dấu, v.v.).
Bây giờ, nếu bạn cần đạt được một kích thước nhất định bất kể hậu quả (bao gồm các hình ảnh xuống cấp đến mức không thể đọc được), nó có thể không phải là công cụ bạn cần, nhưng là một giải pháp luôn hoạt động, để giảm kích thước lớn không cần thiết trong các tệp PDF mà không mất khả năng đọc, thông tin và chất lượng hình ảnh chấp nhận được, tôi nghĩ đó là lựa chọn tốt nhất. (Lưu ý: Tôi có xu hướng sử dụng nó sau khi lần đầu tiên thực hiện vector hóa-OCR trong Adobe Acrobat [chức năng được gọi là "CleanScan"], có thể có tác động kích thước kịch tính đối với một số tài liệu văn bản được quét.)
Tôi khuyên bạn nên cài đặt Unix chung :
Cài đặt tất cả các phụ thuộc cần thiết:
Tải xuống và cài đặt thực thi:
curl -L -o https://raw.githubusercontent.com/pts/pdfsizeopt/master/pdfsizeopt.single
cp pdfsizeopt.single /usr/local/bin/pdfsizeopt
Sử dụng:
pdfsizeopt original.pdf [compressed.pdf]
Lưu ý cho người dùng mac tìm thấy bài đăng này (hoặc người dùng Linuxbrew): có công thức cài đặt Homebrew:
brew install --HEAD pts/utils/pdfsizeopt
Tôi đã phải đối mặt với cùng một vấn đề, và rất vui khi tìm thấy chủ đề này. Cụ thể tôi đã có một pdf được tạo từ các hình ảnh được quét và cần giảm kích thước byte của nó xuống 6 lần.
Thật không may, không có giải pháp nào ở trên hoạt động cả: nhưng pdf có kích thước
identify -verbose doc_orig.pdf | grep "Print size"
Print size: 35.4167x48.7222
Cuối cùng tôi đã nhận được kết quả mong muốn với lệnh "convert" vừa thực hiện thay đổi kích thước cũng như các bước nén trong một:
convert -density 135x135 -quality 70 -compress jpeg -resize 22.588% doc_orig.pdf doc_lowres.pdf
Lưu ý rằng doc_orig có mật độ 72x72 dpi.
Nếu chuyển đổi sang djvu cũng sẽ ổn và nếu không có màu sắc liên quan, bạn có thể thử như sau:
Chuyển đổi tập tin pdf sang jpg bằng cách sử dụng pdfimages -j
Nếu bạn nhận được tệp pbm thay vào đó, bạn nên thực hiện bước trung gian:
for FILENAME in $(ls *.pbm); do convert $FILENAME ${FILENAME%.*}.jpg ;done
Lệnh convert là từ gói fantemagick.
Sau đó sử dụng scantailor để làm cho nó ra khỏi nó.
Ở bước cuối cùng, bạn đi đến scantailors out direcory (nơi đặt tif's) và áp dụng djvubind vào thư mục đó.
Điều này sẽ làm giảm kích thước tập tin mạnh mẽ mà không làm mất chất lượng lớn của văn bản. Nếu bạn muốn kiểm soát tốt hơn đối với phần cuối, bạn có thể thử djvubind --no-ocr
và sử dụng ocrodjvu để thêm lớp ocr sau đó.
Nếu bạn có màu trong tài liệu của bạn, mọi thứ sẽ phức tạp hơn một chút. Thay vì djvubind, bạn có thể sử dụng didjvu và trong scantailor, bạn phải thay đổi sang chế độ hỗn hợp và chọn đôi khi hình ảnh màu thủ công.
Công cụ nén PDF siêu đơn giản: trang GitHub.
Cài đặt trên Ubuntu:
sudo add-apt-repository ppa:jfswitz/released
sudo apt-get update
sudo apt-get install pdf-compressor
Nó sử dụng ghostscript.
Bạn có thể thử điều này:
$ 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
Nó nhanh hơn gs
nhưng nén tới 30% trong trường hợp này đối với tệp đầu vào 107,5MiB.
Đối với tôi screen
tùy chọn gs là quá tệ, và ebook
cái quá lớn.
Tài liệu gốc của tôi chứa văn bản dưới dạng màu và hình ảnh đen trắng (tùy thuộc vào trang).
Giải pháp tốt nhất tôi đã đưa ra là:
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
Lưu ý rằng mức nén không phải là tuyến tính .. nếu tôi chỉ định 135 thì nó không nén, tôi đã tìm thấy 130 là (trong trường hợp của tôi) độ phân giải tối đa đạt được độ nén.
Tôi đã sử dụng các lệnh dưới đây nhưng nó không nén tập tin pdf của tôi. Đôi khi một số phần bị đen sau khi nén.
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)
Sau quá nhiều lần lang thang trên web, tôi không thể tìm thấy thư viện nén phù hợp. Tôi đi qua pdfcompressor.com
. Đây chỉ là trang web tuyệt vời. Nó nén pdf 95% (15Mb tệp). Vì vậy, tôi đã sử dụng selen và Tor để tự động nén. Kiểm tra kho lưu trữ Github của tôi. [GITHUB] ( https://github.com/gugli28/PdfCompressor )