[Comm] Работа с файлами > 2 гб [was: длина имени файла в локали utf8 (ext3)]
Владимир Гусев
=?iso-8859-1?q?vova1971_=CE=C1_narod=2Eru?=
Пн Мар 19 00:40:29 MSK 2007
>>> Сейчас занимаюсь переконвертацией из pdf в djvu с промежуточным
>>> конвертированием в ps. Файлы ps получаются здоровенные, так если размер
>>> такого файла превышает 2.1 гб, высвечивается след. сообщение:
>>>
>>> [vova на vova pdf]$ pdf2ps Astronomiya_s_binoklem_1903.pdf
>>> Astronomiya_s_binoklem_1903.ps
>>> Превышен лимит размера файла
>>> [..]
>>> Немного оффтоп, но касается ограничений ext3.. И как это обходить?
>>
>> Это ограничение не ext3, а pdf2ps (точнее, gs, который фактически
>> выполняет всю работу). 32-разрядные программы не могут работать с
>> файлами больше 2 ГБ без принятия специальных мер (например, один из
>> вариантов - собирать с опцией -D_FILE_OFFSET_BITS=64, но при этом
>> программа должна быть написана с учётом того, что позиция в файле
>> может быть 64-разрядным числом, не помещающимся в переменную типа int
>> или long - т.е., нельзя просто добавить эту опцию без проверки кода на
>> правильное использование нужных типов).
>>
>> Можно попробовать такой вариант:
>>
>> pdf2ps file.pdf - >file.ps
>>
>> В этом случае файл будет открывать shell, что позволит обойти
>> проблему (флаг O_LARGEFILE устанавливается в момент открытия). Если
>> по каким-то причинам такой вариант тоже не сработает, можно добавить
>> промежуточный pipe:
>>
>> pdf2ps file.pdf - | cat >file.ps
>
> Огромное спасибо за разъяснения и помощь, помогло. Хорошо бы это в FAQ
> добавить.
>
Правда, когда идет процесс обратный (из ps в djvu) получается такое:
vova на vova pdf]$ djvudigital -q --epsf=fit --psrotate=90 --fg-colors=512
--dpi=300 --threshold=70 --exact-color 1924.ps 1924.djvu
Error: /undefinedfilename in (1924.ps)
Operand stack:
Execution stack:
%interp_exit .runexec2 --nostringval-- --nostringval--
--nostringval-- 2 %stopped_push --nostringval-- --nostringval--
--nostringval-- false 1 %stopped_push
Dictionary stack:
--dict:1124/1686(ro)(G)-- --dict:0/20(G)-- --dict:70/200(L)--
Current allocation mode is local
Last OS error: 2
GPL Ghostscript 8.15: Unrecoverable error, exit code 1
Это по той же причине (обработка здоровых файлов) или проблемы с самим
файлом? Прямая конвертация из pdf в djvu возможна и получается, но нужно
изменить ориентацию страницы (rotate) и приходится делать проежуточный
этап с ps..
--
С уважением, Владимир Гусев
Подробная информация о списке рассылки community