Если вам нужно нанести штамп на документ, например, на входящий документ - штамп о регистрации, или при печати архивных документов из системы нужно проставлять автоматически штамп «Копия», то теперь у вас есть штампы в 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.
Возможна ли простановка штампа на произвольной странице документа в нескольких местах в зависимости от наличия/отсутствия ряда условий?
Я сейчас говорю о нередко возникающей задаче визуализации подписания документа ЭП при его распечатывании. Т.е. необходимо ставить текст "Подписано ЭП" в месте простановки собственноручной подписи, при условии, что документ подписан ЭП искомого сотрудника.
Штамп возможно вставить на произвольные страницы документа. Но только по одним координатам. Т.е. функция
вставит штамп 'Подписано ЭП' в PDF документ по координатам x = 400, y = 500 на 1,3 и 5-ю страницу документа.
При необходимости вставить на одну страницу несколько штампов, либо если координаты по осям х и у различны на разных страницах документа, необходимо будет несколько раз вызывать функцию, заменяя координаты и номера страниц.
Эм... а перевызов функции не затирает ранее установленные штампы?
И глупый вопрос - каким образом получить координаты конкретного места в документе?
1. Если указать 3-й параметр (SaveAsNewVersion) функции в False, то изменения будут сохраняться в той же версии документа, => предыдущие штампы не затрёт.
2. Откройте документ, включите линейку, выберите "в точках". При наведении курсора мышки в нужное место у вас с краю будет отображаться координаты.
Для какого формата/ПО актуально?
Речь идёт о PDF документе. Во всех известных мне просмотрщиках PDF документов есть возможность отображения линейки.
В Adobe Reader не нашла:
А в другие форматы (doc, xls) вставить нельзя? Идти через доп.преобразование?
В Adobe Reader действительно не нашёл (удивительно). В Adobe Reader прежде всего необходимо зайти в установки => единицы и установить "единицы страницы" в Пункты. В правом нижнем углу отобразятся размеры страницы в пикселях. Для того чтобы определить конкретные координаты относительно начала страницы Вы можете воспользоваться инструментом "измерение". Редактирование => Анализ => Измерение.
А в другие форматы (doc, xls) вставить нельзя? Идти через доп.преобразование?
Вставка штампов на документы реализовывалась для 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
(добавились кавычки внутри скобок)
Спасибо большое С пустыми кавычками действительно работает.
Спасибо еще раз, помогло. Текущий релиз 5.0.3 все еще с этой ошибкой :-)
Авторизуйтесь, чтобы написать комментарий