powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / Тест (архив) [закрыт] [закрыт для гостей] / Проверка связи
2 сообщений из 2, страница 1 из 1
Проверка связи
    #22199729
Kurchatov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что это?
жуть
...
Рейтинг: 0 / 0
Проверка связи
    #22199757
Kurchatov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PDF Tools\PDF Tools\Workflow

using System;
using System.Activities;
using System.Collections.Generic;
using System.IO;
using System.Web.Script.Serialization;
using iTextSharp.text.pdf;
using Microsoft.Xrm.Sdk.Workflow;
using Npf.Common.Workflow;

namespace Npf.PdfTools.Workflow
{
/// <summary>
/// Заполнение шаблона PDF.
/// </summary>
public class FillPdfTemplate : WorkflowBase
{
/// <inheritdoc />
protected override string LoggerName => "PDF Tools";

/// <summary>
/// PDF-шаблон в виде строки в кодировке BASE64.
/// </summary>
[Input("Template PDF File (BASE64 String)")]
[RequiredArgument]
public InArgument<string> TemplateFileString { get; set; }

/// <summary>
/// Параметры для заполнения шаблона в формате строки JSON.
/// </summary>
[Input("Parameters (JSON String)")]
[RequiredArgument]
public InArgument<string> ParametersString { get; set; }

/// <summary>
/// Результирующий PDF-файл.
/// </summary>
[Output("Result PDF File (BASE64 String)")]
public OutArgument<string> ResultFileString { get; set; }

/// <inheritdoc />
protected override void Execute(Context context)
{
var templateFileString = TemplateFileString.Get(context);
var parametersString = ParametersString.Get(context);

var parameters = new JavaScriptSerializer().Deserialize<Dictionary<string, object>>(parametersString);

using (var templateStream = new MemoryStream(Convert.FromBase64String(templateFileString)))
using (var templateReader = new PdfReader(templateStream))
using (var resultStream = new MemoryStream())
{
using (var resultStamper = new PdfStamper(templateReader, resultStream))
{
// Получаем ссылку на форму с полями.
var form = resultStamper.AcroFields;
// Получаем все шрифты формы.
var fonts = templateReader.GetFormFonts();
// Устновка значения полей
foreach (var parameter in parameters)
{
if (form.GetFieldType(parameter.Key) == AcroFields.FIELD_TYPE_TEXT)
form.SetFieldWithFont(templateReader, fonts, parameter.Key, parameter.Value.ToString());
else
form.SetField(parameter.Key, parameter.Value.ToString());
}
// Установка запрета на редактирование полей.
resultStamper.FormFlattening = true;
}
var resultArray = resultStream.ToArray();
ResultFileString.Set(context, Convert.ToBase64String(resultArray));
}
}
}
}
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Тест (архив) [закрыт] [закрыт для гостей] / Проверка связи
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (1): Анонимы (1)
Читали форум (1): Анонимы (1)
Пользователи онлайн (8): Анонимы (6), Yandex Bot, Bing Bot 2 мин.
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]