Використовувати конвертувати, щоб схопити певну сторінку з PDF-файлу?


21

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

Відповіді:


24

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

Pdftk може витягти одну або кілька сторінок з PDF-файлу.

pdftk A=input.pdf cat A42 A43 output pages_42_43.pdf

Якщо у вас встановлення LaTeX з PDFLaTeX, ви можете використовувати pdfсторінки . Існує оболонка для оболонок pdfсторінок , pdfjam .

pdfjam -o pages_42_43.pdf input.pdf 42,43

Ще одна можливість (overkill тут, але корисна для вимог, складніших за одну сторінку) - Python з бібліотекою PyPdf .

#!/usr/bin/env python
import copy, sys
from pyPdf import PdfFileWriter, PdfFileReader
input = PdfFileReader(sys.stdin)
output = PdfFileWriter()
for i in [42, 43]:
    output.addPage(input.getPage(i))
output.write(sys.stdout)

Я також збирався рекомендувати pdftk. Ви захочете ним скористатися.
Себастьян

pdfjamпрацює як шарм, і вже був встановлений за допомогою мого дистрибутива LaTeX. Він дуже простий у використанні.
hdl

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

25

Ви можете використовувати позначення підписки з convert(1)"індексом" у PDF:

$ convert source.pdf[1] dest.pdf 

Значення індексу залежить від того, як експортер PDF нумерував сторінки. У тестах на файлах тут цифри здаються нульовими, тому наведений вище приклад отримує другу сторінку в документі. Я бачив приклади в Інтернеті, де вони показують індекси букв, оскільки, мабуть, автор PDF "нумерував" сторінки в цьому документі саме таким чином.

На жаль, це не дає дуже хороших результатів, тому що ImageMagick передбачає, що все базується на пікселях, а тому растерізує векторні зображення, такі як типографія у типовому PDF.

Кращим інструментом для роботи є Ghostscript , який ви, мабуть, уже встановили:

$ gs -dNOPAUSE -dBATCH -dFirstPage=2 -dLastPage=2 -sDEVICE=pdfwrite \
    -sOutputFile=dest.pdf -f src.pdf

Це передає PDF-дані без змін, оскільки Ghostscript розуміє PDF (похідну PostScript) на набагато глибший рівень, ніж це ImageMagick.


2
насправді це не вірно про imagemagick, якщо встановити параметр -density на щось близько 300-400, то виведений текст з pdf у png буде виглядати просто чудово.
buggedcom

2
Це буде добре виглядати на екрані, звичайно, але якщо ви перейдете до друку, вам потрібно встановити щільність ще вище. І тоді ви, швидше за все, зіткнетеся з тим, як RIP вашого принтера справляється із сірими антиалізионними пікселями від ImageMagick. Тоді ви можете замість цього вибирати 1-розрядний показник B&W з початковою роздільною здатністю принтера, яка може бути 1200 dpi або 1440 dpi або щось інше, і ви повинні знати це заздалегідь, щоб отримати різкий вихід. Ні, я буду стояти за своє твердження: найкраще зберігати PDF-дані у векторній формі якомога довше.
Warren Young

@buggedcom Я знайшов -density 300це найприємніше місце. Що б то не було більше, і ви створюєте величезні тимчасові файли - які ви, мабуть, збираєтесь змінити розмір до мініатюр
Майк Каузер

2
Ви також можете вибрати діапазон сторінок (наприклад, зробити gif) на зразок такsource.pdf[3-6]
texasflood
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.