Як я можу повністю вирівняти PDF в Mac OS в командному рядку?


16

Я використовую Mac OS X Snow Leopard. У мене є PDF з полями форм, анотаціями та штампами на ньому. Я хотів би заморозити (або «згладити») цей PDF так, щоб поля форми не могли бути змінені, а анотації / штампи більше не можна редагувати. Оскільки у мене фактично багато таких PDF-файлів, я хочу зробити це автоматично в командному рядку.

Деякі речі, які я спробував / розглядав, з їх ступенем успіху:

  • Відкрийте у «Попередній перегляд» та «Друк у файл». Це створює абсолютно рівний PDF без зміни розміру файлу. Здається, єдиний спосіб автоматизації - написати незрозумілий інтерфейс AppleScript на основі інтерфейсу , якого я намагався уникати.
  • Відкрийте в Acrobat Pro і використовуйте функцію JavaScript для вирівнювання . Знову ж таки, не знаєте, як автоматизувати це в командному рядку.
  • Використовувати pdftkз flattenопцією. Але це лише згладжує поля форми, а не штампи та інші примітки.
  • Використовуйте, cupsfilterякий може створювати PDF з багатьох форматів файлів. Начебто pdftkце вирівняно лише поля форми.
  • Використовуйте cups-pdfдля підключення до сервера друку Mac і збережіть файл PDF замість друку. Я використовував версію macports . Отриманий файл плоский, але величезний. Я спробував це у файлі 8MB; згладжений PDF - 358 Мб! Можливо, це може бути поєднано з викликом ghostscript, як у Ubuntu Порада: Як зменшити розмір файлу PDF з командного рядка .

Будь-які інші пропозиції будуть вдячні.


1
Automator.app має деякі вбудовані параметри обробки PDF. Можливо, одна з них може допомогти безпосередньо або поєднатися з одним із дій, описаних вище.
Кассім Дорсель

Чи можете ви надати зразок документа PDF, який містить ці елементи?
Даніель Бек

Я думаю так. Зараз усі мої зразки є студентськими вікторинами, тож я маю щось знущатися.
Меттью Лейнганг

Відповіді:


11

Спробуйте використовувати pdf2psі ps2pdfпослідовно. Це трохи громіздко, але це допомогло мені зменшити мій документ на 30 Мб до 17 Мб. Не стільки, як хотілося б, але все-таки краще. Цю ідею я отримав від знайомого, який використовував цей метод, щоб позбутися прав доступу до пароля у форматі PDF.

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

Сподіваюся, що це допомагає!


3
GhostScript FTW! Я отримав його вниз до однострочнікі за допомогою труби: pdf2ps file.pdf - | ps2pdf - file_flat.pdf. Файл перейшов від 300K до 500K, що є великим збільшенням у відсотках, але нічого подібного до збільшення на 4400% cups-pdfметоду.
Меттью Лейнганг

Насправді мені пощастило більше pdf2ps -q -sOutputFile=- file.pdf | ps2pdf - file_flat.pdf.
Меттью Лейнганг

4
Відзначаючи , що на Mac можна встановити Ghostscript , щоб перераховані вище команди доступні через доморощеного з brew install ghostscript.
Нік

5

Отже, це те, що я використовую останнім часом. Я думаю, що функціонально це робить те саме, що і pdf2ps file.pdf - | ps2pdf - file_flat.pdfдля мене, але мені здавалося, що це працює краще.

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

Для мене не вдалося вирішити ps2pdf. Це спрацьовувало, очевидно, перевстановлюючи шрифти в PDF.
phaphink

Жодна з цих команд не сплющується. Ви можете скопіювати основні шари за допомогою Попереднього перегляду, і вихідний вміст буде присутній.
Ален

1

Це може бути додатково необов'язковим, але ви розглядали прив'язування чашок-pdf за допомогою pdftk або cupsfilter? Як ви вже згадували, cups-pdf створить плоский pdf-файл, а потім передасть його через pdftk або cupsfilter, щоб зменшити його до прийнятного розміру?

Крім того, погляньте на /System/Library/Printers/Libraries/convert Ви повинні вміти робити щось подібне

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

У мого Mac немає /System/Library/Printers/Libraries/convert. Я спробував cupsfilter. При перетворенні з PDF у PDF файл змін не вносився. При перетворенні з PDF у PS, а потім у PDF, анотації були втрачені.
Меттью Лейнганг

1

УВАГА: gs та pdf2ps | ps2pdf НЕ згладжуйте PDF-файли!

Використання gs або pdf2ps з подальшим ps2pdf дасть багатошаровий PDF із вмістом під анотаціями, представленими в оригінальному вигляді . Ви можете перевірити цей недолік у «Попередньому перегляді», скориставшись «Вибрати все», «Копіювати», а потім «Вставити» у вікно TextEdit (у режимі розширеного тексту). Текст або графіку ви побачите, наприклад, у примітках про редакцію. Це, очевидно, дуже погано, якщо вам юридично потрібно, щоб цей вміст не було виведено з результатів.

Робоче рішення

ImageMagick може створювати PDF з одношаровим сплющеним якістю з можливістю налаштування якості та растрами кожної сторінки за допомогою наступної команди:

convert -density 150 document_original.pdf document_flat.pdf

Ця команда розпізнає document_original.pdf, створюючи зображення на основі пікселів кожної сторінки, розміром 150 DPI, і виводить результат у вигляді документа_flat.pdf.

Примітка про якість зображення

Завдяки растерізації він створює не масштабований (масштабування, і ви побачите, що текст або оригінальні векторні зображення стають піксельними). Він, швидше за все, має більший розмір файлів, якщо в оригіналі не буде дуже складний векторний вміст, як графіки розсіювання мільйонних точок.

Змінюючи щільність , ви можете торгувати більшим розміром файлу для отримання вищої роздільної здатності.

Весь текст буде перетворений на необроблені пікселі на кожному зображенні сторінки. Текстові та векторні діаграми страждають найбільше, тому експериментуйте з DPI, поки не отримаєте корисні вихідні файли.


1
Дякуємо, що надали цю відповідь. 5 років тому рішення, яке я написав, працювало на мене. Але я спробую вашу відповідь наступного разу, коли мені доведеться це зробити (насправді дуже скоро).
Метью Лейнганг

Що має сенс. Я думаю, що поведінка Ghostscript змінилася відносно вирівнювання анотацій. Я спробував додати -PreserveAnnots = false, і все одно не вийшло. Під капотом конвертуйте, використовуючи Ghostscript для обробки PDF. Мені б хотілося щось, що робить те, що робить Acrobat: він зберігає анотації, видаляє вміст за ними та зберігає непокриті векторні зображення. Хмара документа Document із новим Acrobat насправді нервує, використовуючи його для конфіденційних даних.
Ален

0

Apple, мабуть, найкращий / швидкий спосіб до командного рядка. Після роботи ви можете зберегти його як додаток і зробити псевдонім у своїй командній оболонці, щоб запустити його. Після цього ви просто введіть псевдонім у командному рядку.


Але який найпростіший спосіб вирівняти PDF в AppleScript? Я краще не сценарій інтерфейсу користувача, щоб імітувати друк у файл. Це здається неясним і повільним.
Метью Лейнганг
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.