Generazione di un DOC o DOCX utilizzando MigraDoc

 C Programming >> Programmazione C >  >> Tags >> DocX
Generazione di un DOC o DOCX utilizzando MigraDoc

MigraDoc non può generare file DOC o DOCX. Poiché MigraDoc è open source, puoi aggiungere un renderer per DOCX se hai le conoscenze e il tempo.

MigraDoc così com'è non può generare DOC/DOCX, ma forse puoi invocare uno strumento di conversione esterno dopo aver generato il file RTF.
Non conosco nessuno di questi strumenti. Word può aprire rapidamente RTF e finora i nostri clienti non si sono mai lamentati di ricevere RTF, non DOC o DOCX.

Aggiornamento (29-07-2019):il sito Web menziona "Word", ma si riferisce solo a RTF. Non c'è mai stata un'implementazione per .DOC o .DOCX.


Sembra nessun MigraDoc rendering che supportano DOC o DOCX formati.

Nella pagina della documentazione possiamo vedere un MigraDoc caratteristica:

Ma sembra che la documentazione parli di RTF formato che funziona perfettamente con Word. Ho esaminato il repository MigraDoc e non vedo alcun DOC rende. Possiamo utilizzare solo RTF convertitore per il supporto di Word. Quindi non possiamo generare DOC file direttamente utilizzando questo pacchetto.

Ma possiamo convertire RTF a DOC o DOCX facilmente (e gratuitamente) utilizzando il pacchetto nuget FreeSpire.Doc.

L'esempio di codice completo è qui:

using MigraDoc.DocumentObjectModel;
using MigraDoc.RtfRendering;
using Spire.Doc;
using System.IO;

namespace MigraDocTest
{
    class Program
    {
        static void Main(string[] args)
        {
            using (var stream = new MemoryStream())
            {
                // Generate RTF (using MigraDoc)
                var migraDoc = new MigraDoc.DocumentObjectModel.Document();
                var section = migraDoc.AddSection();
                var paragraph = section.AddParagraph();
                paragraph.AddFormattedText("Hello World!", TextFormat.Bold);
                var rtfDocumentRenderer = new RtfDocumentRenderer();
                rtfDocumentRenderer.Render(migraDoc, stream, false, null);

                // Convert RTF to DOCX (using Spire.Doc)
                var spireDoc = new Spire.Doc.Document();
                spireDoc.LoadFromStream(stream, FileFormat.Auto);
                spireDoc.SaveToFile("D:\\example.docx", FileFormat.Docx );
            }
        }
    }
}