Данный проект - библиотека PostScript функций и примеры сценариев для генерациии цифрового негатива для производства полимерных клише для поверительных и калибровочных клейм.
Для внесения изменений в пакет и повторной сборки проекта потребуются следующие продукты:
Под Windows:
- make версии 3.82 или старше (под CygWin, MSYS2)
- m4
- iconv
- GhostScript
- текстовый редактор, настоятельно рекомендую VSCode
Под Linux:
- make версии 3.82 или старше
- m4
- iconv
- PowerShellCore
- GhostScript
- VSCode
Для VSCode рекомендую установить расширения, указанные в рабочей области.
Существенно удобнее будет работать с репозиторием, имея установленный git
.
Далее следует скопировать репозиторий проекта либо как zip архив из последнего релиза, либо клонировав git репозиторий. Последнее - предпочтительнее.
Для подготовки среды (установки необходимых приложений)
следует воспользоваться сценарием install.ps1
(запускать от имени администратора):
install\install.ps1 -Scope Machine -GUI -Verbose
либо
install\install.cmd
Указанный сценарий установит все необходимые компоненты.
Для интерактивного контроля процесса установки можно использовать параметр -Confirm
:
install\install.ps1 -Scope Machine -GUI -Verbose -Confirm
Указанный параметр вынуждает сценарий перед внесением любых изменений запрашивать подтверждение у пользователя.
Для дальнейшей работы необходимо включить в переменную PATH
каталоги с исполняемыми файлами установленных средств.
Если Вы работаете не под учётной записью администратора, тогда Вам так же
потребуется выполнить install.ps1
для изменения переменной окружения PATH
для
Вашей учётной записи:
install\install.ps1 -Scope User -Verbose
либо
install\install_for_user.cmd
Сборка проекта осуществляется следующим образом:
make
либо
make all
Для доступа к справке по целям make
:
make help
Репозиторий проекта размещён по адресу github.com/Metrolog/marks. Стратегия ветвления - Git Flow.
При необходимости внесения изменений в сам проект предложите Pull Request в основной
репозиторий в ветку develop
.
Собственно PostScript файл должен быть сохранён в кодировке Windows-1251.
Для подготовки файла с оттисками клейм для фотовывода файл примера следует скопировать в папку stamps/sources (папку sources необходимо создать) и назвать по имени заказа (в имени файлов не допускаются пробелы, только латинские буквы и цифры, знаки пунктуации.) После чего запускаем редактор (VSCode) и вносим изменения в область, отмеченную комментариями:
%------------------------------------------------------------------------------
% для подготовки оттисков править код ниже !!!
%------------------------------------------------------------------------------
[
2017
[ [ 3 ] quarters ]
(СП)
[ 1 256 range ]
18.0 mm
false % поверка в эксплуатации или после ремонта
/verification_stamp_upath
/csm-marks /ProcSet findresource /create_stamps get exec
]
/boxes /ProcSet findresource /GetPageBBox get exec
2 mm
/graphics-alignments /ProcSet findresource /align_upaths_in_BBox get exec
%------------------------------------------------------------------------------
% конец области для кода генерации оттисков
%------------------------------------------------------------------------------
Приведённый выше фрагмент - для генерации оттисков поверительных клейм. Допустимо в одном файле смешивать и поверительные, и калибровочные клейма:
[
2017
[ [ 3 ] quarters ]
(СП)
[ 1 256 range ]
18.0 mm
false % поверка в эксплуатации или после ремонта
/verification_stamp_upath
/csm-marks /ProcSet findresource /create_stamps get exec
2017
[ [ 1 12 range ] months [ 1 4 range ] quarters year ]
(СП)
[ 1 ]
18.0 mm
true % при выпуске из производства
/calibration_stamp_upath
/csm-marks /ProcSet findresource /create_stamps get exec
]
/boxes /ProcSet findresource /GetPageBBox get exec
2 mm
/graphics-alignments /ProcSet findresource /align_upaths_in_BBox get exec
Выше приведён пример, генерирующий поверительные клейма на 3ий квартал 2017 года, с шифром поверительного клейма "СП", диаметром 18 мм, для индивидуальных знаков поверителя от 1 до 256. А так же - квадратные калибровочные клейма на все месяцы, кварталы и год 2017 года, с шифром клейма "СП", размером 18 мм, для индивидуального знака поверителя с номером 1.
В целях совместимости с последующими версиями лучше передавать параметры в словаре:
[
<<
/year 2017
/period % [ [ 1 2 3 6 range 10 ] months [ 1 4 range ] quarters ]
[ [ 3 ] quarters ]
/id (СП)
/sign [ 1 256 range ]
/functor /verification_stamp_upath
>>
/csm-marks /ProcSet findresource /create_stamps get exec
]
/boxes /ProcSet findresource /GetPageBBox get exec
2 mm
/graphics-alignments /ProcSet findresource /align_upaths_in_BBox get exec
Примеры для подготовки оттисков калибровочных клейм, фигурных клейм, можно найти в других тестовых файлах.
Раскладка на листе выполняется автоматически, разбиение на страницы - так же.
При раскладке анализируются:
- форма оттиска (на текущий момент определяется только круглая форма)
- размеры оттисков
Используется раскладка в строки. Если возможна оптимизация при шахматной раскладке - используется шахматная раскладка. Она будет использована в следующих случаях:
- в двух соседних строках все оттиски одного размера
- и все - одинаковой формы, поддерживающей шахматную раскладку (на сегодня - только круглая форма поддерживает).
Если хотя бы одно из условий не выполняется - используется раскладка в строки.
Как видно, при передаче параметров через словарь некоторые параметры указывать не обязательно. При этом используются значения по умолчанию.
/year
- целое число в пределах от 2000 до 2099, год клейма.
/period
- период клейма (месяц, квартал, год).
Если требуется только годовое клеймо, укажите:
[ year ]
Для конкретного квартала:
[ [ 3 ] quarters ]
Для нескольких кварталов:
[ [ 1 2 3 ] quarters ]
Либо то же самое, но - диапазоном:
[ [ 1 3 range ] quarters ]
Аналогично для месяцев:
[ [ 1 ] months ]
[ [ 1 2 3 7 8 9 10 11 12 ] months ]
[ [ 1 3 range 7 12 range ] months ]
А теперь - для месяцев, кварталов и года вместе:
[ [ 1 12 range ] months [ 1 4 range ] quarters year ]
По умолчанию - годовое клеймо.
/id
- шифр клейма.
/sign
- номер знака поверителя / калибровщика.
Перечисляем номера:
[ 1 2 3 4 5 6 7 10 256 ]
Либо то же самое, используя диапазоны:
[ 1 7 range 10 256]
По умолчанию - 0
(клеймо без знака).
/size
- размер клейма, по умолчанию - 18 мм.
/is_for_production
- логический:
true
- клеймо для поверки при выпуске из производстваfalse
- для периодической поверки
По умолчанию - true
.
/functor
- генератор оттиска знака:
/verification_stamp_upath
- поверительное клеймо/verification_stamp_rhombus_upath
- ромбовидное ударное поверительное клеймо/calibration_stamp_upath
- калибровочное клеймо
По умолчанию - /verification_stamp_upath
(поверительное клеймо).
При необходимости дополнительной настройки генератора оттисков следует использовать следующий фрагмент кода:
%%BeginSetup
<<
/MirrorPrint true
/NegativePrint true
>> /csm-marks-params /ProcSet findresource /setmarksparams get exec
%%EndSetup
Приведённые выше фрагмент включает генерацию файла в негативе и с зеркальным отражением оттисков.
Поддерживаемые параметры:
MirrorPrint
:true
,false
. Включает (true
) или отключает (по умолчаниюfalse
) зеркальное отображение оттисковNegativePrint
:true
,false
. Включает (true
) или отключает (по умолчаниюfalse
) вывод оттисков в негативе
Для каждого заказа рекомендую создавать отдельный postscript файл.
Для преобразования .ps файлов в .pdf следует выполнить
make
из корневого каталога репозитория проекта. Файлы будут .pdf будут созданы в каталоге stamps/release.
Возможность пакетной генерации файлов обеспечена начиная с версии 2.3.
Для каждого заказа необходимо готовить отдельный makefile. Для подготовки сценария пакетной генерации следует скопировать файл примера в папку stamps/sources (папку sources необходимо создать) и назвать по имени заказа.
Ниже приведён полный текст файла сценария:
#!/usr/bin/make
ifndef __itg_stamps_included
$(error Do not run this file directly. Run 'Makefile' in root project folder.)
endif
# разрешение генерируемых файлов, dpi. По умолчанию - 2400.
STAMPS_DPI := 1200
# зеркальный вывод. По умолчанию - $(false).
STAMPS_MIRROR := $(true)
# негативный вывод. По умолчанию - $(false).
STAMPS_NEGATIVE:= $(true)
STAMPS_YEAR := 2018
STAMPS_ID := СП
STAMPS_PERIODS := $(call months,$(call range,1,12)) $(call quarters,$(call range,1,4)) $(call year)
STAMPS_SIGNS := $(call range,1,2)
STAMPS_SIZE := 18 mm
STAMPS_VARIANT := 1
# тип клейма
# для калибровочного клейма
# STAMPS_TYPE := calibration_stamp
# для поверительного клейма
STAMPS_TYPE := verification_stamp
# для поверительного фигурного клейма
# STAMPS_TYPE := verification_stamp_rhombus
Выше приведён пример, генерирующий все месячные, квартальные и годовые поверительные клейма 2018 года, с шифром поверительного клейма "СП", диаметром 18 мм, для индивидуальных знаков поверителя от 1 до 2.
STAMPS_YEAR
- целое число в пределах от 2000 до 2099, год клейма.
STAMPS_PERIODS
- период клейма (месяц, квартал, год).
Если требуется только годовое клеймо, укажите:
$(call year)
Для конкретного квартала:
$(call quarters,3)
Для нескольких кварталов:
$(call quarters,1 2 3)
Либо то же самое, но - диапазоном:
$(call quarters,$(call range,1,3))
[ [ 1 3 range ] quarters ]
Аналогично для месяцев:
$(call months,1)
$(call months,1 2 3 7 8 9 10 11 12)
$(call months,$(call range,1,3) $(call range,7,12))
А теперь - для месяцев, кварталов и года вместе:
$(call months,$(call range,1,12)) $(call quarters,$(call range,1,4)) $(call year)
По умолчанию - годовое клеймо.
STAMPS_ID
- шифр клейма.
STAMPS_SIGNS
- номер знака поверителя / калибровщика.
Перечисляем номера:
1 2 3 4 5 6 7 10 256
Либо то же самое, используя диапазоны:
$(call range,1,7) 10 256
По умолчанию - 0
(клеймо без знака).
STAMPS_SIZE
- размер клейма, по умолчанию - 18 мм.
STAMPS_VARIANT
:
1
- клеймо для поверки при выпуске из производства2
- для периодической поверки
По умолчанию - 2
.
STAMPS_TYPE
- генератор оттиска знака:
verification_stamp
- поверительное клеймоverification_stamp_rhombus
- ромбовидное ударное поверительное клеймоcalibration_stamp
- калибровочное клеймо
По умолчанию - verification_stamp
(поверительное клеймо).
При необходимости дополнительной настройки генератора оттисков следует использовать следующий фрагмент кода:
STAMPS_DPI := 1200
STAMPS_MIRROR := $(true)
STAMPS_NEGATIVE:= $(true)
Приведённые выше фрагмент включает генерацию файла в негативе и с зеркальным отражением оттисков.
Поддерживаемые параметры:
STAMPS_DPI
: разрешение (в точках на дюйм). По умолчанию - 2400 dpi.STAMPS_MIRROR
:$(true)
,$(false)
. Включает ($(true)
) или отключает (по умолчанию$(false)
) зеркальное отображение оттисковSTAMPS_NEGATIVE
:$(true)
,$(false)
. Включает ($(true)
) или отключает (по умолчанию$(false)
) вывод оттисков в негативе
Поддерживается генерация:
По умолчанию генерируются файлы всех типов. Можно указать необходимые типы файлов:
make all MFSTAMPSFORMATS='pcx tif'
Например, для генерации только TIFF файлов:
make all MFSTAMPSFORMATS='tif'
Для каждого заказа рекомендую создавать отдельный файл. Кроме того, в пакетном режиме нельзя смешивать разные типы оттисков (поверительные, калибровочные и т.д.), для каждого типа оттисков необходимого готовить отдельные файлы.
- Илья Никуленко: при подготовке знаков поверителей в формате Type 3 использованы в качестве основы файлы True Type шрифта ГОСТ 2930-62, подготовленные Ильёй Никуленко.
Полный текст лицензионного соглашения приведён в файле LICENSE.