Как обрезать поля PDF с помощью pdftk и / MediaBox
Я pdftk
чтобы распаковать PDF, а затем открыть его в виде текстового файла.
Я хочу отредактировать /MediaBox поле, которое в моем случае
/MediaBox [0 0 612 792]
Я хотел бы уменьшить маржу, например
/MediaBox [100 0 512 792]
к сожалению, это не работает. Я могу изменить 0
на 2
или 9
но я не могу поставить 100
например.
есть идеи почему?
3 ответов
использовать sed заменить любой возникновения
sed 's/MediaBox \[0 0 612 792*/MediaBox \[100 0 512 792]/g'<in.pdf >out.pdf
или podofobox (внутри podofo утилиты)
без распакуйте PDF streams first (при необходимости с pdftk)
podofobox in.pdf out.pdf media 10000 0 51200 79200
Как вы можете видеть, podofobox использует Значения MediaBox умножаются на 100, так как его масштаб является кратным sub, поэтому вам нужно просто добавить два нуля (00) к значениям, которые вы можете прочитать в поле MediaBox
строка 100 имеет еще два числа, чем 0. Когда вы используете текстовый редактор и добавляете символы, это делает файл длиннее. Вот почему замена на 9 или 2 или любую другую одну цифру работает нормально. Хотя текстовый редактор теоретически может использоваться для редактирования pdf, это не просто, и вы должны уважать внутреннюю структуру файла. Таблица xref-это таблица в конце pdf-файла, которая точно сообщает читателю, где находится каждый объект. Он должен быть изменен всякий раз, когда длина или расположение чего-либо меняется.
причина ручного метода выше с помощью pdftk
не работает, что вы добавляете два байта в центр файла. Это нарушает xref
таблица. Если вы вручную обновите все xref
s, это будет работать, но это потенциально очень утомительно. Используя sed
или любой другой инструмент для редактирования текста не решит проблему. podofo
тут xref
расчет для вас.
есть лучшие способы изменить маржу PDF:
- http://code.google.com/p/sopdf/
- http://pybrary.net/pyPdf/
- http://code.activestate.com/recipes/576837-crop-pdf-file-with-pypdf/
- для ghostscript см. эту страницу обрезка PDF с помощью Ghostscript 9.01
надеюсь, вы нашли ответ на это с момента публикации : -)