Як конвертувати PDF у зображення?


327

У мене є вимога перетворення сторінок PDF у зображення. Існує фонове зображення з написаним текстом, тому коли я зберігаю це як зображення, збережене лише фонове зображення.

Чи є якесь програмне забезпечення для того самого, щоб повну сторінку можна було перетворити на зображення?


По- видимому , це також можна з допомогою Inkscape: stackoverflow.com/a/15484727/32453
rogerdpack

Відповіді:


299
  1. Встановіть imagemagick .

  2. Використання терміналу, де знаходиться PDF:

    • Повний документ:

      convert -density 150 input.pdf -quality 90 output.png
      
    • Для однієї сторінки:

      convert -density 150 input.pdf[666] -quality 90 output.png
      

Завдяки чому:

  • PNG, JPG або (практично) будь-який інший формат зображення можна вибрати.

  • -density xxxвстановить значення DPI xxx(загальні 150 і 300).

  • -quality xxxвстановить стиснення xxxдля форматів файлів PNG, JPG та MIFF (100 означає відсутність стиснення).

  • [666]перетворить лише 667-ту сторінку в PNG (нульова нумерація, так [0]це 1-я сторінка).

  • Усі інші варіанти (такі як обрізка, відтінки сірого тощо) можна переглянути на веб-сайті Image Magic .


2
Відповідь так і працює, але дозвіл дуже поганий. Тому наразі не є корисною відповіддю. Можливо, якщо в перетворення є деякі параметри, які можна вказати, це може змінитися.
Ілля Лінн

48
Ця відповідь набагато вищої якості askubuntu.com/a/50180/11929
Ілля Лінн

6
Ви можете змінити щільність, додавши -density 300параметр
OHLÁLÁ

4
Тож чи може хтось підтвердити, що задана щільність робить її «такою ж хорошою», як інші відповіді тут, чи ні? Також як примітка для послідовників, ImageMagick закликає "ghostscript" фактично перетворити з pdf в png ex: gs -q NOPROMPT ...-sDEVICE=pngalpha -r150x150 -sOutputFile=/var/tmp/Yf%d -f/var/tmp/L -f/var/tmp/Fic1а якщо ви отримаєте convert: no images defined output.pngце означає, що у вас не встановлено ghostscript ...
rogerdpack

4
Розбір PDF в Imagemagick був відключений - bugs.archlinux.org/task/59778 - його можна вмикати вручну, редагуючи /etc/ImageMagick-7/policy.xmlфайл і видаляючи PDFз<policy domain="coder" rights="none" pattern="{PS,PS2,PS3,EPS,PDF,XPS}" />
Jezor

393

Ви можете використовувати pdftoppmдля перетворення PDF-файлу в PNG:

pdftoppm input.pdf outputname -png

Це виведе кожну сторінку у форматі PDF у форматі outputname-01.png, з 01індексом сторінки.

Перетворення однієї сторінки PDF

pdftoppm input.pdf outputname -png -f {page} -singlefile

Перейдіть {page}на номер сторінки. Він індексується в 1, так -f 1би була перша сторінка.

Вказання роздільної здатності перетвореного зображення

Роздільна здатність для цієї команди - 150 DPI. Збільшення його призведе до збільшення розміру файлу та більш детальної інформації.

Щоб збільшити роздільну здатність перетвореного PDF, додайте параметри -rx {resolution}та -ry {resolution}. Наприклад:

pdftoppm input.pdf outputname -png -rx 300 -ry 300

24
Дуже дякую. Набагато краща якість, ніж з imagemagick або graphicsmagick!
dAnjou

7
pdftoppm набагато швидше, ніж конвертувати
zuo

4
Це дійсно набагато краще, ніж imagemagick. Imagemagick насправді несподівано змінив кольори в моєму випадку!
NoBackingDown

13
це добре !, але писати трохи простіше, -r 300а не вказувати роздільну здатність x і y незалежно, коли ви хочете встановити їх на одне значення.
mlc

2
Я мав набагато більше успіху з pdftoppm, ніж з imagemagick.
Майкл Хейс

22

IIRC GIMP здатний використовувати PDF-файли, тобто перетворювати їх у зображення. Тож якщо ви хочете відредагувати зображення відразу - GIMP - ваш друг.


GIMP дійсно може відкривати PDF-файли, кожна сторінка як один шар. Вибір "Експортувати як", схоже, зберігає лише поточний шар, але ви можете легко видалити шар після експорту та запустити "Експорт як" знову.
Дан Даскалеску

12

В даний час прийнята відповідь виконує роботу, але призводить до отримання результатів, які мають більший розмір і страждають від втрати якості.

Метод у відповіді, наведеній тут, призводить до отримання результату, який порівняно за розміром із вхідним та не зазнає втрати якості.

TLDR - Використовуйте pdfimages:pdfimages -j input.pdf output

Цитуючи відповідь:

Не ясно, що ви маєте на увазі під "втратою якості". Це може означати багато різних речей. Чи можете ви розмістити деякі зразки для ілюстрації? Можливо, виріжте той же розділ з неякісних та хорошої якості (як PNG, щоб уникнути подальших втрат якості).

Можливо, вам потрібно скористатися, -densityщоб здійснити конверсію у більш високій точці на дюйм:

convert -density 300 file.pdf page_%04d.jpg

(Ви можете додати -units PixelsPerInchабо -units PixelsPerCentimeterза потреби. Моя копія за замовчуванням на ppi.)

Оновлення: Як ви вказали, gscan2pdf(спосіб, яким ви користуєтесь) - це лише обгортка для pdfimages(від poppler ). pdfimages не робить те саме, що convertробиться, коли вводиться PDF в якості введення.

convert бере PDF, виводить його з деякою роздільною здатністю і використовує отриману растрову карту як вихідне зображення.

pdfimagesрозглядає PDF для вбудованих растрових зображень та експортує кожне у файл. Він просто ігнорує будь-які команди тексту або векторного малюнка в PDF.

Як наслідок, якщо у вас є PDF, який є лише обгорткою навколо ряду растрових зображень, pdfimagesце зробить набагато кращу роботу з їх вилучення, тому що ви отримуєте вихідні дані в оригінальному розмірі. Напевно, ви також хочете скористатись -jопцією pdfimages, оскільки PDF може містити необроблені дані JPEG. За замовчуванням pdfimagesперетворює все у формат PNM, а перетворення JPEG> PPM> JPEG - процес втрат.

Отже, спробуйте

pdfimages -j file.pdf page

Можливо, вам не потрібно буде дотримуватися цього кроку convertдо .jpgкроку (залежно від того, який формат растрової карти використовував PDF).

Я спробував цю команду в PDF-файлі, який я створив із послідовності зображень JPEG. Витягнуті JPEG були байт-байтом, ідентичним вихідним зображенням. Ви не можете отримати більш високої якості від цього.


8

Якщо ваші файли pdfs відскановані, зображення вже зберігаються як частина pdf. вам просто потрібно буде витягнути їх за допомогою pdfimages:

pdfimages my-file.pdf prefix 

2
Це ідеальне рішення для відсканованих файлів pdfs, так як за допомогою цього ви можете за допомогою однієї команди витягнути оригінальні jpgs та без додаткових репресій.
Хосе Гомес

3

Щоб отримати одну сторінку з конвертування gm, додайте [N] (з N номер сторінки, починаючи з 0) до імені PDF, тобто gm convert foo.pdf[11] out.pngдля отримання 12-ї сторінки з PDF.

Для pdftoppmвикористання -f N -singlefile, де N - номер сторінки, що починається з 1, тобто pdftoppm -f 12 -singlefile foo.pdf outдля того ж результату. Здається, завжди додайте ".png" до імені вихідного файлу, і немає жодного способу зупинити це.


2

Ви можете використовувати конвертувати та вказати більш високу щільність за допомогою -densityпараметра.

напр. convert -d 300 foo.pdf bar.png


ви можете пояснити більше про те, що таке щільність і що вона може зробити?
rɑːdʒɑ

1
@AgentCool Вказує горизонтальну та вертикальну щільність зображення (в ppi).
Арджун

2

Якщо ви хочете лише перетворити певну сторінку PDF у PNG, ви можете pdftkпередати convert( описане вище ) так:

pdftk document.pdf cat 12 output - | convert - document-page-12.png

1

Цей головний редактор PDF (версія 2.2) має цю опцію ввімкнути. Відкрийте файл PDF та перейдіть у меню Файл> Експорт у зображення. У ньому представлено діалогове вікно, де можна визначити різні параметри виводу. Надзвичайно корисний. Сподіваюся, ця інформація допомагає.


Це в безкоштовній чи платній версії? У моїй версії варіант замурований? Це означає, що мені потрібно заплатити? Чи є платна версія?
Джошуа Робісон

0

PDF Mod також дозволяє експортувати зображення всіх або окремих сторінок PDF-файлів.

  • Відкрити файл PDF у форматі PDF Mod
  • Виберіть сторінку (и) -
  • Редагувати> Експортувати зображення
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.