У нашего клиента есть сервер 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
?