Сканирование в PDF из РКК

12 26

Предлагаю решение одной часто встречающейся ситуации в модуле «Канцелярия». Кнопка «Сканировать» в РКК позволяет отсканировать и сохранить документ в формате TIFF. При необходимости документ можно сохранять в форматы JPG, PNG, BMP. Сохранять во всеми любимый формат PDF, к сожалению, DIRECTUM пока не научился. А так хотелось бы! Предлагаемое решение не претендует на изящность, но решает имеющийся вопрос.

 

Решение основано на использовании функции DCTSConvertFileToPDF. Функция посылает созданный TIFF-файл в службу преобразования и возвращает PDF-версию документа, которая и  сохраняется в DIRECTUM. В случае, если преобразовать не удалось, в DIRECTUM сохранится исходный TIFF-файл.

Для реализации механизма потребуется немного скорректировать действие «Scan» справочника «Регистрационно-контрольные карточки». Привожу код, который реализует описанный механизм: 

  DCTSConvertToPDFWSDL = GetAssignedConst("DCTSConvertToPDFWSDL")
  PDFFilePath = Replace(FilePath; ".tiff"; ".pdf")
  ConvertingToPDFFailed = FALSE

  try
    DCTSConvertFileToPDF(DCTSConvertToPDFWSDL; FilePath; PDFFilePath)
  except
    ConvertingToPDFFailed = TRUE
  endexcept 

  if ConvertingToPDFFailed
    ScannedDoc = EDocuments.CreateNewFromFile(EDocTypeCode; EDocKindCode; GetEditorCodeByExtension('tiff'); FilePath; FALSE)
  else
    ScannedDoc = EDocuments.CreateNewFromFile(EDocTypeCode; EDocKindCode; GetEditorCodeByExtension('pdf'); PDFFilePath; FALSE)
  endif           

Ну и в конце не забываем почистить следы:

  DeleteFile(PDFFilePath) 

У приведенной реализации есть свои плюсы и минусы, но если кому-нибудь она поможет, то значит этот материал был небесполезен. Всем удачи!

script_scan.txt (7,22 Кб)

12
Авторизуйтесь, чтобы оценить материал.
1
Артем Моисеев

было бы классно, если бы Вы показали конечный измененный вариант скрипта

Артем Моисеев

Отлично! Спасибо

Константин Тарасов

Подскажите пример заполнения констант "DCTSConvertToPDFWSDL" и "DCTSExecutionTimeout" С пустыми преобразования не происходит. Да и с заполнеными то же :(

Айрат Сибгатуллин

Константа: DCTSConvertToPDFWSDL

Значение: http://DIRECTUM:40110?wsdl

 

 

Константа: DCTSExecutionTimeout

Значение: 100000

Константин Тарасов

К сожалению, получить pdf из tiff в Директуме не получится. Сначала надо файл полученный после сканирования (в формате tiff) вставить в документ word. А вот документы в формате word ф-ция DCTSConvertFileToPDF прекрасно переводит в pdf. И ещё строка PDFFilePath = Replace(FilePath; ".tiff"; ".docx")  не создаёт файл в формате word.

Айрат Сибгатуллин

Константин, "не получится" или "не получилось"? Большая разница.

"Гонять" через DOC - это изначально не вариант.

Константин Тарасов

Айрат, не получилось и не получится. И вот почему: функция DCTSGetConvertToPDFSupportedExtensions(http://DIRECTUM:40110?wsdl) возвращает [txt, ppt, pptx, doc, docx, xls, xlsx, rtf]. В этом массиве нет "tiff" и поэтому тратить время на то, что функция DCTSConvertFileToPDF совершит преобразования в pdf не имеет смысла. Т.е. "не получится". Тема интересная и важная, но положительных отзывов у статьи нет, видимо не Я один потратил зря время. А вот если получится скан "запихнуть" в docx то преобразование уже будет возможно. Кто-нибудь знает "рабочий" вариант сканирования в файл pdf? Подскажите как программно добавить из файла картинки в файл-документ word?

Иван Чурбаков

Эта функция должна возвращать расширения, которые может обработать служба преобразования. Они прописываются в файле DCTSTransformationService.exe.config. У меня там много расширений прописаны, в том числе tif и tiff - преобразование работает успешно. Проверял только через проводник системы, не используя данную разработку (так что дефекты в данной разработке не искал).

Айрат Сибгатуллин

2Константин: 

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

Айрат Сибгатуллин

Если уж совсем лень читать мануалы на систему, то вот работающая строка с расширениями. Ощущаете разницу?

Extensions="txt,ppt,pptx,doc,docx,xls,xlsx,rtf,tif,tiff,jpg,jpeg,png,gif,bmp" 
Константин Тарасов

Айрат и Иван спасибо. Всё заработало. Благодарю за быстрый ответ.

Дмитрий Кладов

Айрат, ценный сценарий! Попробую применить к 4.9.1

Антон Кубасов

Заранее извиняюсь если что вдруг не так понял. Для работы системы необходимо внести изменения в:

1)действие «Scan» справочника «Регистрационно-контрольные карточки»

2)файл DCTSTransformationService.exe.config.

по идее всё должно работать, но упорно на выходе получаю tiff.

Айрат Сибгатуллин

Службу DCTSTransformationService перезапускали?

Антон Кубасов

Да. Результат тот же. может быть есть ещё какие-нибудь нюансы?

Айрат Сибгатуллин

Попробуйте вручную выполнить преобразование word-документа в PDF. Для этого создайте версию word-документа "с преобразованием в PDF". Если и вручную не получается, то проблема глобальная. Напишите, каков результат.

Алексей Шалахов

Айрат у меня к сожалению тоже не заработало

сегодня целый день упражнялся с службой преобразования и благодаря техподдержке у меня сейчас при получении документа со сканера  pdfка создается а по кнопке сканировать так и не заработала. Ваш скрипт во вложении я целиком заменил в действии скан (может там надо было что то локализовать?)

Алексей Шалахов

версия 4.9.1

Айрат Сибгатуллин

Думаю стоило менять не весь код кнопки "Сканировать", а только скорректировать тот блок, который я привел в статье.

Алексей Шалахов

попробовал тот же результат такое ощущение что файлы не передаются службе, в логе службы ошибок нет

Алексей Шалахов

Айрат у меня все заработало но вылез один глюк при сканировании документа в альбомной ориентации pdfка получается в книжной и соответственное пол листа обрезается, я так полагаю что это вопрос к техподдержке по процесу преобразования в pdf  но все же хотел уточнить у Вас, может тоже такая проблемма вставала

Алексей Шалахов

вопрос закрыт надо было в настройках печати приложения открывающего  tiff поставить автоматическую ориентацию

Валерий Малых

Недавно тоже встала проблема преобразования. Для начала поправил конфиг. Попробовал создать документ со сканера (не из ркк) с преобразованием в pdf. Выдает ошибку. Если воспользоваться кодом приведенным выше и убрать оттуда обработку исключений, то получаем ту же ошибку. Подскажите куда копать. В логах примерно следующее:
(под катом)

Ошибка при выполнении преобразования "В PDF c возможностью печати и копирования". Указанному файлу не сопоставлено ни одно приложение для выполнения данной операции в System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo) в System.Diagnostics.Process.Start() в NpoComputer.Dcts.Transformation.PdfTransformation.PdfConverters.NovaPdfPrinter.PrintStart(String InputFileName, Object TransformationSettings) в NpoComputer.Dcts.Transformation.PdfTransformation.PdfConverters.NovaPdfPrinter.InternalConvert(ConvertedFileInfo FileInfo, Int32 Timeout, Object TransformationSettings, Object AdditionalInfo) Процесс печати прерван. Входной файл "C:\Users\836D~1\AppData\Local\Temp\2\ec4f8613-df0b-4297-8279-07bd9864d643\ec4f8613-df0b-4297-8279-07bd9864d643.tiff". в NpoComputer.Dcts.Transformation.PdfTransformation.PdfConverters.NovaPdfPrinter.InternalConvert(ConvertedFileInfo FileInfo, Int32 Timeout, Object TransformationSettings, Object AdditionalInfo) в NpoComputer.Dcts.Transformation.BaseConverter.ConvertInThread(Object Params) __________________________________________________ Category: Error Priority: -1 EventId: 0 Severity: Error Title: Machine: VST-DT Application Domain: DCTSTransformationService.exe Process Id: 4672 Process Name: C:\Program Files (x86)\DIRECTUM Company\DIRECTUM Transformation Services\DCTSTransformationService.exe Win32 Thread Id: 400 Thread Name: IS-Builder PDF Transformation Service: Ошибка печати, файл не был создан. Конвертируемый файл: "C:\Users\836D~1\AppData\Local\Temp\2\ec4f8613-df0b-4297-8279-07bd9864d643\ec4f8613-df0b-4297-8279-07bd9864d643.tiff". в NpoComputer.Dcts.Transformation.BaseConverter.CheckOutputFile(String ServiceName, ConvertedFileInfo FileInfo) в NpoComputer.Dcts.Transformation.BaseConverter.Convert(String ServiceName, ConvertedFileInfo FileInfo, Int32 TimeOut, ITransformationInfo CurrentTransformation, Object AdditionalInfo) Ошибка при выполнении преобразования "В PDF c возможностью печати и копирования". в NpoComputer.Dcts.Transformation.BaseConverter.Convert(String ServiceName, ConvertedFileInfo FileInfo, Int32 TimeOut, ITransformationInfo CurrentTransformation, Object AdditionalInfo) в NpoComputer.Dcts.Transformation.ConvertProcess.ConvertFile(Byte[]& DocumentBody, String Extension, String TransformationName, Object AdditionalInfo) __________________________________________________ Category: Error Priority: -1 EventId: 0 Severity: Error Title: Machine: VST-DT Application Domain: DCTSTransformationService.exe Process Id: 4672 Process Name: C:\Program Files (x86)\DIRECTUM Company\DIRECTUM Transformation Services\DCTSTransformationService.exe Win32 Thread Id: 4324 Thread Name:
Андрей Подкин
Подскажите куда копать.
Копать в сторону 
Указанному файлу не сопоставлено ни одно приложение для выполнения данной операции
Например, установить приложение для выполнения shell-команды print.
Наталия Рвачева
Алексей Шалахов 30 июля 2013 в 17:29 вопрос закрыт надо было в настройках печати приложения открывающего  tiff поставить автоматическую ориентацию

Проблема аналогичная. Расскажите, пожалуйста, подробнее как это настроить? На сервере стоит программа по умолчанию irfanview. 

Также возник вопрос, чтобы данный функционал отрабатывал на клиентском компьютере, необходим установленный MS Toolkit. Периодически сканирование в pdf "ломается" (сканирует в tiff), приходится переустанавливать MS Toolkit. Каковы возможны причины такой нестабильности?

На компьютере пользователя должен быть установлен Microsoft SOAP Toolkit 3.0

SoapClient = CreateObject("MSSOAP.SoapClient30")

 

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