Xpoint
   [напомнить пароль]

GhostScript и размер страницы PDF

Метки: [без меток]
2008-09-01 19:36:12 [обр] Андрей Гора(0/29)[досье]

Преобразовываю GhostScript-ом PDF в JPG и не нашел, как конвертировать в масштабе 1:1

gs позволяет указывать и размер документа и разрешение, но что эту информацию нужно откуда-то брать, а по умолчанию он генерирует меньшее изображение.

В сорсах PDF я пока ничего относящееся к масштабу не обнаружил, но Reader откуда-то это знает.

Есть ли решение как бы приобщиться к этому знанию?

спустя 16 часов [обр] Thirteensmay(3/157)[досье]
сообщение промодерировано
Решение то есть, почитайте стандарт PDF, там все описано, тока запаритесь. В кратце могу сказать так: PDF это точный формат, в нем все элементы и страница в т.ч. имеют строго определенные размеры в абсолютных единицах, в основном в точках равных 1/72 дюйма.
PDFу как таковому масштаб не нужен, он нужен приложениям которые его отображают, и там он задается пользователем, а приложение уже соответствующим образом масштабирует. JPG как известно вообще матрица неких относительных точек, не имеющих размера, однако размер все же как-то надо соблюдать, для этого можно либо пропорционально увеличивать количество точек в матрице, либо размеры точки.
Размеры точки на конечных устройствах отображения у нас как правило определены жестко, поэтому при отображении можно рулить только их количеством, однако надо знать с каким коэффициентом надо трансформировать, для того чтобы это знать вводят понятия размер документа (в абсолютных единицах), или разрешающую способность на единицу поверхности (в dpi), но не разрешение которое говорит о количестве точек в матрице.
Таким образом, Вам чтобы выполнить преобразование 1:1 надо указывать такой же (как это не странно ;)) размер документа, каким он был в оригинале. Допустим, в оригинале размер PDF - 1000 x 1000 пэдээфных точек = 1000/72 = 14 дюймов = 35 см. Вот этот размер и указывайте в том инструменте который преобразует PDF в растр. Естественно, при этом надо будет указать разрешающую способность того устройства, на котором растр будет отображаться, инструмент должен ее запрашивать, если нет то надо считать вручную.
Разрешающая способность нужна для того, чтобы инструмент узнал какого разрешения должна быть матрица, сколько в ней должно быть точек. Преобразовать 1:1 PDF в растр без учета конечного устройства отображения невозможно в принципе с логической точки зрения, почему см. выше.
Указание конечного устройства отображения равносильно определению разрешающей способности.
Если инструмент преобразования не учитывает разрешающую способность, а только тупо может растеризовать PDF в матрицу с указываемым количеством точек W x H, то надо считать так: Допустим исходный размер PDF - 10 x 10 дюймов, мы его хотим 1:1 преобразовать к принтеру или монитору кушающему растры. Наш принтер имеет разрешающую способность 600 dpi, значит на дюйм у него приходится 600 точек, значит исходный PDF должен быть преобразован в матрицу 10 * 600 точек, т.е. 6000 x 6000 точек в джэпеге, и тогда этот джэпег на принтере с разрешающей способностью 600 dpi будет иметь размер тоже 10 x 10 дюймов.
спустя 5 минут [обр] Thirteensmay(3/157)[досье]
Э... ну оригинальный размер PDF то я так понимаю вы узнать можете, если делаете вручную то в том же ридере, в свойствах страницы, если программно, то соответствующие библиотеки имеют процедуры/методы возвращающие это значение.
спустя 3 часа 2 минуты [обр] Иванов Михаил aka Ivanych(0/70)[досье]

Модератору:

Если Вас не затруднит, поправьте, пожалуйста, форматирование в ответе Thirteensmay[досье]. Ответ, мне кажется, очень толковый, а вот с форматированием просто беда...

спустя 1 день 2 часа [обр] Алексей Рюмин aka Dwarf(13/864)[досье]
М Иванов Михаил aka Ivanych[досье] Спасибо, немного отформатировал. Действительно толковый ответ.
спустя 4 часа 6 минут [обр] Андрей Гора(0/29)[досье]

"Нет ничего практичнее хорошей теории" :)

Практическое же решение вопроса, кому интересно, выглядит так.

Для Никсов есть такой PDF-просмотрщик Xpdf, в составе которого нашлась утилита pdfinfo, на выходе которой, в частности, есть строка типа Page size: 374 x 564 pts. Я так понимаю, что это point-ы при стандартном разрешении PostScript-а 72 на дюйм.

Зная разрешение конечного устройства (в мониторе у меня стоит 96 точек на дюйм) определяется отображаемая ширина в пикселах, для этого примера - 498.

Но полностью автоматизировать эту часть процесса, к сожалению, не получилось. Эксперимент показал (C), что для каждого PDF документа есть свой оптимальный масштаб отображения. Ситуация усугубляется сканированным (http://io.ua/5213394p), а не векторным содержанием (http://io.ua/4634105p).

По-видимому, для наилучшего отображения придется предварительно просматривать документ в ридере, определять поправку к масштабу и сопровождать ей закачку.

спустя 3 часа 24 минуты [обр] hogart(0/5)[досье]
Когда я был препрессным дизайнером, то для отображения на экране джипега экспортировал с разрешением 72 dpi. По идее, так оно и должно быть%)
Powered by POEM™ Engine Copyright © 2002-2005