InsertHtml

InsertHtml(string)

Inserisce una stringa HTML nel documento.

public void InsertHtml(string html)
ParametroTipoDescrizione
htmlStringUna stringa HTML da inserire nel documento.

Osservazioni

Puoi utilizzare questo metodo per inserire un frammento HTML o un intero documento HTML.

Esempi

Mostra come utilizzare un generatore di documenti per inserire contenuto HTML in un documento.

Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

const string html = "<p align='right'>Paragraph right</p>" + 
                    "<b>Implicit paragraph left</b>" +
                    "<div align='center'>Div center</div>" + 
                    "<h1 align='left'>Heading 1 left.</h1>";

builder.InsertHtml(html);

// L'inserimento del codice HTML analizza la formattazione di ciascun elemento nella formattazione equivalente del testo del documento.
ParagraphCollection paragraphs = doc.FirstSection.Body.Paragraphs;

Assert.AreEqual("Paragraph right", paragraphs[0].GetText().Trim());
Assert.AreEqual(ParagraphAlignment.Right, paragraphs[0].ParagraphFormat.Alignment);

Assert.AreEqual("Implicit paragraph left", paragraphs[1].GetText().Trim());
Assert.AreEqual(ParagraphAlignment.Left, paragraphs[1].ParagraphFormat.Alignment);
Assert.True(paragraphs[1].Runs[0].Font.Bold);

Assert.AreEqual("Div center", paragraphs[2].GetText().Trim());
Assert.AreEqual(ParagraphAlignment.Center, paragraphs[2].ParagraphFormat.Alignment);

Assert.AreEqual("Heading 1 left.", paragraphs[3].GetText().Trim());
Assert.AreEqual("Heading 1", paragraphs[3].ParagraphFormat.Style.Name);

doc.Save(ArtifactsDir + "DocumentBuilder.InsertHtml.docx");

Mostra come eseguire una stampa unione con un callback personalizzato che gestisce i dati di unione sotto forma di documenti HTML.

public void MergeHtml()
{
    Document doc = new Document();
    DocumentBuilder builder = new DocumentBuilder(doc);

    builder.InsertField(@"MERGEFIELD  html_Title  \b Content");
    builder.InsertField(@"MERGEFIELD  html_Body  \b Content");

    object[] mergeData =
    {
        "<html>" +
            "<h1>" +
                "<span style=\"color: #0000ff; font-family: Arial;\">Hello World!</span>" +
            "</h1>" +
        "</html>", 

        "<html>" +
            "<blockquote>" +
                "<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>" +
            "</blockquote>" +
        "</html>"
    };

    doc.MailMerge.FieldMergingCallback = new HandleMergeFieldInsertHtml();
    doc.MailMerge.Execute(new[] { "html_Title", "html_Body" }, mergeData);

    doc.Save(ArtifactsDir + "MailMergeEvent.MergeHtml.docx");
}

/// <summary>
/// Se la stampa unione incontra un MERGEFIELD il cui nome inizia con il prefisso "html_",
/// questo callback analizza i dati di unione come contenuto HTML e aggiunge il risultato alla posizione del documento di MERGEFIELD.
/// </summary>
private class HandleMergeFieldInsertHtml : IFieldMergingCallback
{
    /// <summary>
    /// Chiamato quando una stampa unione unisce i dati in un MERGEFIELD.
    /// </summary>
    void IFieldMergingCallback.FieldMerging(FieldMergingArgs args)
    {
        if (args.DocumentFieldName.StartsWith("html_") && args.Field.GetFieldCode().Contains("\\b"))
        {
            // Aggiunge dati HTML analizzati al corpo del documento.
            DocumentBuilder builder = new DocumentBuilder(args.Document);
            builder.MoveToMergeField(args.DocumentFieldName);
            builder.InsertHtml((string)args.FieldValue);

            // Poiché abbiamo già inserito manualmente il contenuto unito,
             // non avremo bisogno di rispondere a questo evento restituendo il contenuto tramite la proprietà "Text".
            args.Text = string.Empty;
        }
    }

    void IFieldMergingCallback.ImageFieldMerging(ImageFieldMergingArgs args)
    {
        // Fare niente.
    }
}

Guarda anche


InsertHtml(string, bool)

Inserisce una stringa HTML nel documento.

public void InsertHtml(string html, bool useBuilderFormatting)
ParametroTipoDescrizione
htmlStringUna stringa HTML da inserire nel documento.
useBuilderFormattingBooleanUn valore che indica se la formattazione è specificata inDocumentBuilder viene utilizzato come formattazione di base per il testo importato da HTML.

Osservazioni

Puoi utilizzare questo metodo per inserire un frammento HTML o un intero documento HTML.

QuandouseBuilderFormatting Èfalso , DocumentBuilderla formattazione viene ignorata e la formattazione del testo inserito si basa sulla formattazione HTML predefinita. Di conseguenza, il testo appare così come viene visualizzato nei browser.

QuandouseBuilderFormatting ÈVERO , si basa la formattazione del testo inseritoDocumentBuilder formattazione, e il testo sembra come se fosse stato inserito conWrite .

Esempi

Mostra come applicare la formattazione di un generatore di documenti durante l’inserimento di contenuto HTML.

Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// Imposta un allineamento del testo per il builder, inserisce un paragrafo HTML con un allineamento specificato e uno senza.
builder.ParagraphFormat.Alignment = ParagraphAlignment.Distributed;
builder.InsertHtml(
    "<p align='right'>Paragraph 1.</p>" +
    "<p>Paragraph 2.</p>", useBuilderFormatting);

ParagraphCollection paragraphs = doc.FirstSection.Body.Paragraphs;

// Per il primo paragrafo è specificato un allineamento. Quando InsertHtml analizza il codice HTML,
// il valore di allineamento del paragrafo trovato nel codice HTML sostituisce sempre il valore del generatore di documenti.
Assert.AreEqual("Paragraph 1.", paragraphs[0].GetText().Trim());
Assert.AreEqual(ParagraphAlignment.Right, paragraphs[0].ParagraphFormat.Alignment);

// Per il secondo paragrafo non è specificato alcun allineamento. È possibile compilare il valore di allineamento
// in base al valore del builder a seconda del flag che abbiamo passato al metodo InsertHtml.
Assert.AreEqual("Paragraph 2.", paragraphs[1].GetText().Trim());
Assert.AreEqual(useBuilderFormatting ? ParagraphAlignment.Distributed : ParagraphAlignment.Left,
    paragraphs[1].ParagraphFormat.Alignment);

doc.Save(ArtifactsDir + "DocumentBuilder.InsertHtmlWithFormatting.docx");

Guarda anche


InsertHtml(string, HtmlInsertOptions)

Inserisce una stringa HTML nel documento. Permette di specificare opzioni aggiuntive.

public void InsertHtml(string html, HtmlInsertOptions options)
ParametroTipoDescrizione
htmlStringUna stringa HTML da inserire nel documento.
optionsHtmlInsertOptionsOpzioni utilizzate quando viene inserita una stringa HTML.

Osservazioni

Puoi utilizzare questo metodo per inserire un frammento HTML o un intero documento HTML.

Esempi

Mostra come utilizzare le opzioni durante l’inserimento di codice HTML.

Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

builder.InsertField(" MERGEFIELD Name ");
builder.InsertParagraph();
builder.InsertField(" MERGEFIELD EMAIL ");
builder.InsertParagraph();

// Per impostazione predefinita "DocumentBuilder.InsertHtml" inserisce un frammento HTML che termina con un elemento HTML a livello di blocco,
// normalmente chiude l'elemento a livello di blocco e inserisce un'interruzione di paragrafo.
// Di conseguenza, dopo il documento inserito viene visualizzato un nuovo paragrafo vuoto.
// Se specifichiamo "HtmlInsertOptions.RemoveLastEmptyParagraph", i paragrafi vuoti in eccesso verranno rimossi.
builder.MoveToMergeField("NAME");
builder.InsertHtml("<p>John Smith</p>", HtmlInsertOptions.UseBuilderFormatting | HtmlInsertOptions.RemoveLastEmptyParagraph);
builder.MoveToMergeField("EMAIL");
builder.InsertHtml("<p>jsmith@example.com</p>", HtmlInsertOptions.UseBuilderFormatting);

doc.Save(ArtifactsDir + "MailMerge.RemoveLastEmptyParagraph.docx");

Guarda anche