Пакетне розмір і стиснення PDF-файлів


15

Мені потрібен спосіб зменшити розмір і стиснути партії файлів PDF. Я вважаю за краще це робити в Windows, але Linux був би чудово, якби це означало більш плавний робочий процес.

Я знаю, що існують такі програми, як NitroPDF та Acrobat, які дозволяють вам це досягти, але я боюся, що це потрібно робити на основі файлів за файлом. Ці програми також недешеві, і я вважаю за краще не купувати їх просто, щоб я міг використовувати одну або дві функції.

Довідкова інформація: Я використовую CamScanner для оцифрування квитанцій та рахунків-фактур для входу в облікові записи (FreeAgent). Всі файли формату CamScanner у форматі A4, а багатосторінкові часто перевищують обмеження вкладеного розміру 2 Мб.

Відповіді:


15

Я пропоную тут інструмент командного рядка, який легко може бути зібраний циклами у вбудованих мовах скриптування в Windows, Linux, OS X тощо.


ImageMagick підтримує PDF-файли та має resizeможливість його інструменту перетворення . Я ніколи не використовував це особисто, але ви можете спробувати пограти з цим.

Ви можете також використовувати compressопцію (є приклад тут ):

Оберніть PDF

$ convert -rotate 270 -density 300x300 -compress lzw in.pdf out.pdf

Це передбачає PDF-файл, підтримуваний TIFF. Параметр щільності важливий, оскільки в іншому випадку ImageMagick знижує вибірки зображення (чомусь). Додавання параметра стиснення допомагає зменшити загальний розмір PDF-файлу меншим, не втрачаючи якості.

Для багатосторінкових PDF-файлів ви можете скористатися pdftk, а потім використати mogrifyз ImageMagick для перетворення кожної сторінки на місце:

$ pdftk in.pdf burst
$ mogrify -rotate 270 -density 300x300 -compress lzw pg_*.pdf
$ pdftk pg*.pdf cat output out.pdf
$ rm pg*.pdf


Для перетворення файлів PDF за допомогою ImageMagick вам потрібно встановити GhostScript .


ImageMagick може конвертувати PDF на багато сторінок. Хоча mogrifyбуде конвертувати на місці, я рекомендую використовувати, convertщоб ви могли зберегти оригінали у випадку аварії.


Я провів тестування вашого наданого зразка PDF. Це спрацювало для мене досить добре:

convert -density 200 -compress jpeg -quality 20 test.pdf test2.pdf

Значення за замовчуванням до 72DPI. Встановивши його вище, ми можемо отримати більш високу роздільну здатність і, отже, прийнятну якість. Це виглядало гаразд 150і було трохи менше, але якщо ви хочете задовольнити цілий ряд PDF-файлів, 200слід працювати.

Стиснення JPEG повинні або автоматично вибрати рівень або значення по замовчуванням для 92на шкалі , 1щоб 100з 100бути кращими. Встановивши це 20, він виглядає майже так само добре, як оригінал (трохи нечітко і невеликий текст внизу трохи важко читати, але спочатку це все одно було).

Ці параметри знижують ваш зразок 1,7 Мб до 0,5 МБ , зберігаючи його для читання. Можна трохи експериментувати.

Якщо ви хочете меншого розміру (і файлу, і зображення / PDF), ви можете використовувати -resize #%, наприклад -resize 75%. У вашому прикладі PDF, однак це робить дрібний шрифт внизу значно нечитабельним.

Якщо вам все ще не вистачає місця, особливо для багатосторінкових PDF-файлів, ви можете додатково стиснути, додавши файли в ZIP (або інший) архів. Це зменшило розмір файлу до 0,43 Мб у цьому тестовому PDF (зниження якості стиснення JPEG має набагато більш різкий ефект). Ви також можете розділити файл PDF на сторінки за допомогою pdftk, як запропонував @glallen у своїй редагуванні, або розділити архів та рекомбінувати на іншому кінці.

2 Мб - це також досить невеликий ліміт вкладень, можливо, ви захочете заглянути в інших постачальників електронної пошти. З пам’яті GMail надає понад 10 Мб на електронну пошту.

Ці параметри та багато іншого повністю задокументовані на їхньому веб-сайті .


Це здається відмінним підходом, але я не думаю, що мій pdfs підтримується TIFF. CamScanner спочатку робить фотографії JPEG, а потім конвертує їх у PDF для експорту. Обробка цих PDF-файлів, здається, зменшує їх, як показує повідомлення в блозі, незалежно від стиснення. Перетворення з PDF в TIFF, а потім повернення в PDF, схоже, зберігає якість, але надуває розмір файлу та змінює розмір та щільність сторінки.
Стен

@paganompu Як я розумію, ви хочете зменшити розмір файлу. Як щодо стиснення як JPEG? Як resizeвийшло? Чи є у вас (нечутливий) зразок-файл, з яким ми могли б грати? Чи прийнятний вибірковий аналіз?
Боб

JPEG було б добре, але мені потрібно завантажувати багатосторінкові документи, і я можу мати лише одне вкладення на запис облікового запису. Зниження кемпінгу є серйозним: цей тестовий документ не читається після перетворення з стисненням без втрат.
Стен

@paganompu Я трохи експериментував, і я оновив відповідь робочою командою. Дивіться тут тест на ваш файл.
Боб

Ця команда працює як шарм. Здається, що моє «пониження» було пов’язане з пропусканням density... Клянусь, я можу читати та виконувати вказівки! Трохи соромлячись: S Дякую, що знайшли час, щоб допомогти мені Боб
Стен

19

Тож convertіз ImageMagick буде випускатися растрований PDF, і багатьом людям було б цікаво, щоб векторна графіка та текст залишилися недоторканими, тому стискаються лише вбудовані зображення. Настільки гарною альтернативою компресії є використання на прикладі використання gsпакету ghostscript:

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile=out.pdf in.pdf

у наведеному вище параметрі команди: -dPDFSETTINGS=/ebookважливо. Він може мати 3 значення:

-dPDFSETTINGS=/screen   (screen-view-only quality, 72 dpi images)
-dPDFSETTINGS=/ebook    (low quality, 150 dpi images)
-dPDFSETTINGS=/printer  (high quality, 300 dpi images)
-dPDFSETTINGS=/prepress (high quality, color preserving, 300 dpi imgs)
-dPDFSETTINGS=/default  (almost identical to /screen)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.