Converter arquivo TXT em documento PDF em .NET

Categoria do blog: PDFOffice.NET

01.07.2021

Muitas vezes é necessário converter texto formatado em um documento PDF. Se o texto tiver uma formatação complexa, a conversão pode ser demorada e exigir muito código.

Desde a versão 10.1 do VintaSoft Imaging .NET SDK, tornou-se possível editar documentos DOCX e XLSX existentes. Com esse recurso, elimina-se a necessidade de converter um texto formatado em conteúdo PDF programaticamente. Em vez de escrever um código extenso para a conversão, é possível criar um documento DOCX com a formatação necessária e inserir o texto desejado no documento já formatado. Em seguida, o documento DOCX criado pode ser facilmente convertido para PDF utilizando os recursos do VintaSoft Imaging .NET SDK.

Com base no método descrito acima, é possível criar facilmente um conversor de TXT para PDF seguindo os passos abaixo:
1. Usando o MS Word, crie o documento DOCX txtTemplate.docx:
2. No código do aplicativo:
Essa abordagem oferece flexibilidade e facilidade de personalização para o conversor: para alterar os parâmetros do documento de saída, basta alterar os parâmetros do modelo txtTemplate.docx usando o MS Word.


Aqui está um exemplo de código que demonstra como converter um arquivo TXT em um documento PDF:
// The project, which uses this code, must have references to the following assemblies:
// - Vintasoft.Imaging
// - Vintasoft.Imaging.Office.OpenXml
// - Vintasoft.Imaging.Pdf

/// <summary>
/// Tests conversion from TXT file to a PDF document.
/// </summary>
public static void Test()
{
    ConvertTxtFileToPdfDocument("Products.txt", "txtTemplate.docx", "Products.pdf");
}

/// <summary>
/// Converts specified text file to a PDF document.
/// </summary>
/// <param name="txtFilename">The TXT filename.</param>
/// <param name="docxTemplateFilename">The DOCX template filename.</param>
/// <param name="outputPdfFilename">The output PDF filename.</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>
/// Converts specified text to a PDF document.
/// </summary>
/// <param name="text">The text.</param>
/// <param name="title">The document title.</param>
/// <param name="docxTemplateFilename">The DOCX template filename.</param>
/// <param name="outputPdfFilename">The output PDF filename.</param>
public static void ConvertTextToPdfDocument(string title, string text, string docxTemplateFilename, string outputPdfFilename)
{
    // create DocxDocumentEditor and use DOCX file as a document template
    using (Vintasoft.Imaging.Office.OpenXml.Editor.DocxDocumentEditor editor =
        new Vintasoft.Imaging.Office.OpenXml.Editor.DocxDocumentEditor(docxTemplateFilename))
    {
        // replace text "[title]" by document title
        editor.Body.ReplaceText("[title]", title);

        // if document body does not contain text "[content]"
        if (!editor.Body.Contains("[content]"))
            throw new ArgumentException("Template file must be contains '[content]' text.");

        // replace text "[content]" by text content
        editor.Body["[content]"] = text;

        // export DOCX document to a PDF document
        editor.Export(outputPdfFilename);
    }
}