Convertir un fichier TXT en document PDF avec .NET

Catégorie du blog: PDFOffice.NET

01.07.2021

Il est souvent nécessaire de convertir du texte formaté en document PDF. Si le texte présente une mise en forme complexe, la conversion peut s'avérer longue et fastidieuse.

Depuis la version 10.1 du VintaSoft Imaging .NET SDK, il est possible de modifier les documents DOCX et XLSX existants. Cette fonctionnalité permet de s'affranchir de la conversion programmatique d'un texte formaté en PDF. Au lieu d'écrire beaucoup de code pour convertir du texte formaté, on peut créer un document DOCX avec la mise en forme nécessaire et y insérer le contenu textuel requis. Ensuite, le document DOCX ainsi créé peut être facilement converti en document PDF grâce aux fonctionnalités du VintaSoft Imaging .NET SDK.

En se basant sur la méthode décrite ci-dessus, il est facile de créer un convertisseur TXT vers PDF en suivant les étapes ci-dessous:
1. À l'aide de MS Word, créez un document DOCX nommé txtTemplate.docx:
2. Dans le code de l'application:
Cette approche offre flexibilité et facilité de personnalisation au convertisseur: pour modifier les paramètres du document de sortie, il suffit de modifier ceux du modèle txtTemplate.docx dans MS Word.


Voici un exemple de code montrant comment convertir un fichier TXT en document 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);
    }
}