Irfanview очень удобно использовать из коммандной строки для печати картинок. Аналогов с такой функциональностью нет. Версии выше 4 по каким-то причинам падают (не всегда). 3.99 работает хорошо. К сожалению не работает печать. Просто ничего не происходит. По каналу print вроде все хорошо: trace:print:WriteSpool16 0001 0x7dcb99bf 0009 trace:print:WriteSpool16 0001 0x7dcb9cd8 0018 trace:print:WriteSpool16 0001 0x864150 001b trace:print:CloseJob16 0001 Есть подозрение, что это из-за не правильной передачи параметров принтера. В диалоге печати DPI у принтера 0.
Если печатать непосредственно из IrfanView файл --> печать, то в каталоге с картинкой создается постскрипт файл с именем LPR:LBP1120-CAPT-ver.1.5 где LBP1120-CAPT-ver.1.5 -- имя CUPS принтера. В файле все прекрасно нарисовано, но на печать не послано.
Вот начало лога (конец я в первом сообщении привел): trace:print:DrvGetPrinterData16 printer LBP1120-CAPT-ver.1.5 trace:print:DrvGetPrinterData16 profile 0x1 trace:print:DrvGetPrinterData16 lpType 0x32cbb0 trace:print:DrvGetPrinterData16 printer LBP1120-CAPT-ver.1.5 trace:print:DrvGetPrinterData16 profile 0x1 trace:print:DrvGetPrinterData16 lpType 0x32cbb0 trace:print:DrvGetPrinterData16 printer LBP1120-CAPT-ver.1.5 trace:print:DrvGetPrinterData16 profile 0x1 trace:print:DrvGetPrinterData16 lpType 0x32cbac trace:print:DrvGetPrinterData16 printer LBP1120-CAPT-ver.1.5 trace:print:DrvGetPrinterData16 profile 0x1 trace:print:DrvGetPrinterData16 lpType 0x32cbac trace:print:DrvGetPrinterData16 printer LBP1120-CAPT-ver.1.5 trace:print:DrvGetPrinterData16 profile 0x1 trace:print:DrvGetPrinterData16 lpType 0x32d254 trace:print:DrvGetPrinterData16 printer LBP1120-CAPT-ver.1.5 trace:print:DrvGetPrinterData16 profile 0x1 trace:print:DrvGetPrinterData16 lpType 0x32d254 trace:print:DrvGetPrinterData16 printer LBP1120-CAPT-ver.1.5 trace:print:DrvGetPrinterData16 profile 0x1 trace:print:DrvGetPrinterData16 lpType 0x32d258 trace:print:DrvGetPrinterData16 printer LBP1120-CAPT-ver.1.5 trace:print:DrvGetPrinterData16 profile 0x1 trace:print:DrvGetPrinterData16 lpType 0x32d258 trace:print:StartDocW DocName = L"C:\\SL_LOG\\1.tif" Output = (null) Datatype = (null) trace:print:OpenJob16 'LPR:LBP1120-CAPT-ver.1.5' 'C:\SL_LOG\1.tif' 60e4 trace:print:CreateSpoolFile Got printerSpoolCommand '' for output device 'LPR:LBP1120-CAPT-ver.1.5' trace:print:CreateSpoolFile command: 'LPR:LBP1120-CAPT-ver.1.5' trace:print:CreateSpoolFile Just assume it's a file trace:print:OpenJob16 return 0001 trace:print:WriteSpool16 0001 0x864150 0086
В оригинальном вине вроде все нормально (printdrv16.c): psCmd[0] = 0; /* @@ Wine registry key: HKCU\Software\Wine\Printing\Spooler */ if(!RegOpenKeyA(HKEY_CURRENT_USER, "Software\\Wine\\Printing\\Spooler", &hkey)) { DWORD type, count = sizeof(psCmd); RegQueryValueExA(hkey, pszOutput, 0, &type, (LPBYTE)psCmd, &count); RegCloseKey(hkey); } if (!psCmd[0] && !strncmp("LPR:",pszOutput,4)) sprintf(psCmd,"|lpr -P'%s'",pszOutput+4); TRACE("Got printerSpoolCommand '%s' for output device '%s'\n", psCmd, pszOutput); HKCU\Software\Wine\Printing\Spooler у меня пустой, pszOutput = 'LPR:LBP1120-CAPT-ver.1.5' На выходе должны получить psCmd = "|lpr -PLBP1120-CAPT-ver.1.5", а в wine@etersoft получаем пустую строку. Видимо есть воркэраунд с заполнением HKCU\Software\Wine\Printing\Spooler\LPR:LBP1120-CAPT-ver.1.5 Ща проверю.
Да, создание строкового параметра HKCU\Software\Wine\Printing\Spooler\LPR:LBP1120-CAPT-ver.1.5 со значением |lpr -PLBP1120-CAPT-ver.1.5 помогло.
Да, да! У вас там сейчас в git бред! http://git.etersoft.ru/projects/?p=eterwine.git;a=blob;f=dlls/gdi32/printdrv16.c#l314 Поправьте, а?
Спасибо, поправили, сборка 1.0.10-eter23
(In reply to comment #6) > Спасибо, поправили, сборка 1.0.10-eter23 > А это: http://bugs.etersoft.ru/show_bug.cgi?id=3868 в данной сборке исправлено, или можно ещё подождать?
Судя по всему 3940 и 3868 одно и тоже. Будем тестить.
По крайней мере git обнадеживает.
Для тех, кто не пользуется багзиллой или не умеет пользоваться групповым редактированием при поиске, закрываем задачи, которые они должны были принять.