88 lines
2.7 KiB
C#
88 lines
2.7 KiB
C#
using ComponentsLibrary.entities;
|
||
using DocumentFormat.OpenXml;
|
||
using DocumentFormat.OpenXml.Packaging;
|
||
using DocumentFormat.OpenXml.Wordprocessing;
|
||
using System.ComponentModel;
|
||
|
||
|
||
namespace ComponentsLibrary
|
||
{
|
||
public partial class ComponentBigText : Component
|
||
{
|
||
public ComponentBigText()
|
||
{
|
||
InitializeComponent();
|
||
}
|
||
|
||
public ComponentBigText(IContainer container)
|
||
{
|
||
container.Add(this);
|
||
InitializeComponent();
|
||
}
|
||
|
||
public void CreateWordText(DocumentSymple docInfo)
|
||
{
|
||
if (string.IsNullOrEmpty(docInfo.FileUrl) || string.IsNullOrEmpty(docInfo.Title) || !CheckData(docInfo.Text))
|
||
{
|
||
throw new Exception("Не все данные заполнены");
|
||
}
|
||
|
||
using (WordprocessingDocument wordDocument = WordprocessingDocument.Create(docInfo.FileUrl, WordprocessingDocumentType.Document))
|
||
{
|
||
// Добавляем главную часть документа
|
||
MainDocumentPart mainPart = wordDocument.AddMainDocumentPart();
|
||
mainPart.Document = new Document();
|
||
Body body = mainPart.Document.AppendChild(new Body());
|
||
|
||
// Создаем параграф для заголовка
|
||
Paragraph titleParagraph = new Paragraph();
|
||
|
||
// Задаем свойства параграфа (центровка и отступ)
|
||
ParagraphProperties paragraphProperties = new ParagraphProperties();
|
||
paragraphProperties.AppendChild(new Justification() { Val = JustificationValues.Center });
|
||
|
||
// Применяем свойства параграфа к заголовку
|
||
titleParagraph.AppendChild(paragraphProperties);
|
||
|
||
// Создаем "бегунок" текста
|
||
Run titleRun = new Run();
|
||
|
||
// Устанавливаем свойства "бегунка" (шрифт, размер, жирный шрифт)
|
||
RunProperties runProperties = new RunProperties();
|
||
runProperties.AppendChild(new Bold());
|
||
runProperties.AppendChild(new FontSize() { Val = "48" }); // Размер шрифта, 24pt
|
||
|
||
// Применяем свойства к тексту
|
||
titleRun.AppendChild(runProperties);
|
||
|
||
// Добавляем текст заголовка
|
||
titleRun.AppendChild(new Text(docInfo.Title));
|
||
|
||
// Добавляем "бегунок" с текстом в параграф
|
||
titleParagraph.AppendChild(titleRun);
|
||
|
||
// Добавляем параграф в тело документа
|
||
body.AppendChild(titleParagraph);
|
||
|
||
|
||
foreach (var line in docInfo.Text)
|
||
{
|
||
Paragraph paragraph = new Paragraph(new Run(new Text(line)));
|
||
body.Append(paragraph);
|
||
}
|
||
mainPart.Document.Save();
|
||
}
|
||
}
|
||
|
||
bool CheckData(string[] data)
|
||
{
|
||
for (int i = 0; i < data.Length; i++)
|
||
{
|
||
if (string.IsNullOrEmpty(data[i])) return false;
|
||
}
|
||
|
||
return true;
|
||
}
|
||
}
|
||
}
|