|
Проверка связи
|
|||
---|---|---|---|
#18+
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)); } } } } ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2020, 09:23 |
|
|
Start [/forum/topic.php?fid=4&tid=1329231]: |
0ms |
get settings: |
1ms |
get forum list: |
6ms |
check forum access: |
0ms |
check topic access: |
0ms |
track hit: |
24ms |
get topic data: |
3ms |
get forum data: |
0ms |
get page messages: |
10ms |
update_topic_read_status (1329231): 18.09.2020 09:23:00: |
0ms |
get tp. blocked users: |
0ms |
get online users: |
17ms |
check new: |
1ms |
others: | 93ms |
total: | 155ms |
0 / 0 |