Commit 8a6bfba5 authored by Ilya Veselov's avatar Ilya Veselov

add_print_script

parent 249c5e84
# Загрузка файла через скрипт интерпетатор
Вариант использования скрипта: генерировать печатную версию документа в PDF и загрузить её в Прочие
try{
let host = "http://127.0.0.1";
// получаем печатное представление текущей записи
// Создаём объект POST-запроса
let post = new org.apache.commons.httpclient.methods.PostMethod(host + "/Synergy/rest/api/asforms/data/print");
post.setRequestBody('{"dataUUID": "' + dataUUID + '", "format": "PDF"}');
// Создаём HTTP-клиент и авторизационные данные
let pdfPostclient = new org.apache.commons.httpclient.HttpClient();
// переменные login и password доступны из настроек скрипта интерпретатора
let creds = new org.apache.commons.httpclient.UsernamePasswordCredentials(login, password);
// Задаём клиенту способ авторизации и передаём авторизационные данные
pdfPostclient.getParams().setAuthenticationPreemptive(true);
pdfPostclient.getState().setCredentials(org.apache.commons.httpclient.auth.AuthScope.ANY, creds);
// Настраиваем заголовки запроса
post.setRequestHeader("Content-type", "application/json");
post.setRequestHeader("Content-disposition", "attachment; filename=printFile.pdf");
// Выполняем метод
let pdfPostStatus = pdfPostclient.executeMethod(post);
let pdfResult = post.getResponseBody();
// Обязательно закрываем соединение
post.releaseConnection();
// Загружаем файл печатного представления в раздел Прочие текущего документа
// Для этого сначала стартуем загрузку файла
let uploadGet = new org.apache.commons.httpclient.methods.GetMethod(host + "/Synergy/rest/api/storage/start_upload");
let client = new org.apache.commons.httpclient.HttpClient();
creds = new org.apache.commons.httpclient.UsernamePasswordCredentials(login, password);
client.getParams().setAuthenticationPreemptive(true);
client.getState().setCredentials(org.apache.commons.httpclient.auth.AuthScope.ANY, creds);
uploadGet.setRequestHeader("Content-type", "application/json");
let status = client.executeMethod(uploadGet);
// Получаем HTTP-код возврата и преобразуем его в строку
// далее используем по своему усмотрению
let uploadGetResult = uploadGet.getResponseBodyAsString();
// Обязательно закрываем соединение
uploadGet.releaseConnection();
// Затем загружаем файл на сервер
let parsedUploadGetResult = JSON.parse(uploadGetResult);
let uploadPart = new org.apache.commons.httpclient.methods.PostMethod(host + "/Synergy/rest/api/storage/upload_part?file=" + parsedUploadGetResult.file);
let base64 = new org.apache.commons.codec.binary.Base64();
let encodedBytes = base64.encodeBase64(pdfResult);
let filePart = new org.apache.commons.httpclient.methods.multipart.FilePart("body",
new org.apache.commons.httpclient.methods.multipart.ByteArrayPartSource("filename.txt", encodedBytes));
let parts = new Array();
parts.push(filePart);
let entity = new org.apache.commons.httpclient.methods.multipart.MultipartRequestEntity(parts, uploadPart.getParams());
uploadPart.setRequestEntity(entity);
let uploadStatus = client.executeMethod(uploadPart);
let uploadResult = uploadPart.getResponseBodyAsString();
console.error("Upload post Result: " + uploadResult);
// Обязательно закрываем соединение
uploadPart.releaseConnection();
// Сохраняем загруженный файл в Прочих текущей записи
let attachmentCreatePost = new org.apache.commons.httpclient.methods.PostMethod(host + "/Synergy/rest/api/docflow/doc/attachment/create");
// Настраиваем заголовки запроса
attachmentCreatePost.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
attachmentCreatePost.setRequestHeader("Accept", "application/json; charset=utf-8");
attachmentCreatePost.addParameter("documentID", documentID);
attachmentCreatePost.addParameter("fileName", "result_attachment_" + dataUUID + ".pdf");
attachmentCreatePost.addParameter("path", "ase:workContainer");
attachmentCreatePost.addParameter("filePath", parsedUploadGetResult.file);
let attachmentClient = new org.apache.commons.httpclient.HttpClient();
creds = new org.apache.commons.httpclient.UsernamePasswordCredentials(login, password);
// Задаём клиенту способ авторизации и передаём авторизационные данные
attachmentClient.getParams().setAuthenticationPreemptive(true);
attachmentClient.getState().setCredentials(org.apache.commons.httpclient.auth.AuthScope.ANY, creds);
// Выполняем метод
let attachmentStatus = attachmentClient.executeMethod(attachmentCreatePost);
let attachmentResult = attachmentCreatePost.getResponseBody();
// Обязательно закрываем соединение
attachmentCreatePost.releaseConnection();
result = true;
message = 'Печатное представление загружено';
} catch(e) {
console.error("Error Message: " + e.message);
result = false;
message = e.message;
}
#Сохранение произвольного значения компонента на форме через скрипт интерпретатора
# Сохранение произвольного значения компонента на форме через скрипт интерпретатора
Вариант использования скрипта: запись реестра проходит по маршруту, в ходе которого требуется создать запись в другом реестре. При этом новая запись должна содержать данные из текущего документа и быть сохранённой в нём как ссылка на реестр.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment