1

У меня есть PDF-файл 18000x18000px, который я генерирую с помощью matplotlib. Перед печатью я хотел бы просмотреть его, по крайней мере, с 20% увеличением. К сожалению, ничего, что я пробовал до сих пор не работает:

  • evince откроет его только при максимальном уровне масштабирования 1,3%. Это после того, как я увеличил размер кэша (с помощью редактора dconf) до ~ 500 МБ - дальнейшее увеличение (я пробовал до 8 ГБ) не улучшает максимальный масштаб. Я считаю, что есть еще одно узкое место, о котором я не знаю.
  • Сбой mupdf с malloc of array (153904 x 615616 bytes) failed (integer overflow)
  • Inkscape просто занимает всю мою оперативную память (16 ГБ) и затем зависает.

В качестве альтернативы я попытался экспортировать его как SVG и открыть его с помощью Inkscape, но это также заполняет мою оперативную память и затем зависает (но делает это медленнее).

Кроме того, я попытался разделить файл на дополнительные листы с первой итерацией:

pdfcrop --verbose --margins "10 10 10000 10000" --clip g.pdf out1.pdf

Это заняло несколько часов, и, похоже, не добилось большого прогресса, с другой стороны, это не поглощает всю мою оперативную память.

Matplotlib также имеет возможность экспортировать PS - но, учитывая больший размер PS, я подозреваю, что все пойдет еще хуже.

Можете ли вы помочь мне найти способ предварительного просмотра моего файла под Linux?

Если вы хотите проверить файл, вы можете найти его здесь.

1 ответ1

0

Как указано в комментариях, лучшим решением на данный момент было обрезать PDF-файл в PNG-листы. Базовая команда для этого с использованием скрипта-призрака:

gs -o out.png -sDEVICE=pngalpha -g2000x2000 -dLastPage=1 -c "<</Install {-1000 -10000 translate}>> setpagedevice" -f in.pdf

Я пошел дальше и написал скрипт, который может принимать имя и разрешение PDF, а также размер плитки в качестве входных данных и выводить пронумерованные плитки. Это довольно простой и предполагает, что изображение и плитки квадратные. Вы можете найти его на GitHub.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .