[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