Текущее время: Пт, июл 18 2025, 03:20

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: Печать многостраничного tif-файла из фонового задания
СообщениеДобавлено: Пн, авг 04 2014, 13:31 
Почетный гуру
Почетный гуру

Зарегистрирован:
Пт, дек 04 2009, 12:52
Сообщения: 219
Добрый день всем. Вот такая головоломка:
Необходимо массово отправлять на печать, на заранее определенный принтер, сканы документов (файлы формата .tif), хранящиеся в BDS.
Всё бы ничего, но есть ограничения:

1) задание на печать необходимо формировать минуя Frontend (например, пришел Idoc - сразу распечаталось несколько сканов). Таким образом, класс CL_GUI_ECL_2DVIEWER не подходит; OLE-технологии тоже.
2) файлы многостраничные (т.е. один tif-файл может содержать сразу несколько страниц).
3) система 4.7

Как я понимаю, необходимо найти способ - либо сразу отправить картинку в спул (как?), либо обернуть картинку в SAPSCRIPT-формуляр/или PDF-файл, и уже его отправить в спул (некоторые изыскания на эту тему описаны здесь, но мне не удалось заставить это работать - подозреваю, причина в многостраничном файле).
Допустим, будет найден способ обернуть картинку в PDF-файл, вроде бывает программка RSPO0023 для отправки его в спул... но в нашей системе её нет (как нет и ADS) :(

Есть ли у кого идеи, в какую сторону ещё можно копнуть?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Печать многостраничного tif-файла из фонового задания
СообщениеДобавлено: Пн, авг 04 2014, 14:50 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, сен 23 2005, 11:11
Сообщения: 963
см программу RSTXLDMC


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Печать многостраничного tif-файла из фонового задания
СообщениеДобавлено: Ср, авг 06 2014, 10:40 
Почетный гуру
Почетный гуру

Зарегистрирован:
Пт, дек 04 2009, 12:52
Сообщения: 219
trop написал(а):
см программу RSTXLDMC

Данная программа загружает файл с Frontend-а и сохраняет в виде SAPSCRIPT-текста, аналогично транзакции SE78. Но это только первый шаг. Следующим шагом будет вставка загруженной картинки в SAPSCRIPT формуляр (к слову, у меня файлы уже загружены в BDS - так, что это не совсем мне подходит, но тем не менее...).

Итак (первый шаг), Те TIF-файлы, с которыми предстоит работать, невозможно загрузить ни указанной Вами программой, ни тр.SE78 - выдает ошибку TIFF format error: No baseline TIFF 6.0 file, причиной чему, как я думаю, является многостраничность файла (при этом, файл корректный, т.к. любой другой просмотровщик открывает без проблем).
Однако, если обработать этот файл с помощью графического редактора, оставив одну страницу, то загружается нормально (но для меня, как вы понимаете, это уже не приемлемо).

Далее (второй шаг), я пытаюсь загруженный файл завернуть в SAPSCRIPT-форму посредством связки Ф.М. 'SAPSCRIPT_GENERATE_BMP_COMMAND' и Ф.М.'PRINT_TEXT' (так, как показано здесь) - получается пустой формуляр (без картинки). Я экспериментировал с разными размерами TIF-файлов, но, как я понимаю, такой трюк возможен только с файлами BMP.

Может быть есть ещё какие-нибудь идеи?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Печать многостраничного tif-файла из фонового задания
СообщениеДобавлено: Ср, авг 06 2014, 15:47 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, сен 23 2005, 11:11
Сообщения: 963
1)
http://www.fileformat.info/format/tiff/corion.htm

в случае с одной страницей, скорее всего отсутствуют сегменты IFD (image file directory),
если они присутствуют, нужно вручную страницы разводить в отдельные бинарники,
для этого можно сделать diff обычного и многостраничного файлов в бинарном виде,
чтобы понять как разбирать, или просто в hex редакторе подсмотреть.
т.е. нужно разодрать многостр файл по ifd, выкинуть заголовки ifd, склеить каждую
страницу с заголовком одностраничного файла и кормить se78, получая длинные тексты

2)
кажется слишком усложнили, sapscript должен выводить длинный текст
без всяких предварительных преобразований,
только что загрузил одностраничный файл (BCOL, dpi 150) в se78 в длинный текст и в so10 его видно
по кнопке Предв просмотр перед печатью, параметры для PRINT_TEXT подсмотрите в отладке


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Печать многостраничного tif-файла из фонового задания
СообщениеДобавлено: Вт, авг 12 2014, 10:32 
Почетный гуру
Почетный гуру

Зарегистрирован:
Пт, дек 04 2009, 12:52
Сообщения: 219
trop написал(а):
нужно разодрать многостр файл по ifd, выкинуть заголовки ifd, склеить каждую
страницу с заголовком одностраничного файла и кормить se78, получая длинные тексты
Действительно, так. Правда есть свои тонкости: IFD и Данные изображения для каждой страницы не обязательно следуют в файле друг за другом, а могут быть в любом порядке, и при этом, связаны ссылками друг на друга. Здесь поверхностным анализом файла не обойтись, придется выполнять полноценный парсинг.
Поэтому, вместо отдельной предварительной подготовки файла перед загрузкой в тр.SE78, лучше будет вклиниться в сам алгоритм парсинга, выполняемый тр.SE78 (ведь TIF и BMP -картинки хранятся в текстах не "как есть", а переведенные во внутренний формат SAPSCRIPTа - так называемый BM_FILE). Это не очень сложно, но этим дело не ограничится.

Я выяснил, что ошибка TIFF format error: No baseline TIFF 6.0 file появляется ещё и потому, что тр.SE78 не умеет парсить файл с LZW-компрессией. Это очень прискорбно, поскольку данная опция используется в подавляющем большинстве TIF-файлов (т.к.уменьшает их размер файла в 2-3 раза).
Таким образом, в процедуру парсинга исходного файла потребуется внедрить ещё и алгоритм LZW-декомпрессии. Данный алгоритм в общем-то не сложный, но есть там ряд подводных камней... Пока не знаю, готов ли я к таким "подвигам", т.к. задача не приоритетная. Ещё раз, спасибо за совет.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Печать многостраничного tif-файла из фонового задания
СообщениеДобавлено: Вт, авг 12 2014, 15:54 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, сен 23 2005, 11:11
Сообщения: 963
другой подход - если as на aix или suse ,проверить присутствует ли утилита convert (libtiff),
если нет, то попробовать найти или собрать бинарник с помощью базиса (придется
на тесте и продуктиве ставить), этой утилитой можно преобразовать многостраничный tiff
в кучу разных вариантов (pdf, ps, jpg, tiff и др.)


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Печать многостраничного tif-файла из фонового задания
СообщениеДобавлено: Пт, авг 15 2014, 01:48 
Старший специалист
Старший специалист

Зарегистрирован:
Ср, июн 01 2005, 19:32
Сообщения: 253
Откуда: Москва
Бородин Игорь написал(а):
Добрый день всем. Вот такая головоломка:
Необходимо массово отправлять на печать, на заранее определенный принтер, сканы документов (файлы формата .tif), хранящиеся в BDS.
Всё бы ничего, но есть ограничения:

1) задание на печать необходимо формировать минуя Frontend (например, пришел Idoc - сразу распечаталось несколько сканов). Таким образом, класс CL_GUI_ECL_2DVIEWER не подходит; OLE-технологии тоже.
2) файлы многостраничные (т.е. один tif-файл может содержать сразу несколько страниц).
3) система 4.7

Как я понимаю, необходимо найти способ - либо сразу отправить картинку в спул (как?), либо обернуть картинку в SAPSCRIPT-формуляр/или PDF-файл, и уже его отправить в спул (некоторые изыскания на эту тему описаны здесь, но мне не удалось заставить это работать - подозреваю, причина в многостраничном файле).
Допустим, будет найден способ обернуть картинку в PDF-файл, вроде бывает программка RSPO0023 для отправки его в спул... но в нашей системе её нет (как нет и ADS) :(

Есть ли у кого идеи, в какую сторону ещё можно копнуть?

Игорь, а сканы обязаны быть в tiff? Если это сканы с какого-нибудь более-менее современного МФУ или сканера, то там обычно выбор из форматов для сканирования есть и среди них присутствует PDF. Может сразу в PDF и сканировать?

Совсем альтернативный подход - реализовать печать не средствами SAP, а средствами ОС (или специального приложения/сервиса).
Например, при получении IDOC вываливать в определенную папку нужные TIFF многостраничные, затем делить их на отдельные одностраничные (с печатью которых проблем меньше), например, натравливая на них через вызов ОС это, а затем отправлять на печать полученные файлы через другую команду ОС.

Хотя ощущение костылей меня не покидает.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Печать многостраничного tif-файла из фонового задания
СообщениеДобавлено: Пн, авг 18 2014, 10:19 
Почетный гуру
Почетный гуру

Зарегистрирован:
Пт, дек 04 2009, 12:52
Сообщения: 219
peper- написал(а):
Игорь, а сканы обязаны быть в tiff?
сканы уже давно присутствуют в системе и их довольно много (сотни, а может и тысячи). Это всяческие сертификаты соответствия на каждый из видов продукции и др.документы.
peper- написал(а):
Может сразу в PDF и сканировать?
теоретически, можно поменять регламент и сканировать в PDF, а те сканы, что есть - сконвертировать... но что это даст? Ведь в 4.7 нет ADS (Adobe document system) и в спул поставить PDF-документ я не представляю как. С tif-файлами есть хоть какая-то "зацепка".
peper- написал(а):
Совсем альтернативный подход - реализовать печать не средствами SAP, а средствами ОС
Примерно так сейчас и реализовано... файлы выгружаются на frontend и (посредством OLE) открываются в MS Picture manager-е, посредством чего и отправляются на печать.
Но пользователей не устраивает необходимость каждый раз делать это вручную (печатать приходится печатать много раз за день), а также, временами возникающие сбои при печати (т.к. файлы довольно "увесистые" и идут на печать по полсотни подряд). Пожелание пользователей - просто забирать готовые отпечатки с определенного принтера, и всё... (а печать должна осуществляться автоматически по факту прихода очередного IDOC из др.системы).
trop написал(а):
если as на aix или suse ,проверить присутствует ли утилита convert (libtiff),
если нет, то попробовать найти или собрать бинарник с помощью базиса
К сожалению, as на винде... а базисники - в другой стране и прямой контакт с ними исключен (общение возможно только посредством руководства, через заявки, которые могут рассматриваться месяцами). С полномочиями тоже беда.
trop написал(а):
нужно разодрать многостр файл по ifd
В общем, поковыряв гр.функций STXBITMAPS, путем частичного её копирования и переработки, я набросал отчет, который анализирует не один, а все имеющиеся IFD в файле, и таки, отправляет в спул многостраничный TIF-файл (до алгоритма декомпрессии пока дело не дошло, экспериментирую с несжатыми файлами). Спул на предпросмотре выглядит именно так, как нужно и я хотел было уже обрадоваться... НО при попытке распечатать такой спул выдается ошибка: OTF module: Page buffer (80*1000 entries) is too small и всё, приехали (( . Замечу, эта ошибка выходит при работе со сканом, имеющим размер А4 и разрешением 300 dpi... если же уменьшить разрешение этого файла до 150 dpi - ошибки не возникает, всё печатается нормально!
Возможно ли как-либо увеличить этот страничный буфер? и как?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Печать многостраничного tif-файла из фонового задания
СообщениеДобавлено: Пн, авг 18 2014, 12:53 
Старший специалист
Старший специалист

Зарегистрирован:
Ср, июн 01 2005, 19:32
Сообщения: 253
Откуда: Москва
Бородин Игорь написал(а):
peper- написал(а):
Совсем альтернативный подход - реализовать печать не средствами SAP, а средствами ОС
Примерно так сейчас и реализовано... файлы выгружаются на frontend и (посредством OLE) открываются в MS Picture manager-е, посредством чего и отправляются на печать.
Но пользователей не устраивает необходимость каждый раз делать это вручную (печатать приходится печатать много раз за день), а также, временами возникающие сбои при печати (т.к. файлы довольно "увесистые" и идут на печать по полсотни подряд). Пожелание пользователей - просто забирать готовые отпечатки с определенного принтера, и всё... (а печать должна осуществляться автоматически по факту прихода очередного IDOC из др.системы).

Игорь, я имел ввиду не печать средствами ОС на стороне клиента, а печать средствами серверной ОС (Windows как я понял), на которой работает SAP. Другое дело, что прочитав про то, как у вас "организовано" взаимодействие с базисом, чую, что этот способ тоже будет трудно реализовать, так как в любом случае нужно будет разруливать вопросы настройки принтеров на сервере.
Ну, тогда другой вариант (не менее извращенный) - поднимите у себя в офисе какой-нибудь локальный сервер (наверняка есть такой уже), на котором расшарьте папку (для доступа саповского сервера), настройте упоминавшийся ранее imagemagic, и слежение за папкой, из которой должны печататься файлы.
1) Саповский сервер положил файлы во входящую папку
2) Скрипт обработал их imagemagic и сложил в исходящую папку
3) Другой скрипт из исходящей папки отправил их на печать (можно, наверное, это и средствами САПа сделать, но как-то смысл теряет)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Печать многостраничного tif-файла из фонового задания
СообщениеДобавлено: Пн, авг 18 2014, 22:38 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Вот тут похожее обсуждали. Ну как я понял.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Печать многостраничного tif-файла из фонового задания
СообщениеДобавлено: Вт, авг 19 2014, 12:02 
Почетный гуру
Почетный гуру

Зарегистрирован:
Пт, дек 04 2009, 12:52
Сообщения: 219
peper- написал(а):
поднимите у себя в офисе какой-нибудь локальный сервер (наверняка есть такой уже), на котором расшарьте папку (для доступа саповского сервера), настройте упоминавшийся ранее imagemagic, и слежение за папкой, из которой должны печататься файлы.
1) Саповский сервер положил файлы во входящую папку
2) Скрипт обработал их imagemagic и сложил в исходящую папку
3) Другой скрипт из исходящей папки отправил их на печать (можно, наверное, это и средствами САПа сделать, но как-то смысл теряет)
Была идея со сторонним софтом, но изначально хотелось обойтись средствами SAP. Видимо, придется прибегнуть к альтернативным решениям. Было бы неплохо, чтобы imagemagic не только конвертировал файлы, а сразу же и печатал их, иначе смысл теряется (допустим, смогу я поставить документ в SAP-спул, а при попытке распечатать получу ошибку о переполнении страничного буфера).

Пономарев Артем написал:
Вот тут похожее обсуждали.
Из приведенного обсуждения можно выделить две идеи:
1) поставить PDF в спул. К сожалению, попробовать это сделать предлагается с помощью гр.Ф.FPCOMP, но в нашей системе (4.7) она не существует... и это не говоря о том, что надо как-то TIF сначала конвертировать в PDF.
2) отправить TIF по электронной почте, которую мониторит офисный принтер (технология ePrint у HP) - вот это очень интересная идея! довольно просто в реализации, тем более, что наш принтер поддерживает эту технологию (дополнительного оборудования не требуется). Обсужу это с руководством.
Пока не ясно, поддерживает ли софт ePrint многостраничный TIF... возможно использовать конструкцию с imagemagic-ом, которую предложил peper-


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB