Có cách nào để làm phẳng hình ảnh .pdf từ dòng lệnh không?


19

Trong GIMP, tôi có thể nhập .pdf và sử dụng GUI để làm phẳng nó (nếu nó được tạo với nhiều lớp) bằng cách chọn "Làm phẳng hình ảnh" trong menu thả xuống "Hình ảnh". Sau đó tôi có thể xuất .pdf với tên tệp mới.

Tôi muốn tự động hóa việc này. Có một số cách để làm điều đó thông qua các thiết bị đầu cuối?


1
cài đặt hình ảnh và đọc man mogrify-im6, montage-im6, display-im6, stream-im6, xác định-im6, import-im6, symure-im6, composite-im6, convert-im6, animate-im6 và so sánh-im6.
Tiếng Ba Tư

Câu trả lời:


25

Tôi tìm thấy 2 phương thức này thông qua Google, trong chuỗi này có tiêu đề: Re: Làm phẳng các tệp PDF tại Dòng lệnh UNIX .

Phương pháp số 1 - sử dụng chuyển đổi của Imagemagick:
$ convert orig.pdf flattened.pdf 

LƯU Ý: Chất lượng được báo cáo là như vậy với phương pháp này.

Phương pháp # 2 - Sử dụng pdf2ps -> ps2pdf:
$ pdf2ps orig.pdf - | ps2pdf - flattened.pdf 

LƯU Ý: Phương pháp này được báo cáo để giữ lại chất lượng hình ảnh.


1
Chất lượng tốt hơn GIMP về thứ hai - cảm ơn!
generic_user

@ACD - đó là điều tốt để biết. Rất vui vì nó đã giải quyết Q. của bạn
slm

2
Phương pháp 1 tạo ra một hình ảnh rất mờ, trong khi phương pháp 2 hoạt động hoàn hảo.
Severyn Kozak

1
Thật không may, Phương pháp # 2 không rasterize hình ảnh, vì vậy nếu bạn đang cố gắng chặn các phần nhạy cảm, người dùng vẫn có thể mở tài liệu và xóa các lớp (với thứ gì đó như Inkscape). Bạn có thể, tuy nhiên, thay đổi độ phân giải của Phương pháp # 1: $ convert -density 150 {original,flattened}.pdf Nếu bạn cần phải giữ gìn không gian đĩa, bạn có thể sử dụng -type Grayscalehoặc -monochromehoặc những thứ thuộc loại đó.
eacousineau

1
Cả hai phương pháp sẽ rasterize pdf, mặc dù phương thức # 2 thực hiện nó ở độ phân giải cao hơn nhiều. Vì vậy, không có phương pháp nào trong số này là thỏa mãn.
Kiến

18

Ghostscript (gs) làm việc tốt hơn pdf2psconvertđối với tôi. Chất lượng hầu như không bị suy giảm và kích thước tập tin là nhỏ.

gs -dSAFER -dBATCH -dNOPAUSE -dNOCACHE -sDEVICE=pdfwrite \
-sColorConversionStrategy=/LeaveColorUnchanged  \
-dAutoFilterColorImages=true \
-dAutoFilterGrayImages=true \
-dDownsampleMonoImages=true \
-dDownsampleGrayImages=true \
-dDownsampleColorImages=true \
-sOutputFile=document_flat.pdf document_original.pdf

Tìm thấy ở đây: http://zeroset.mnim.org/2015/01/07/flatten-pdfs-with-ghostscript/


Phương pháp này hoạt động rất tốt, pdf không bị raster và văn bản được bảo tồn dưới dạng văn bản
Ant

2
Tôi đã thử sử dụng điều này để loại bỏ một lớp trong suốt bằng cách làm phẳng, nhưng nó không hoạt động với tôi.
mikemtnbike

Nó đã thay đổi một phông chữ cho tôi nhưng độ phân giải tốt hơn nhiều so với các phương pháp được đề xuất khác.
ste

1

Mặc dù chuyển đổi sẽ giữ nguyên kích thước tệp mà tôi thấy nó bị chậm.

Phương pháp ps2pdf pdf2ps nhanh hơn nhưng tôi nhận thấy với tôi nó đang tăng kích thước tệp.

pdftk là tốt vì nó không chỉ nhanh mà còn giữ kích thước tệp tương tự.

Đây là những gì tôi sử dụng để làm phẳng một thư mục.

    function pdfflatten () {
        pdftk "$1" output "$2" flatten
    }
    export pdfflatten
    alias pdfflattenDIR='mkdir flattenedPDFs; for i in `seq $(ls *.pdf | wc -l)`; do a=`ls *.pdf | head -$i | tail -1`; pdfflatten "$a" flattenedPDFs/"$a"; done'

pdftk flatten không thay đổi hình ảnh trong tệp PDF. Từ các tài liệu, nó "hợp nhất các trường mẫu tương tác của PDF đầu vào (và dữ liệu của chúng) với các trang của PDF"
Aidan Kane

1
Để rõ ràng, phương pháp này không làm phẳng các lớp trong suốt (như đã chỉ ra ở trên).
mikemtnbike 6/11/18
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.