TXT-Datei in .NET in PDF-Dokument konvertieren

Blog-Kategorie: PDFOffice.NET

01.07.2021

Formatierter Text muss oft in ein PDF-Dokument konvertiert werden. Bei komplex formatiertem Text kann die Konvertierung viel Zeit und Code in Anspruch nehmen.

Seit Version 10.1 des VintaSoft Imaging .NET SDK ist es möglich, bestehende DOCX- und XLSX-Dokumente zu bearbeiten. Dadurch entfällt die Notwendigkeit, formatierten Text programmatisch in PDF-Inhalte zu konvertieren. Anstatt viel Code für die Konvertierung formatierten Textes zu schreiben, kann man ein DOCX-Dokument mit der gewünschten Formatierung erstellen und den benötigten Textinhalt in dieses Dokument einfügen. Anschließend lässt sich das erstellte DOCX-Dokument mithilfe der Funktionen des VintaSoft Imaging .NET SDK problemlos in ein PDF-Dokument konvertieren.

Basierend auf der oben beschriebenen Methode lässt sich mit den folgenden Schritten leicht ein TXT-zu-PDF-Konverter erstellen:
1. Erstellen Sie mit MS Word ein DOCX-Dokument namens txtTemplate.docx:
2. Im Anwendungscode:
Dieser Ansatz bietet Flexibilität und einfache Anpassbarkeit für den Konverter: Um die Parameter des Ausgabedokuments zu ändern, müssen Sie lediglich die Parameter der Vorlage txtTemplate.docx mit MS Word ändern.


Hier ist ein Codebeispiel, das zeigt, wie man eine TXT-Datei in ein PDF-Dokument konvertiert:
// 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);
    }
}