Làm cách nào tôi có thể làm phẳng hoàn toàn một tệp PDF trong Mac OS trên dòng lệnh?


16

Tôi sử dụng Mac OS X Snow Leopard. Tôi có một bản PDF với các trường mẫu, chú thích và tem trên đó. Tôi muốn đóng băng (hoặc "làm phẳng") rằng PDF để các trường biểu mẫu không thể thay đổi và chú thích / tem không còn có thể chỉnh sửa. Vì tôi thực sự có nhiều tệp PDF này, tôi muốn thực hiện việc này tự động trên dòng lệnh.

Một số điều tôi đã thử / xem xét, với mức độ thành công của họ:

  • Mở trong Xem trước và In ra tệp. Điều này tạo ra một tệp PDF hoàn toàn phẳng mà không thay đổi kích thước tệp. Tuy nhiên, cách duy nhất để tự động hóa là viết một AppleScript dựa trên giao diện người dùng ít ỏi , điều mà tôi đã cố gắng tránh.
  • Mở trong Acrobat Pro và sử dụng chức năng JavaScript để làm phẳng . Một lần nữa, không chắc chắn làm thế nào để tự động hóa điều này trên dòng lệnh.
  • Sử dụng pdftkvới flattentùy chọn. Nhưng điều này chỉ làm phẳng các trường, không phải tem và các chú thích khác.
  • Sử dụng cupsfiltercó thể tạo PDF từ nhiều định dạng tệp. Giống như pdftkđiều này làm phẳng chỉ các trường mẫu.
  • Sử dụng cups-pdfđể nối vào máy chủ in của Mac và lưu tệp PDF thay vì in. Tôi đã sử dụng phiên bản macports . Các tập tin kết quả là phẳng nhưng rất lớn. Tôi đã thử điều này trên một tệp 8 MB; PDF dẹt là 358 MB! Có lẽ điều này có thể được kết hợp với một cuộc gọi ghostscript như trong Ubuntu Mẹo: Cách giảm kích thước tệp PDF từ dòng lệnh .

Bất kỳ đề nghị khác sẽ được đánh giá cao.


1
Automator.app có một số tùy chọn xử lý pdf tích hợp. Có lẽ một trong số họ có thể giúp trực tiếp hoặc kết hợp với một trong những hành động trên.
Kassym Dorsel

Bạn có thể cung cấp một tài liệu mẫu PDF có chứa các yếu tố này không?
Daniel Beck

Tôi nghĩ vậy. Ngay bây giờ tất cả các mẫu của tôi là câu đố của sinh viên vì vậy tôi phải chế giễu một cái gì đó.
Matthew Leingang

Câu trả lời:


11

Hãy thử sử dụng pdf2psps2pdfliên tiếp. Nó hơi cồng kềnh nhưng nó giúp tôi giảm tài liệu 30 MB xuống còn 17 MB. Không nhiều như tôi muốn nhưng vẫn tốt hơn. Tôi đã có ý tưởng này từ một người bạn đã sử dụng phương pháp này để loại bỏ quyền truy cập mật khẩu trên pdf.

pdf2ps your_pdf_file.pdf your_pdf_file.ps
ps2pdf your_pdf_file.ps your_pdf_file_from_ps.pdf

Mong rằng sẽ giúp!


3
FTW GhostScript! Tôi đã đưa nó xuống một ống lót bằng cách sử dụng một đường ống : pdf2ps file.pdf - | ps2pdf - file_flat.pdf. Các tập tin đã tăng từ 300K lên 500K, tăng phần trăm lớn nhưng không có gì giống như mức tăng 4400% mà cups-pdfphương pháp mang lại.
Matthew Leingang

Thật ra, tôi đã có may mắn hơn với pdf2ps -q -sOutputFile=- file.pdf | ps2pdf - file_flat.pdf.
Matthew Leingang

4
Lưu ý rằng trên Mac, bạn có thể cài đặt Ghostscript để cung cấp các lệnh trên thông qua homebrew với brew install ghostscript.
Nick

5

Vì vậy, đây là những gì tôi đã sử dụng gần đây. Tôi nghĩ về mặt chức năng nó làm điều tương tự pdf2ps file.pdf - | ps2pdf - file_flat.pdf, nhưng nó dường như làm việc tốt hơn đối với tôi.

gs -sDEVICE=pdfwrite -dPDFSETTINGS=/default -dNOPAUSE -dQUIET -dBATCH -sOutputFile=<newfile> <oldfile>

Các giải pháp ps2pdf thất bại đối với tôi. Điều này đã làm việc, bằng cách hiển thị lại các phông chữ trong PDF.
ℝaphink

Cả hai lệnh này đều bị làm phẳng. Bạn có thể sao chép các lớp bên dưới bằng Preview và nội dung gốc sẽ xuất hiện.
Alain O'Dea

1

Nó có thể là tùy chọn phụ, nhưng bạn đã xem xét chuỗi xích-pdf với pdftk hoặc cupfilter chưa? Giống như bạn đã đề cập, cup-pdf sẽ tạo ra một tệp pdf phẳng và sau đó chuyển qua pdftk hoặc cupfilter để đưa nó xuống kích thước chấp nhận được?

Hoặc hãy xem /System/Library/Printers/Libraries/convert Bạn sẽ có thể làm một cái gì đó như

/System/Library/Printers/Libraries/convert -f input_file.pdf -o output_file.pdf -j "application/pdf"

Mac của tôi không có /System/Library/Printers/Libraries/convert. Tôi đã thử cupsfilter. Khi chuyển đổi từ PDF sang PDF, không có thay đổi nào được thực hiện đối với tệp. Khi chuyển đổi từ PDF sang PS và sau đó sang PDF, các chú thích đã bị mất.
Matthew Leingang

1

CẢNH BÁO: gs và pdf2ps | ps2pdf KHÔNG làm phẳng các tệp PDF!

Sử dụng gs hoặc pdf2ps theo sau bởi ps2pdf sẽ mang lại một tệp PDF nhiều lớp với nội dung dưới các chú thích có ở dạng ban đầu . Bạn có thể xác minh lỗ hổng này trong Xem trước bằng cách sử dụng Chọn tất cả, sau đó Sao chép, sau đó Dán vào cửa sổ TextEdit (ở chế độ văn bản có định dạng). Bạn sẽ thấy văn bản hoặc đồ họa dưới chú thích phân phối chẳng hạn. Điều này rõ ràng là rất tệ nếu bạn hợp pháp cần nội dung đó đi từ đầu ra.

Giải pháp làm việc

ImageMagick có thể tạo ra một bản PDF phẳng một lớp, nhiều trang, chất lượng có thể định cấu hình với các trình quét của mỗi trang bằng lệnh sau:

convert -density 150 document_original.pdf document_flat.pdf

Lệnh này rasterizing document_origen.pdf, tạo hình ảnh dựa trên pixel của mỗi trang, ở 150 DPI và xuất kết quả dưới dạng document_flat.pdf.

Lưu ý về chất lượng hình ảnh

Do quá trình rasterization , nó tạo ra một bản không thể mở rộng (thu phóng và bạn sẽ thấy văn bản hoặc hình ảnh vector gốc trở nên được tạo hình). Nó có thể sẽ có kích thước tệp lớn hơn trừ khi bản gốc có nội dung vectơ rất phức tạp như các biểu đồ phân tán triệu điểm.

Bằng cách thay đổi mật độ , bạn có thể giao dịch kích thước tệp lớn hơn để có độ phân giải cao hơn.

Tất cả văn bản sẽ được chuyển đổi thành pixel thô trong mỗi hình ảnh trang. Biểu đồ văn bản và vectơ chịu đựng nhiều nhất, vì vậy hãy thử nghiệm với DPI cho đến khi bạn nhận được các tệp đầu ra có thể sử dụng được.


1
Cảm ơn bạn đã đóng góp câu trả lời này. 5 năm trước, giải pháp tôi viết là làm việc cho tôi. Nhưng tôi sẽ thử câu trả lời của bạn vào lần tới khi tôi phải làm điều này (thực sự rất sớm).
Matthew Leingang

Điều đó có ý nghĩa. Tôi tưởng tượng hành vi của Ghostscript đã thay đổi liên quan đến việc làm phẳng các chú thích. Tôi đã thử thêm -PreserveAnnots = false và nó vẫn không hoạt động. Dưới mui xe chuyển đổi bằng Ghostscript để xử lý PDF. Tôi muốn một cái gì đó làm những gì Acrobat làm: nó giữ các chú thích, loại bỏ nội dung đằng sau chúng và lưu giữ các hình ảnh vector không che. Phần Document Cloud với Acrobat mới thực sự khiến tôi lo lắng khi sử dụng nó cho dữ liệu nhạy cảm.
Alain O'Dea

0

Applescript có lẽ là cách tốt nhất / nhanh nhất cho dòng lệnh. Khi nó hoạt động, bạn có thể lưu nó dưới dạng một ứng dụng và tạo bí danh trong shell lệnh của bạn để chạy nó. Sau đó, bạn chỉ cần gõ bí danh của bạn tại dòng lệnh.


Nhưng cách dễ nhất để làm phẳng một tệp PDF trong AppleScript là gì? Tôi không muốn kịch bản giao diện người dùng bắt chước in ấn vào tập tin. Điều đó có vẻ như bùn và chậm.
Matthew Leingang
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.