cups отказывается печатать PDF-файлы с «ошибкой фильтра», вероятно, из-за слишком длинного заголовка

Моя система — Debian 3.16.7. Сегодня я отрендерил задание на печать (название бумаги Распределенные представления слов и фраз и их композиционность) с использованием чашек для моего принтера Kyocera fs-1041. Однако принтер отказывается печатать с сообщением об ошибке «Сбой фильтра» на панели управления браузера чашек.

Внутри моего /var/cups/error_log написано:

    E [18/Sep/2016:12:36:27 +0200] [Job 225] Job stopped due to filter errors; please consult the error_log file for details.
    D [18/Sep/2016:12:36:27 +0200] [Job 225] The following messages were recorded from 12:36:21 PM to 12:36:27 PM
    D [18/Sep/2016:12:36:27 +0200] [Job 225] Adding start banner page "none".
    D [18/Sep/2016:12:36:27 +0200] [Job 225] Adding end banner page "none".
    D [18/Sep/2016:12:36:27 +0200] [Job 225] File of type application/pdf queued by "root".
    D [18/Sep/2016:12:36:27 +0200] [Job 225] hold_until=0
    D [18/Sep/2016:12:36:27 +0200] [Job 225] Queued on "Kyocera_FS-1041" by "root".
    D [18/Sep/2016:12:36:27 +0200] [Job 225] time-at-processing=1474194981
    D [18/Sep/2016:12:36:27 +0200] [Job 225] 3 filters for job:
    D [18/Sep/2016:12:36:27 +0200] [Job 225] pdftopdf (application/pdf to application/vnd.cups-pdf, cost 66)
    D [18/Sep/2016:12:36:27 +0200] [Job 225] gstoraster (application/vnd.cups-pdf to application/vnd.cups-raster, cost 99)
    D [18/Sep/2016:12:36:27 +0200] [Job 225] /usr/lib/cups/filter/rastertokpsl (application/vnd.cups-raster to printer/Kyocera_FS-1041, cost 0)
    D [18/Sep/2016:12:36:27 +0200] [Job 225] job-sheets=none,none
    D [18/Sep/2016:12:36:27 +0200] [Job 225] argv[0]="Kyocera_FS-1041"
    D [18/Sep/2016:12:36:27 +0200] [Job 225] argv[1]="225"
    D [18/Sep/2016:12:36:27 +0200] [Job 225] argv[2]="root"
    D [18/Sep/2016:12:36:27 +0200] [Job 225] argv[3]="Distributed Representations of Words and Phrases and their Compositionality - 5021-distributed-representations-of-words-and-phrases-and-their-compositionality.pdf"
    D [18/Sep/2016:12:36:27 +0200] [Job 225] argv[4]="1"
    D [18/Sep/2016:12:36:27 +0200] [Job 225] argv[5]="CaBrightness=0 PageSize=Letter MediaType=PrnDef EngineSpeed=Off CaContrast=0 number-up=1 job-uuid=urn:uuid:a19e56db-80b7-307d-4359-b8a1c32c90f5 job-originating-host-name=localhost time-at-creation=1474194981 time-at-processing=1474194981"
    D [18/Sep/2016:12:36:27 +0200] [Job 225] argv[6]="/var/spool/cups/d00225-001"
    ...
    <!-envps>
    ...
    D [18/Sep/2016:12:36:27 +0200] [Job 225] envp[29]="FINAL_CONTENT_TYPE=application/vnd.cups-raster"
    D [18/Sep/2016:12:36:27 +0200] [Job 225] envp[30]="AUTH_I****"
    D [18/Sep/2016:12:36:27 +0200] [Job 225] Started filter /usr/lib/cups/filter/pdftopdf (PID 4664)
    D [18/Sep/2016:12:36:27 +0200] [Job 225] Started filter /usr/lib/cups/filter/gstoraster (PID 4665)
    D [18/Sep/2016:12:36:27 +0200] [Job 225] Started filter /usr/lib/cups/filter/rastertokpsl (PID 4666)
    D [18/Sep/2016:12:36:27 +0200] [Job 225] Started backend /usr/lib/cups/backend/usb (PID 4667)
    D [18/Sep/2016:12:36:27 +0200] [Job 225] Loading USB quirks from "/usr/share/cups/usb".
    D [18/Sep/2016:12:36:27 +0200] [Job 225] Loaded 113 quirks.
    D [18/Sep/2016:12:36:27 +0200] [Job 225] Printing on printer with URI: usb://Kyocera/FS-1041?serial=NZF2X06371
    D [18/Sep/2016:12:36:27 +0200] [Job 225] *** buffer overflow detected ***: Kyocera_FS-1041 terminated
    D [18/Sep/2016:12:36:27 +0200] [Job 225] ======= Backtrace: =========
    D [18/Sep/2016:12:36:27 +0200] [Job 225] /lib/x86_64-linux-gnu/libc.so.6(+0x731af)[0x7f525aaf11af]
    D [18/Sep/2016:12:36:27 +0200] [Job 225] /lib/x86_64-linux-gnu/libc.so.6(__fortify_fail+0x37)[0x7f525ab76cf7]
    D [18/Sep/2016:12:36:27 +0200] [Job 225] /lib/x86_64-linux-gnu/libc.so.6(+0xf6f10)[0x7f525ab74f10]
    D [18/Sep/2016:12:36:27 +0200] [Job 225] Kyocera_FS-1041[0x406c87]
    D [18/Sep/2016:12:36:27 +0200] [Job 225] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5)[0x7f525aa9fb45]
    D [18/Sep/2016:12:36:27 +0200] [Job 225] Kyocera_FS-1041[0x40799d]
    D [18/Sep/2016:12:36:27 +0200] [Job 225] ======= Memory map: ========
    D [18/Sep/2016:12:36:27 +0200] [Job 225] 00400000-00430000 r-xp 00000000 08:04 3541254                            /usr/lib/cups/filter/rastertokpsl
    ...
    <!-Memory map->
    ...
    D [18/Sep/2016:12:36:27 +0200] [Job 225] ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]
    D [18/Sep/2016:12:36:27 +0200] [Job 225] PID 4666 (/usr/lib/cups/filter/rastertokpsl) crashed on signal 6.
    D [18/Sep/2016:12:36:27 +0200] [Job 225] Hint: Try setting the LogLevel to "debug" to find out more.
    D [18/Sep/2016:12:36:27 +0200] [Job 225] libusb_get_device_list=8
    D [18/Sep/2016:12:36:27 +0200] [Job 225] STATE: +connecting-to-device
    D [18/Sep/2016:12:36:27 +0200] [Job 225] STATE: -connecting-to-device
    D [18/Sep/2016:12:36:27 +0200] [Job 225] Printer found with device ID: MFG:Kyocera;MDL:FS-1041;CLS:PRINTER;SN:NZF2X06371;CID:KY_KPSL_MonoPersonal; Device URI: usb://Kyocera/FS-1041?serial=NZF2X06371
    D [18/Sep/2016:12:36:27 +0200] [Job 225] Device protocol: 2
    D [18/Sep/2016:12:36:27 +0200] [Job 225] Sending data to printer.
    D [18/Sep/2016:12:36:27 +0200] [Job 225] Sent 0 bytes...
    D [18/Sep/2016:12:36:27 +0200] [Job 225] PID 4664 (/usr/lib/cups/filter/pdftopdf) exited with no errors.
    D [18/Sep/2016:12:36:27 +0200] [Job 225] Color Manager: Calibration Mode/Off
    D [18/Sep/2016:12:36:27 +0200] [Job 225] Calling FindDeviceById(cups-Kyocera_FS-1041)
    D [18/Sep/2016:12:36:27 +0200] [Job 225] Found device /org/freedesktop/ColorManager/devices/cups_Kyocera_FS_1041
    D [18/Sep/2016:12:36:27 +0200] [Job 225] Calling org.freedesktop.ColorManager.Device.Get(ProfilingInhibitors)
    D [18/Sep/2016:12:36:27 +0200] [Job 225] Calling FindDeviceById(cups-Kyocera_FS-1041)
    D [18/Sep/2016:12:36:27 +0200] [Job 225] Found device /org/freedesktop/ColorManager/devices/cups_Kyocera_FS_1041
    D [18/Sep/2016:12:36:27 +0200] [Job 225] Calling GetProfileForQualifiers(Gray.PrnDef.600dpi...)
    D [18/Sep/2016:12:36:27 +0200] [Job 225] Found profile /org/freedesktop/ColorManager/profiles/Kyocera_FS_1041_Gray__
    D [18/Sep/2016:12:36:27 +0200] [Job 225] Calling org.freedesktop.ColorManager.Profile.Get(Filename)
    D [18/Sep/2016:12:36:27 +0200] [Job 225] Use profile filename: ''
    D [18/Sep/2016:12:36:27 +0200] [Job 225] Color Manager: ICC Profile: 
    D [18/Sep/2016:12:36:27 +0200] [Job 225] Ghostscript command line: /usr/bin/gs -dQUIET -dPARANOIDSAFER -dNOPAUSE -dBATCH -dNOINTERPOLATE -sDEVICE=cups -sstdout=%stderr -sOutputFile=%stdout -r600x600 -dDEVICEWIDTHPOINTS=612 -dDEVICEHEIGHTPOINTS=792 -dcupsBitsPerColor=8 -dcupsColorOrder=0 -dcupsColorSpace=3 -dcupsCompression=1 -scupsPageSizeName=Letter -I/usr/share/cups/fonts -c '<</.HWMargins[12.000000 8.000000 12.000000 16.000000] /Margins[0 0]>>setpagedevice' -f -_
    D [18/Sep/2016:12:36:27 +0200] [Job 225] envp[0]="CUPS_CACHEDIR=/var/cache/cups"
    ...
    <!-envps->
    ...
    D [18/Sep/2016:12:36:27 +0200] [Job 225] envp[30]="AUTH_INFO_REQUIRED=none"
    D [18/Sep/2016:12:36:27 +0200] [Job 225] Start rendering...
    D [18/Sep/2016:12:36:27 +0200] [Job 225] Processing page 1...
    D [18/Sep/2016:12:36:27 +0200] [Job 225] Processing page 2...
    D [18/Sep/2016:12:36:27 +0200] [Job 225] Waiting for read thread to exit...
    D [18/Sep/2016:12:36:27 +0200] [Job 225] PID 4667 (/usr/lib/cups/backend/usb) exited with no errors.
    D [18/Sep/2016:12:36:27 +0200] [Job 225] Processing page 3...
    D [18/Sep/2016:12:36:27 +0200] [Job 225] Processing page 4...
    D [18/Sep/2016:12:36:27 +0200] [Job 225] Processing page 5...
    D [18/Sep/2016:12:36:27 +0200] [Job 225] Processing page 6...
    D [18/Sep/2016:12:36:27 +0200] [Job 225] Processing page 7...
    D [18/Sep/2016:12:36:27 +0200] [Job 225] Processing page 8...
    D [18/Sep/2016:12:36:27 +0200] [Job 225] Processing page 9...
    D [18/Sep/2016:12:36:27 +0200] [Job 225] Rendering completed
    D [18/Sep/2016:12:36:27 +0200] [Job 225] PID 4665 (/usr/lib/cups/filter/gstoraster) exited with no errors.
    D [18/Sep/2016:12:36:27 +0200] [Job 225] End of messages

Искал несколько проблем и вопросов, таких как это или это и так далее, я все еще не мог найти способ избавиться от этой проблемы.

Как ни странно, прямо сейчас тестовая страница чашек или файлы документов, созданные LibreOffice и т. д., все еще могут быть распечатаны.

Поэтому я предполагаю, что это может быть вызвано самим файлом pdf, и он начал взламывать отформатированный файл и, наконец, понял, что слишком длинное поле /Title вызовет эту проблему. После изменения этого поля с «Распределенные представления слов и фраз и их композиционность» на «Проверка» это действительно работает!

Но до сих пор неизвестно, почему это длинное поле /Title вызовет ошибку фильтра, может ли кто-нибудь предложить ответ или отправить мне ссылку о том, как фильтры ведут себя с файлом PDF?


person Joshua Ghost    schedule 18.09.2016    source источник


Ответы (1)


Чтобы исправить это, вам нужно открыть файл PPD для вашего принтера в текстовом редакторе. Найдите строку *cupsFilter: "application/vnd.cups-raster 0 /usr/lib/cups/filter/rastertokpsl"и измените rastertokpsl на rastertokpsl-fixed. После этого сохраните его и откройте терминал. Введите sudo nano /usr/lib/cups/filter/rastertokpsl-fixed в терминал и нажмите Enter.

Вставьте это содержимое в:

#!/bin/bash
jobname=$(echo $3 | egrep -o '[[:alnum:]]' | tr -d '\n' | tail -c 20)
path=/usr/lib/cups/filter
$path/rastertokpsl "$1" "$2" "$jobname" "$4" "$5"

и нажмите Ctrl+O. Теперь вы можете настроить принтер в настройках, используя этот PPD.

person Parawes    schedule 01.10.2018
comment
Большое спасибо за ваш ответ. С момента публикации этого вопроса прошло так много времени, пока вы не дадите мне этот ценный совет. Я не нашел ни одного файла rastertokpsl в папке /usr/lib/cups/filter/, но нашел этот драйвер, содержащий его, на основе вашего предложения. Будем надеяться, что этот драйвер будет работать! - person Joshua Ghost; 06.11.2018
comment
Patch, который вы указали в своем комментарии, в основном делает то же самое, однако обратите внимание на PPD файл, в котором он исправлен, является русской версией. - person CedSha; 11.01.2021