powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Пишем принтер для проставления штампов на все страницы
10 сообщений из 10, страница 1 из 1
Пишем принтер для проставления штампов на все страницы
    #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
Пишем принтер для проставления штампов на все страницы
    #37211960
ART-CODE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или, если кто подскажет пример, как модифицировать страницы документа в PostScript формате
- можно будет попробовать печатать в PostScript.
...
Рейтинг: 0 / 0
Пишем принтер для проставления штампов на все страницы
    #37212216
ART-CODE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так, наконец-то нашел описание PJL
...
Рейтинг: 0 / 0
Пишем принтер для проставления штампов на все страницы
    #37212366
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ART-CODE,

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

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

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

--
Напечатал тестовые штампики: на PCL и PostScript.
Теперь думаю, какой способ оставить в программе :)
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Пишем принтер для проставления штампов на все страницы
    #38862046
ART-CODE, а не могли бы вы подсказать, как решили свою задачу способами PCL (PJL).Какими командами? К сожалению, PS мой принтер не поддерживает. Буду премного благодарен
...
Рейтинг: 0 / 0
Пишем принтер для проставления штампов на все страницы
    #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
Пишем принтер для проставления штампов на все страницы
    #38863086
ART-CODE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не знаю какая версия PCL у Вас используется.
Первые версии совсем простые, а вот PCL6 уже лучше самому не разбирать, а подсмотреть в чем-то готовом.
Имеет смысл изучить исходники ghostpdl - там есть папка pcl , надеюсь поможет.
...
Рейтинг: 0 / 0
Пишем принтер для проставления штампов на все страницы
    #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]