Вопрос или проблема
Я пытаюсь преобразовать график из pdf в png-изображение, используя pdftoppm
.
Все работает нормально, за исключением того, что к левой стороне было добавлено дополнительное пустое пространство (как на прикрепленном изображении).
Как мне этого избежать? Большое спасибо.
Обновление: чтобы избежать путаницы, я добавляю оригинальный pdf-файл. Это не pdf-файл, содержащий изображение, а состоит из различных типов объектов, включая текст и геометрические объекты. Так что вы можете выбрать и скопировать текст, когда читаете pdf-файл.
Ссылка на оригинальный график (pdf): https://cds.cern.ch/record/1703270/files/Figure_006.pdf
Я только что просмотрел man-страницу pdftoppm
. pdftoppm
предоставляет опцию -cropbox
-cropbox : использовать обрезную рамку вместо медийной рамки
Поскольку моя проблема связана с обрезкой изображения, я попробовал эту опцию, и это сработало.
$ pdftoppm -png -cropbox my-pdf-file.pdf > my-convert-image.png
Ответ или решение
Чтобы избежать добавления лишнего пространства при конвертации PDF-файла в PNG с помощью pdftoppm
, важно понимать, как этот инструмент работает с различными областями вывода файла. По умолчанию, pdftoppm
использует медиабокс (media box), который является самой большой областью, включающей в себя все содержание страницы. Иногда это приводит к появлению нежелательных пробелов, например, щели слева от изображения.
Теория:
Инструмент pdftoppm
из пакета Poppler работает с PDF-файлами и позволяет конвертировать их в растровые изображения различных форматов, включая PNG. Существует несколько "областей" в PDF-файле: медиабокс, кропбокс (crop box), блитбокс (bleed box) и другие. Медиабокс—самая большая из них, которая зачастую используется по умолчанию, но она может включать также и часть белого пространства вокруг содержания. В таких случаях, чтобы избежать лишних пробелов, рекомендуется использовать кропбокс, который обычно задает границы отображаемого содержания.
Пример:
В вашем случае, как вы уже обнаружили, использование опции -cropbox
устранило проблему. Это произошло потому, что кропбокс может не включать эти лишние участки по бокам, фокусируясь на ключевом содержимом страницы.
Применение:
Чтобы предотвратить добавление лишних пробелов при конвертации PDF-файла, рекомендуется использовать следующую команду:
pdftoppm -png -cropbox my-pdf-file.pdf > my-convert-image.png
Эта команда указывает pdftoppm
использовать кропбокс в качестве основы для кадрирования изображения, что помогает точно определить границы, которые нужно конвертировать, избегая нежелательных пустых пространств.
Таким образом, использование опции -cropbox
не только помогает добиться более тщательно обрезанной картинки, но и значительно улучшает визуальное восприятие изображений, полученных из PDF-документов, снижая необходимость в дополнительной постобработке.