Конвертация TXT файла в PDF документ в .NET

Категория: PDFOffice.NET

1 июля 2021

Часто требуется сконвертировать форматированный текст в PDF документ. Если текст имеет сложное форматирование, то может потребоваться много времени и кода, чтобы сконвертировать форматированный текст в PDF контент.

В VintaSoft Imaging .NET SDK 10.1 появилась возможность редактировать существующие DOCX и XLSX документы. Эту возможность можно использовать, чтобы избавиться от необходимости программно конвертировать форматированный текст в PDF контент. Вместо программной конвертации форматированного текста можно создать DOCX документ с необходимым форматированием и вставить необходимый текстовый контент в уже отформатированный документ. После этого созданный DOCX документ легко может быть сконвертирован в PDF с помощью VintaSoft Imaging .NET SDK.

Исходя из вышесказанного можно легко создать конвертер TXT файлов в PDF документы используя следующие шаги:
1. Используя MS Word создать DOCX документ txtTemplate.docx:
2. В коде приложения:
Данный подход обеспечивает гибкость и легкость настройки конвертера: для изменения параметров выходного документа требуется только изменить параметры в шаблоне txtTemplate.docx используя MS Word.


Вот пример кода который конвертирует TXT файл в PDF документ:
// Проект, который использует данный код, должен иметь ссылки на следующие .NET сборки:
// - Vintasoft.Imaging
// - Vintasoft.Imaging.Office.OpenXml
// - Vintasoft.Imaging.Pdf

/// <summary>
/// Тестирует конвертацию TXT файла в PDF документ.
/// </summary>
public static void Test()
{
    ConvertTxtFileToPdfDocument("Products.txt", "txtTemplate.docx", "Products.pdf");
}

/// <summary>
/// Сконвертировать указанный текстовый файл в PDF документ.
/// </summary>
/// <param name="txtFilename">Имя текстового файла.</param>
/// <param name="docxTemplateFilename">Имя шаблонного DOCX файла.</param>
/// <param name="outputPdfFilename">Имя результирующего PDF файла.</param>
public static void ConvertTxtFileToPdfDocument(string txtFilename, string docxTemplateFilename, string outputPdfFilename)
{
    string text = System.IO.File.ReadAllText(txtFilename, System.Text.Encoding.Unicode);
    ConvertTextToPdfDocument(System.IO.Path.GetFileName(txtFilename), text, docxTemplateFilename, outputPdfFilename);
}

/// <summary>
/// Сконвертировать указанный текст в PDF документ.
/// </summary>
/// <param name="text">Текст.</param>
/// <param name="title">Заголовок документа.</param>
/// <param name="docxTemplateFilename">Имя шаблонного DOCX файла.</param>
/// <param name="outputPdfFilename">Имя результирующего PDF файла.</param>
public static void ConvertTextToPdfDocument(string title, string text, string docxTemplateFilename, string outputPdfFilename)
{
    // создать объект DocxDocumentEditor и указать DOCX файл в качестве шаблона документа
    using (Vintasoft.Imaging.Office.OpenXml.Editor.DocxDocumentEditor editor =
        new Vintasoft.Imaging.Office.OpenXml.Editor.DocxDocumentEditor(docxTemplateFilename))
    {
        // заменить текст "[title]" на заголовок документа
        editor.Body.ReplaceText("[title]", title);

        // если тело документа не содержит текст "[content]"
        if (!editor.Body.Contains("[content]"))
            // ошибка
            throw new ArgumentException("Template file must be contains '[content]' text.");

        // заменить текст "[content]" на текстовый контент
        editor.Body["[content]"] = text;

        // экспортировать DOCX документ в PDF документ
        editor.Export(outputPdfFilename);
    }
}