Bug 5163

Summary: Печать в разрешении 203dpi (на принтер этикеток)
Product: WINE@Etersoft Reporter: Sergey Tuchkin <tuchkin>
Component: Печать ; Диалог печатиAssignee: Илья Шпигорь <shpigor>
Status: CLOSED FIXED QA Contact: Денис Баранов <baraka>
Severity: major    
Priority: P2 CC: lav, shpigor
Version: 1.0.12   
Target Milestone: ---   
Hardware: PC   
OS: Mandriva   
Whiteboard:
Заявки RT: Связано с:
Дата напоминания:
Bug Depends on:    
Bug Blocks: 5032    
Attachments: postscript-вывод 1С при печати с разрешением в 203dpi
postscript-вывод 1С при печати с разрешением в 200dpi
эмуляция печати файла 2.ps на устройстве с разрешением в 203dpi
эмуляция печати файла 2.ps на устройстве с разрешением в 200dpi
PPD принтера
Печать ценников и этикеток_ Нормальный.mxl
Скриншот mxl
1С - предварительный просмотр (разрешение на принтере - 200dpi)
1С - предварительный просмотр (разрешение на принтере - 203dpi)

Description Sergey Tuchkin 2010-03-02 12:45:03 MSK
Created attachment 1544 [details]
postscript-вывод 1С при печати с разрешением в 203dpi

Есть потребность печатать этикетки со штрихкодом.
Термопринтер печатает с разрешением 203dpi. Если в настройках принтера (в system-config-printing) выбрать соответствующее разрешение (ppd прилагается), в выходном postscript получаем полную потерю форматирования + отсутствие штрихкода (1.ps). Если использовать отличное от 203dpi разрешение, всё форматирование сохраняется (2.ps), но штрихкод не читается из-за потери тонких линий и слияния соседних жирных линий (2_r203.png). Если бы принтер мог печатать с разрешением 200dpi, то мы получили бы требуемый результат (2_r200.png). Однако, принтер поддерживает только печать с разрешением 203dpi. При этом из Linux-приложения (openoffice.org) печать происходит корректно при любом разрешении.
Comment 1 Sergey Tuchkin 2010-03-02 12:46:18 MSK
Created attachment 1545 [details]
postscript-вывод 1С при печати с разрешением в 200dpi
Comment 2 Sergey Tuchkin 2010-03-02 12:50:11 MSK
Created attachment 1546 [details]
эмуляция печати файла 2.ps на устройстве с разрешением в 203dpi

Файл 2.ps, распечатанный на устройстве "файл PNG" с разрешением 203dpi (gs -sDEVICE=png16 -sOutputFile=2_r203.png -r203x203 2.ps)
Comment 3 Sergey Tuchkin 2010-03-02 12:54:27 MSK
Created attachment 1547 [details]
эмуляция печати файла 2.ps на устройстве с разрешением в 200dpi

Файл 2.ps, распечатанный на устройстве "файл PNG" с разрешением 200dpi (gs -sDEVICE=png16 -sOutputFile=2_r200.png -r200x200 2.ps)
Comment 4 Sergey Tuchkin 2010-03-02 12:57:29 MSK
(In reply to comment #2)
> Created an attachment (id=1546) [details]
> эмуляция печати на устройстве с
> разрешением в 203dpi
> 
> Файл 2.ps, распечатанный на устройстве "файл
> PNG" с разрешением 203dpi (gs -sDEVICE=png16
> -sOutputFile=2_r203.png -r203x203 2.ps)
> 

Собственно, это в точности совпадает с тем, что оказывается распечатанным на этикетке. Линии штрихкода сливаются, штрихкод не читается.
Comment 5 Sergey Tuchkin 2010-03-02 12:58:52 MSK
Created attachment 1548 [details]
PPD принтера
Comment 6 Sergey Tuchkin 2010-03-02 13:20:09 MSK
Информация о системе:

1С:Предприятие 8.1.15

WINE@Etersoft 1.0 SQL 1.0.12-eter1.3/1
Product: WINE@Etersoft 1.0 SQL (корпоративная лицензия, коробочная версия)
Licensed for ЗАО "Мезон" with registration number 509D-4CCC
Contact person: Сергей Олегович Гузиков
License expired at 16/03/2010

LSB Version:	lsb-4.0-amd64:lsb-4.0-noarch:*
Distributor ID:	MandrivaLinux
Description:	Mandriva Linux 2010.0
Release:	2010.0
Codename:	adelie

Linux linux-ts.shop-1.key 2.6.31.5-server-1mnb #1 SMP Fri Oct 23 01:19:00 EDT 2009 x86_64 Intel(R) Xeon(R) CPU           E5420  @ 2.50GHz GNU/Linux
Comment 7 Vitaly Lipatov 2010-03-02 16:16:20 MSK
(In reply to comment #0)
...
> При этом из
> Linux-приложения (openoffice.org) печать происходит
> корректно при любом разрешении.
А что печатается из OpenOffice при этом?
Можно ли сохранить этикетку из 1С и открыть в OOo, распечатав в нём?

Comment 8 Sergey Tuchkin 2010-03-02 18:09:42 MSK
Из OpenOffice печатал тестовые документы - чтоб проверить, не виноват ли CUPS. Печатается корректно в любом разрешении (проверял на 200dpi,203dpi,300dpi и 600dpi). Из 1С корректно печатает в 200dpi, 300dpi и 600dpi, и некорректно в 203dpi. В принципе, проблему удалось обойти, настроив cups-драйвер для принтера этикеток (до этого печать шла через Windows с перенаправлением печати (http://www.nixp.ru/articles/%D0%A0%D0%B5%D1%86%D0%B5%D0%BF%D1%82-%D0%BF%D1%80%D0%B8%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F-Win-%D0%BF%D1%80%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D0%B0-%D0%B4%D0%BB%D1%8F-%D0%BF%D0%B5%D1%87%D0%B0%D1%82%D0%B8-%D0%B8%D0%B7-Linux.html). Настройка заключалась в правке ppd, сводящейся добавлению разрешения 200dpi. Видимо, приоритет бага можно понизить, но сама по себе проблема никуда не делась (нужно править ppd). Конфигурация не предусматривает экспорт в xls, но можно сохранить в mxl.
Comment 9 Vitaly Lipatov 2010-03-02 18:13:30 MSK
(In reply to comment #8)
> Из OpenOffice печатал тестовые документы - чтоб
> проверить, не виноват ли CUPS. Печатается
Эти документы включали в себя растровый штрих-код такого же разрешения, как генерирует 1C?
...
> Настройка заключалась в правке ppd,
> сводящейся добавлению разрешения 200dpi.
> Видимо, приоритет бага можно понизить, но
> сама по себе проблема никуда не делась
> (нужно править ppd). Конфигурация не
> предусматривает экспорт в xls, но можно
> сохранить в mxl.
Можете ли вы приложить сюда mxl, а ведь надо проверять на чём-то.

Comment 10 Sergey Tuchkin 2010-03-02 18:20:02 MSK
Created attachment 1549 [details]
Печать ценников и этикеток_ Нормальный.mxl
Comment 11 Sergey Tuchkin 2010-03-02 18:36:51 MSK
(In reply to comment #9)
> (In reply to comment #8)
> > Из OpenOffice печатал тестовые документы - чтоб
> > проверить, не виноват ли CUPS. Печатается
> Эти документы включали в себя растровый
> штрих-код такого же разрешения, как
> генерирует 1C?

Нет, штрихкод я не включал. Но если удалить штрихкод из шаблона в 1С, форматирование точно так же портится при печати на 203dpi

> ...
> > Настройка заключалась в правке ppd,
> > сводящейся добавлению разрешения 200dpi.
> > Видимо, приоритет бага можно понизить, но
> > сама по себе проблема никуда не делась
> > (нужно править ppd). Конфигурация не
> > предусматривает экспорт в xls, но можно
> > сохранить в mxl.
> Можете ли вы приложить сюда mxl, а ведь надо
> проверять на чём-то.
> 

Приложил
Comment 12 Илья Шпигорь 2010-03-03 11:39:56 MSK
Created attachment 1552 [details]
Скриншот mxl

Возникла проблема с воспроизведением ошибки. В присланном Вами mxl файле почему-то не отрисовывается штрихкод (или его нет?).

На скриншоте - открытый в windows mxl файл с примером.

Что нам нужно чтобы распечатать штрихкод? Ваша конфигурация или какая-та компонента для 1С?
Comment 13 Sergey Tuchkin 2010-03-03 15:12:04 MSK
Для печати штрихкодов используется специальная компонента «1С: Печать штрихкодов» (выполненная в виде DLL-библиотеки), которая распространяется на диске ИТС (Работаем с программами) в виде установочного файла (1CBarcode.exe). Её нужно установить отдельно перед началом работы с конфигурацией.

Если после установки под Wine компонента не зарегистрировалась автоматически, можно зарегистрировать модуль вручную командой 
wine regsvr32 'C:\Program Files\1C\1CBarCode\1CBarCod.dll'
Comment 14 Илья Шпигорь 2010-03-04 15:16:20 MSK
Есть подозрение, что результирующий postscript, формируемый wine, не зависит от разрешения принтера. Не могли бы вы сделать оба варианта и сравнить?
Comment 15 Sergey Tuchkin 2010-03-10 18:16:35 MSK
Оба постскрипт-файла уже приложены. Они отличаются даже по размеру файла. Кроме того, на скриншоте окна предварительного просмотра 1С при разрешении на принтере 203dpi видно, что штрихкод не формируется.
Comment 16 Sergey Tuchkin 2010-03-10 18:17:40 MSK
Created attachment 1566 [details]
1С - предварительный просмотр (разрешение на принтере - 200dpi)
Comment 17 Sergey Tuchkin 2010-03-10 18:18:05 MSK
Created attachment 1567 [details]
1С - предварительный просмотр (разрешение на принтере - 203dpi)
Comment 18 Sergey Tuchkin 2010-04-04 23:00:00 MSD
К сожалению, проблема снова требует решения. Имеются принтеры этикеток, не имеющие совместимых драйверов под Linux, поэтому приходится подключать их к Windows-машине и печатать c рабочих станций Linux через расшаренный PostScript - принтер, перенаправляющий задание в ghostscript, который отправляет вывод на устройство печати. При таком методе трюк с подменой разрешения 203dpi на 200dpi не проходит, так как битмап, содержащий штрихкод, после масштабирования теряет четкость (см. http://bugs.etersoft.ru/attachment.cgi?id=1546 и http://bugs.etersoft.ru/attachment.cgi?id=1547), и штрихкод перестает читаться сканерами. Таким образом, требуется реализовать печать из 1С на устройствах с разрешением 203dpi, аналогично тому, как она реализована для устройств с разрешением 200dpi, 300dpi и 600dpi.
Comment 19 Илья Шпигорь 2010-04-12 12:27:59 MSD
to night:
Воспроизведи, пожалуйста в какой нибудь бутылке.
Для печати используется компонента «1С: Печать
штрихкодов» - 1CBarcode.exe. Печать на принтер с разрешением 203 dpi.

См. комментарий #13.
Comment 20 Andrey Vusik 2010-04-12 17:00:21 MSD
Нужен принтер на cellar с постскриптом из 5-го коммента.
Comment 21 Devaev Maxim 2010-04-12 19:23:48 MSD
5cprntДобавил принтер с именем 5cprnt и ppd-файлом из пятого камента.
Comment 22 Andrey Vusik 2010-04-13 15:47:28 MSD
Бутылка bugs/5163
Файл на диске c:
Печатаем на принтер 5cprnt
Результаты проверяем на диске z:
Менять разрешение с 203dpi на 200dpi можно в /etc/cups/ppd/ в соответствующем файле в строке 
*DefaultResolution:
Comment 23 Илья Шпигорь 2010-04-14 17:43:13 MSD
Ошибка в конфигурационном файле принтера.

Вместо
*DefaultResolution: 203dpi

Надо указывать:
*DefaultResolution: 203x203dpi

Если оба обозначения одинаково работают под windows, то скорее всего это проблема wine. Могу поправить разбор ppd файла.
Comment 24 Sergey Tuchkin 2010-04-14 18:42:24 MSD
Большое спасибо, я поправил ppd, теперь генерируется корректный PostScript. Строго говоря, следует поправить разбор ppd, поскольку в спецификации явно указано на возможность альтернативного указания разрешения в формате HHHdpi для симметричных разрешений:
"The name argument must conform to the resolution naming conventions in the Adobe PPD file specification, either HHHdpi for symmetric resolutions or HHHxVVVdpi for asymmetric resolutions." - http://www.cups.org/documentation.php/ref-ppdcfile.html#Resolution

воспроизвести ситуацию на Windows пока нет возможности, но при случае попробую.
Comment 25 Vitaly Lipatov 2010-04-14 20:51:24 MSD
(In reply to comment #24)
> Большое спасибо, я поправил ppd, теперь
> генерируется корректный PostScript. Строго
Отлично.
> говоря, следует поправить разбор ppd,
Так и сделаем.
Comment 26 Илья Шпигорь 2010-04-15 13:00:31 MSD
Подготовил и отправил патч на winehq.
Comment 27 Илья Шпигорь 2010-04-16 15:53:25 MSD
Патч отправил в нашу рассылку. Прикладывать только на eter-1.0.12, т.к. с оригинальным wine эта ветка мержиться больше не будет.
Comment 28 Vitaly Lipatov 2010-05-16 15:42:33 MSD
Закрываю, как решённую.