Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Пишем принтер для проставления штампов на все страницы / 10 сообщений из 10, страница 1 из 1
12.04.2011, 14:18
    #37211909
ART-CODE
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пишем принтер для проставления штампов на все страницы
Мне нужно на каждую страницу каждого печатаемого документа ставить некий штамп (stamp, watermark).
Причем на каждый документ - свой штамп.
(т.е. штампы динамичеки создаются - для каждого документа отдельно)

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

Про использование PDFCreator для генерации штампов и программы pdftk.exe для расстановки этих штампов
на страницы PDF файлов - я знаю. Это будет для меня аварийным вариантом, если не смогу сделать иначе. (не совсем удобен такой метод, да и лицензия на pdftk.exe не во всех случаях бесплатная.)

На данный момент программный прокси-принтер получает задание на печать в формате PJL JOB и пересылает его дальше
на настоящий принтер. Осталось перед отправкой на настоящий принтер дорисовать на каждую страницу штампик.
Задание на печать выглядит так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
%-12345X@PJL JOB
@PJL COMMENT "HP LaserJet 2300 Series PCL 6 (9100) (60.5.30.1); Microsoft Windows XP 5.1.2600.1; Unidrv 0.3.6001.22116"
@PJL COMMENT "Username: USER001; App Filename: 20110412103118.pdf; 4-12-2011"
@PJL SET STRINGCODESET=UTF8
@PJL SET JOBATTR="JobAcct1=USER001"
.....
..... // зесь тело документа
....
%-12345X@PJL EOJ
%-12345X

Кто знает как программно прочитать этот формат (на C++ или Delphi.) ?
(для отрисовки)
...
Рейтинг: 0 / 0
12.04.2011, 14:36
    #37211960
ART-CODE
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пишем принтер для проставления штампов на все страницы
Или, если кто подскажет пример, как модифицировать страницы документа в PostScript формате
- можно будет попробовать печатать в PostScript.
...
Рейтинг: 0 / 0
12.04.2011, 15:50
    #37212216
ART-CODE
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пишем принтер для проставления штампов на все страницы
Так, наконец-то нашел описание PJL
...
Рейтинг: 0 / 0
12.04.2011, 16:41
    #37212366
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пишем принтер для проставления штампов на все страницы
ART-CODE,

А где предполагается это использовать?
Не пригодится ли тот факт, что многие драйвера принтеров уже имеют функционал нанесения надписей/watermark-ов?
...
Рейтинг: 0 / 0
12.04.2011, 17:58
    #37212614
ART-CODE
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пишем принтер для проставления штампов на все страницы
многие драйвера принтеров уже имеют функционал
Попробую изучить эту возможность.
Главное - разобраться как автоматизировать подстановку надписей/watermark-ов
чтобы каждому документу она была своя. (в каждой метке должно быть прописано - по какой системе, от кого и когда получен документ).
Плохо,только что автоматизация будет сильно завязана на конкретную модель принтера.
...
Рейтинг: 0 / 0
14.04.2011, 14:52
    #37216517
ART-CODE
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пишем принтер для проставления штампов на все страницы
Чтобы не потерялись интересные ссылки по теме - сохраню их здесь:

printing-directly-to-a-network-printer
хорошая вводная статья и подборка документации по PCL

Русский в PostScript
Пример как создать Post Script файл, печатающий текст на русском языке

--
Напечатал тестовые штампики: на PCL и PostScript.
Теперь думаю, какой способ оставить в программе :)
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
23.01.2015, 18:57
    #38862046
Пишем принтер для проставления штампов на все страницы
ART-CODE, а не могли бы вы подсказать, как решили свою задачу способами PCL (PJL).Какими командами? К сожалению, PS мой принтер не поддерживает. Буду премного благодарен
...
Рейтинг: 0 / 0
23.01.2015, 20:20
    #38862076
ART-CODE
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пишем принтер для проставления штампов на все страницы
Артем Кудрявцев,
Статья printing-directly-to-a-network-printer не помогла ?
FRANK WORSLEYMoving Around The Page
Now, what if we want to print "Hello World" somewhere else on the page?
In this case you can use the PCL move commands:

<ESC>*p150X
<ESC>*p150Y
Hello World
This moves 150 units along the X and Y axes respectively.
Notice that no newline characters appear between the commands.
I write out the text using newlines for readability, but they don't appear in the actual commands sent to the printer.

Вопрос лишь в том - как распарсить исходный документ и найти то место, куда это можно вставить и не сломать документ.
Писал тогда парсер документа, но давно уже дело было, сейчас уже и не вспомню так сразу подробности.
Там стандарты все усложнялись и усложнялись - не все версии языка так просто и быстро разобрать можно.
Книга bpl13208.pdf может помочь.

Еще вариант это делать так:
любыми способами сформировать картинку документа и картинку штампа и наложить друг на друга и напечатать.

Документ превращается в картинку:
Код: sql
1.
C:\Test\ghostpcl-9.07-win32\pcl6-9.07-win32.exe -o C:\Test\Conversion\test.png -dSAFER -dBATCH -dNOPAUSE -r300 -dTextAlphaBits=4 -dGraphicsAlphaBits=1 -dFirstPage=1 -dLastPage=1 -sDEVICE=png16m C:\Test\test.pcl


т.е. в этом случае нужно раздобыть pcl6-9.07-win32.exe и перехватить и сохранить задание печати документа в файл test.pcl , далее в командной строке делаем test.png накладываем штамп и печатаем.
...
Рейтинг: 0 / 0
26.01.2015, 12:11
    #38863086
ART-CODE
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пишем принтер для проставления штампов на все страницы
Я не знаю какая версия PCL у Вас используется.
Первые версии совсем простые, а вот PCL6 уже лучше самому не разбирать, а подсмотреть в чем-то готовом.
Имеет смысл изучить исходники ghostpdl - там есть папка pcl , надеюсь поможет.
...
Рейтинг: 0 / 0
26.01.2015, 12:22
    #38863099
ART-CODE
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пишем принтер для проставления штампов на все страницы
The HP Solution Programs Portal provides tools
and services for hardware, software and firmware solution developers
for HP Printing and Digital Imaging products.

Я их SDK не пробовал, может все гораздо проще с ним :)
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Пишем принтер для проставления штампов на все страницы / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]