Назад | Перейти на главную страницу

Acroread конвертирует файл PDF в ошибку сегментации PostScript

У нашего клиента есть сервер Linux (Redhat), на котором работают веб-приложения Java. В последнее время существует требование отправлять файлы PDF на принтер для распечатки.

Мы используем команду cat /path/to/pdf_file | acroread -toPostScript | lp -dprintername. Но мы получаем ошибку lp: stdin is empty; so no job has been sent.

Печать обычного файла, такого как / etc / hosts, с помощью этой команды lp -dprintername /etc/hosts работает, и мы можем видеть распечатку на принтере. В lp команда не проблема.

Я приступил к тестированию других 2 команд cat /path/to/pdf_file | acroread -toPostScript и я увидел результат Segmentation fault.

Для дальнейшего устранения этой проблемы я использовал команду strace вот так cat /pdf_file | strace -f -o /tmp/acroread.$$.trace acroread -toPostScript. Я видел эти строки в файле трассировки до того, как произошла ошибка сегментации.

stat64("/home/oracle/.adobe", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
16673 stat64("/home/oracle/.adobe/Acrobat", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
16673 stat64("/home/oracle/.adobe/Acrobat/9.0", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
16673 stat64("/home/oracle/.adobe/Acrobat/9.0/Temp", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
16673 open("/home/oracle/.adobe/Acrobat/9.0/Temp/AdobeTempPS7XwXNz", O_RDWR|O_CREAT|O_EXCL, 0600) = 4
16673 close(4)                          = 0
16673 unlink("/home/oracle/.adobe/Acrobat/9.0/Temp/AdobeTempPS7XwXNz") = 0
16673 open("/home/oracle/.adobe/Acrobat/9.0/Temp/AdobeTempPS7XwXNz", O_RDWR|O_CREAT|O_TRUNC, 0666) = 4
16673 getcwd("/var/spool/mail"..., 1024) = 16
16673 open("/home/oracle/.adobe/Acrobat/9.0/Temp/AdobeTempPS7XwXNz", O_RDONLY) = 5
16673 --- SIGSEGV (Segmentation fault) @ 0 (0) ---
16673 +++ killed by SIGSEGV +++
16720 <... waitpid resumed> 0x3, WNOHANG|WCONTINUED|0x7410) = 0

Когда я составлял список каталога /home/oracle/.adobe/Acrobat/9.0/Temp/, все файлы имели нулевой размер байта.

Итак, мой вопрос: что могло вызвать ошибку сегментации? Это ошибка в данной версии Acrobat Reader?

Установленная версия Acrobat Reader - 9.4.

Версия RedHat - это Red Hat Enterprise Linux Server версии 5.7 (Tikanga). Ядро - Linux SCHPOAPS1 2.6.18-274.el5 # 1 SMP Пт 8 июля 17:36:59 EDT x86_64 GNU / Linux.

Мы исправили это, удалив текущую версию Acrobat Reader (версия 9.4) и установив более новую версию (9.5.5).

Я думаю, что это проблема сroread, когда он хочет открыть файл /home/oracle/.adobe/Acrobat/9.0/Temp/AdobeTempPS7XwXNz дважды.

Вы можете использовать pdf2ps вместо того acroread?