-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathProgram.cs
More file actions
110 lines (97 loc) · 3.93 KB
/
Program.cs
File metadata and controls
110 lines (97 loc) · 3.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
using System;
using System.Diagnostics;
using System.Drawing;
using System.ServiceModel.Syndication;
using System.Xml;
using DevExpress.Office;
using DevExpress.XtraRichEdit;
using DevExpress.XtraRichEdit.API.Native;
namespace word_processing_dynamic_content
{
class Program
{
static void Main(string[] args)
{
SetupSecurityProtocol();
RichEditDocumentServer wordProcessor = new RichEditDocumentServer();
wordProcessor.LoadDocument("Dynamic Content.docx");
InsertDocVariableField(wordProcessor.Document);
wordProcessor.CalculateDocumentVariable += WordProcessor_CalculateDocumentVariable;
wordProcessor.Document.Fields.Update();
wordProcessor.SaveDocument("MergedDocument.docx", DocumentFormat.OpenXml);
Process.Start(new ProcessStartInfo("MergedDocument.docx") { UseShellExecute = true });
}
private static void WordProcessor_CalculateDocumentVariable(object sender, CalculateDocumentVariableEventArgs e)
{
if (e.VariableName == "rssFeed")
{
e.KeepLastParagraph = true;
e.Value = GenerateRssFeed();
if (e.Value != null)
e.Handled = true;
e.FieldLocked = true;
}
}
private static void InsertDocVariableField(Document document)
{
document.Fields.Create(document.Range.End, "DOCVARIABLE rssFeed");
}
private static RichEditDocumentServer GenerateRssFeed()
{
RichEditDocumentServer rssProcessor = new RichEditDocumentServer();
Document document = rssProcessor.Document;
AbstractNumberingList abstractNumberingList = document.AbstractNumberingLists.BulletedListTemplate.CreateNew();
document.NumberingLists.CreateNew(abstractNumberingList.Index);
SyndicationFeed feed = null;
try
{
using (XmlReader reader = XmlReader.Create("https://community.devexpress.com/blogs/MainFeed.aspx"))
{
feed = SyndicationFeed.Load(reader);
}
}
catch
{
return null;
}
document.BeginUpdate();
foreach (SyndicationItem item in feed.Items)
AddSyndicationItem(document, item);
document.EndUpdate();
return rssProcessor;
}
static void AddSyndicationItem(Document document, SyndicationItem item)
{
Paragraph paragraph = document.Paragraphs.Append();
paragraph.LineSpacing = 1f;
paragraph.ListIndex = 0;
paragraph.SpacingAfter = 3;
DocumentRange range = document.InsertText(paragraph.Range.Start, item.Title.Text);
CharacterProperties properties = document.BeginUpdateCharacters(range);
properties.FontSize = 12f;
properties.FontName = "Segoe UI";
document.EndUpdateCharacters(properties);
if (item.Links.Count > 0)
{
Hyperlink hyperlink = document.Hyperlinks.Create(range);
hyperlink.NavigateUri = item.Links[0].Uri.ToString();
}
range = document.InsertText(range.End, String.Format("{0}Published {1}", Characters.LineBreak, item.PublishDate.DateTime));
properties = document.BeginUpdateCharacters(range);
properties.FontSize = 8f;
properties.FontName = "Segoe UI";
properties.ForeColor = Color.Gray;
document.EndUpdateCharacters(properties);
}
static void SetupSecurityProtocol()
{
try
{
System.Net.ServicePointManager.SecurityProtocol |= System.Net.SecurityProtocolType.Tls11 | System.Net.SecurityProtocolType.Tls12;
}
catch
{
}
}
}
}