Штампы и маркировка документов в DIRECTUM 5.0

12 13

Если вам нужно нанести штамп на документ, например, на входящий документ - штамп о регистрации, или при печати архивных документов из системы нужно проставлять автоматически штамп «Копия», то теперь у вас есть штампы в DIRECTUM 5.0!

Ранее похожие задачи уже обсуждались на форумах сайта сообщества DIRECTUM. К примеру, тема про печать на вложенных документах.

И это еще не все :) Теперь можно добавить в штрихкод дополнительный текст о документе, например, название отдела.

Штампы на документы

Вопрос «идем мы на поводу у «бумажников» или даем пользователю тот сценарий, с которым он привык работать», - оставим за рамками этой статьи, а востребованное лабораторное решение было включено в новую версию. И теперь, если нужно нанести на документ формата PDF опознавательный признак, вам помогут штампы. Они позволяют ставить на документ произвольный текст или даже графическое изображение.

В стандартной поставке системы штампы ставятся на договорные документы в ходе типового маршрута «Согласование договорных документов», во время выполнения прикладного блока «Постановка штампа на документ». Штамп ставится на все страницы последней не устаревшей версии документа, с координатами в пиксеклях (300;100) и имеет вид:

                                                        

В свойствах прикладного блока можно указать нужный текст штампа, его угол наклона, расположение и координаты, номер версии документа, а также документ со штампом, если нужно вставить такой же штамп.

Для программной настройки штампов создана группа функций «Штампы на документы», с помощью которой можно вставлять готовый штамп (изображение) либо генерировать новый штамп, задавая различные характеристики. Например, можно задать текст штампа, его расположение и цвет.

Вставить изображение с помощью функций можно, например, так:

//Указание пути до изображения для вставки в документ

Path = 'D:\1.png'

//Вставка картинки на все страницы первой версии документа с указанными
//координатами

AddImageToPDFDocument(PDFDocument; 1; True; Path ; 200; 300; 2;)

Вставить штамп с определенным текстом и заданными свойствами можно, например, так:

//Указание пути для сохранения штампа

Path = 'D:\1.png'

//Задание текста штампа

Text = 'Утверждено в' & CR & 'ООО «Мобил-Авто»' {}

//Генерация штампа с указанным текстом, цветом, рамкой и шрифтом

GenerateTextImage(Text;1;5;'F09805';20;3;Path;0)

//Вставка штампа с указанным расположением и координатами

AddImageToPDFDocument(PDFDocument; 1; True; Path ; 200; 300; 2;)

В результате на все страницы документа с координатами в пикселях (200;300) будет вставлен такой штамп:

                                                                  

За основу будет взята первая версия документа, а итоговый документ со штампом будет сохранен в новую версию.

Дополнительный текст в штрихкодах

Изменения коснулись также технологии быстрой идентификации документов. Теперь генерируемый одномерный штрихкод может содержать в себе дополнительную информацию о документе. Это может быть, например, название структурного подразделения либо журнала регистрации.

Дополнительный текст не входит в сам штрихкод, он располагается под ним. При этом дополнительный текст можно выравнивать и задавать удобный размер шрифта. А все это благодаря функции GenerateBarCode.

Настройка дополнительного текста задается в трех последних параметрах функции GenerateBarCode в последовательности: сам текст, выравнивание, размер шрифта. Допустим, в качестве дополнительного текста нужно указать журнал регистрации, выровнять его по центру и задать размер шрифта меньше, чем у самого штрихкода:

Штрихкод = GenerateBarCode('DIRECTUM-12345-3344556'; 0; ''; 'd:\1\Штрихкод.wmf'; 5; ; ; 'исх.№ ДВХ-ЖРВН-006/2013 от 18.12.13'; 0; 100)

В результате получим такой штрихкод:

                                                                    

На нем строка «исх.№ ДВХ-ЖРВН-006/2013 от 18.12.2013» является дополнительным текстом. Подробнее о параметрах функции GenerateBarCode можно узнать в справке к функциям ISBL.

Валентина Писанова

Возможна ли простановка штампа на произвольной странице документа в нескольких местах в зависимости от наличия/отсутствия ряда условий?

Я сейчас говорю о нередко возникающей задаче визуализации подписания документа ЭП при его распечатывании. Т.е. необходимо ставить текст "Подписано ЭП" в месте простановки собственноручной подписи, при условии, что документ подписан ЭП искомого сотрудника.

Михаил Манохин
Возможна ли простановка штампа на произвольной странице документа в нескольких местах в зависимости от наличия/отсутствия ряда условий? Я сейчас говорю о нередко возникающей задаче визуализации подписания документа ЭП при его распечатывании. Т.е. необходимо ставить текст "Подписано ЭП" в месте простановки собственноручной подписи, при условии, что документ подписан ЭП искомого сотрудника.
 

Штамп возможно вставить на произвольные страницы документа. Но только по одним координатам. Т.е. функция 

AddTextToPDFDocument(PDFDocument; 1; True; 'Подписано ЭП'; 400; 500; 3; ArrayOf(1;3;5); 1; 5; '0000FF'; 14; 6; 0)

вставит штамп 'Подписано ЭП' в PDF документ по координатам x = 400, y = 500 на 1,3 и 5-ю страницу документа.

При необходимости вставить на одну страницу несколько штампов, либо если координаты по осям х и у различны на разных страницах документа, необходимо будет несколько раз вызывать функцию, заменяя координаты и номера страниц.

Валентина Писанова

Эм... а перевызов функции не затирает ранее установленные штампы?

И глупый вопрос - каким образом получить координаты конкретного места в документе?

Михаил Манохин
Эм... а перевызов функции не затирает ранее установленные штампы? И глупый вопрос - каким образом получить координаты конкретного места в документе?

1. Если указать 3-й параметр (SaveAsNewVersion) функции в False, то изменения будут сохраняться в той же версии документа, => предыдущие штампы не затрёт. 

2. Откройте документ, включите линейку, выберите "в точках". При наведении курсора мышки в нужное место у вас с краю будет отображаться координаты. 

Валентина Писанова
Откройте документ, включите линейку, выберите "в точках". При наведении курсора мышки в нужное место у вас с краю будет отображаться координаты.

Для какого формата/ПО актуально?

Михаил Манохин
Откройте документ, включите линейку, выберите "в точках". При наведении курсора мышки в нужное место у вас с краю будет отображаться координаты. Для какого формата/ПО актуально?

Речь идёт о PDF документе. Во всех известных мне просмотрщиках PDF документов  есть возможность отображения линейки. 

Валентина Писанова

В Adobe Reader не нашла:

А в другие форматы (doc, xls) вставить нельзя? Идти через доп.преобразование?

Михаил Манохин
В Adobe Reader не нашла:

В Adobe Reader действительно не нашёл (удивительно). В Adobe Reader прежде всего необходимо зайти в установки => единицы и установить "единицы страницы" в Пункты. В правом нижнем углу отобразятся размеры страницы в пикселях. Для того чтобы определить конкретные координаты относительно начала страницы Вы можете воспользоваться инструментом "измерение". Редактирование => Анализ => Измерение. 

А в другие форматы (doc, xls) вставить нельзя? Идти через доп.преобразование?

Вставка штампов на документы реализовывалась для PDF документов. В ходе типового маршрута «Согласование договорных документов», который сейчас входит в стандартную поставку сначала выполняется преобразование эл. документа в PDF и только после этого устанавливается штамп на документ.

Валентина Писанова

Инструмент "Измерение" почему-то недоступен... ладно, бог с ним...

Вставка штампов на документы реализовывалась для PDF документов

Предлагаю данную информацию явно прописать где-нибудь в начале материала.

Спасибо за ответы.

Антон Посаженков

Всем Привет! 

Пытаюсь в сценариях кодом сначала преобразовать word документ в pdf, а затем в него добавить штамп. Но выходит ошибка 

"Произошла ошибка при чтении PDF-файла. Повторите попытку.

[Expanded Information]
Функция "AddImageToPDFFile": ошибка в строке 13.
Функция "AddImageToPDFDocument": ошибка в строке 59.
Сценарий "NewTest": ошибка в строке 13."

Вот код сценария:

EDocID = 178719
EDocument = EDocuments.GetObjectByID(EDocID)
ConvertToPDFWSDLFileName = GetAssignedConst("DCTSConvertToPDFWSDL")
DCTSConvertEDocumentToPDF(ConvertToPDFWSDLFileName; EDocument) // Преобразовать в PDF

Path = GetTempFolder()&NewID()&'.png'
//Задание текста штампа
Text = 'Секретно' 
//Генерация штампа с указанным текстом, цветом, рамкой и шрифтом
GenerateTextImage(Text;1;5;'0000FF';20;3;Path;0)

//Вставка штампа с указанным расположением и координатами
AddImageToPDFDocument(EDocument; 2; True; Path ; 10; 10;2;)
//удалим изображение штампа
УдалитьФайл(Path) 

При этом интересно то, что если pdf документ, например, скан-копия (т.е. pdf картинка), то всё прекрасно работает. И ещё если делаю pdf документ через Сохранить как pdf в Word 2010, то тоже штамп добавляется. Никто не сталкивался с такой проблемой?

Алексей Язынин

Попробуйте в функции AddImaGeToPdfFile, в 13й строке заменить конструкцию:
if PDFDocument.LoadFromFile(PDFFilePath;) = FUNCTION_ERROR
на
if PDFDocument.LoadFromFile(PDFFilePath;"") = FUNCTION_ERROR

(добавились кавычки внутри скобок)

Антон Посаженков
Попробуйте в функции AddImaGeToPdfFile, в 13й строке заменить конструкцию: if PDFDocument.LoadFromFile(PDFFilePath;) = FUNCTION_ERROR на if PDFDocument.LoadFromFile(PDFFilePath;"") = FUNCTION_ERROR (добавились кавычки внутри скобок)

Спасибо большоеsmiley С пустыми кавычками действительно работает.

Владислав Горохов
(добавились кавычки внутри скобок)

Спасибо еще раз, помогло. Текущий релиз 5.0.3 все еще с этой ошибкой :-)

Авторизуйтесь, чтобы написать комментарий