Просмотр очень больших файлов PDF в Linux

407
TheChymera

У меня есть 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
Какое разрешение изображения вы производите? Попробуйте увеличить его до 300 ppi. После этого Acrobat Reader сможет отобразить его. Max Wyss 7 лет назад 0
18000x18000px (~ 300dpi) - также, я ищу решение для Linux. и Adobe уже давно прекращена для Linux. TheChymera 7 лет назад 0
Какое разрешение изображения? Размер 18000 х 18000 пикселей; это его абсолютный размер. Весьма вероятно, что приложение, создающее изображение, установило разрешение в 72 ppi, которое затем превращает изображение в размер, который не может отображать средство просмотра PDF. Итак, проверьте параметры вывода создаваемого программного обеспечения и увеличьте разрешение изображения до 300 ppi (возможно, даже до 600). Кроме того, я полностью осведомлен о требованиях Linux. Для отображения и печати Adobe Reader 9 (это последняя версия Adobe для Linux) работает. Max Wyss 7 лет назад 0
Вы пытались обрезать раздел в PNG или другой формат изображения с Ghostscript? Смотри, например, [здесь] (http://stackoverflow.com/questions/12484353/how-to-crop-a-section-of-a-pdf-file-to-png-using-ghostscript). `-dDownScaleFactor` и` -r` также могут быть полезны для сокращения использования памяти. dirkt 7 лет назад 0

1 ответ на вопрос

0
TheChymera

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

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

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

Похожие вопросы