InsertHtml

InsertHtml(string)

Belgeye bir HTML dizesi ekler.

public void InsertHtml(string html)
ParametreTipTanım
htmlStringBelgeye eklenecek bir HTML dizesi.

Notlar

Bir HTML parçasını veya tüm HTML belgesini eklemek için bu yöntemi kullanabilirsiniz.

Örnekler

Bir belgeye html içeriği eklemek için belge oluşturucunun nasıl kullanılacağını gösterir.

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);

// HTML kodunun eklenmesi, her öğenin formatını eşdeğer belge metni formatına ayrıştırır.
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");

HTML belgeleri biçimindeki birleştirme verilerini işleyen özel bir geri çağırma ile adres-mektup birleştirmenin nasıl yürütüleceğini gösterir.

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>
/// Adres-mektup birleştirme, adı "html_" önekiyle başlayan bir MERGEFIELD ile karşılaşırsa,
/// bu geri çağırma, birleştirme verilerini HTML içeriği olarak ayrıştırır ve sonucu MERGEFIELD'ın belge konumuna ekler.
/// </summary>
private class HandleMergeFieldInsertHtml : IFieldMergingCallback
{
    /// <summary>
    /// Adres-mektup birleştirme verileri MERGEFIELD ile birleştirdiğinde çağrılır.
    /// </summary>
    void IFieldMergingCallback.FieldMerging(FieldMergingArgs args)
    {
        if (args.DocumentFieldName.StartsWith("html_") && args.Field.GetFieldCode().Contains("\\b"))
        {
            // Ayrıştırılmış HTML verilerini belgenin gövdesine ekleyin.
            DocumentBuilder builder = new DocumentBuilder(args.Document);
            builder.MoveToMergeField(args.DocumentFieldName);
            builder.InsertHtml((string)args.FieldValue);

            // Birleştirilmiş içeriği zaten manuel olarak eklediğimiz için,
             // bu etkinliğe "Text" özelliği aracılığıyla içerik döndürerek yanıt vermemize gerek kalmayacak.
            args.Text = string.Empty;
        }
    }

    void IFieldMergingCallback.ImageFieldMerging(ImageFieldMergingArgs args)
    {
        // Hiçbir şey yapma.
    }
}

Ayrıca bakınız


InsertHtml(string, bool)

Belgeye bir HTML dizesi ekler.

public void InsertHtml(string html, bool useBuilderFormatting)
ParametreTipTanım
htmlStringBelgeye eklenecek bir HTML dizesi.
useBuilderFormattingBooleanBiçimlendirmenin belirtilip belirtilmediğini gösteren bir değerDocumentBuilder , HTML’den içe aktarılan metin için temel biçimlendirme olarak kullanılır.

Notlar

Bir HTML parçasını veya tüm HTML belgesini eklemek için bu yöntemi kullanabilirsiniz.

Ne zamanuseBuilderFormatting dır-dirYANLIŞ , DocumentBuilderbiçimlendirme göz ardı edilir ve eklenen text ’nin biçimlendirmesi varsayılan HTML biçimlendirmesine dayanır. Sonuç olarak metin, tarayıcılarda işlendiği gibi görünür.

Ne zamanuseBuilderFormatting dır-dirdoğru , eklenen metnin biçimlendirmesi temel alınırDocumentBuilder formatting, ve metin sanki eklenmiş gibi görünüyorWrite .

Örnekler

HTML içeriği eklenirken belge oluşturucunun formatının nasıl uygulanacağını gösterir.

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

// Oluşturucu için bir metin hizalaması ayarlayın, belirtilen hizalamaya sahip olan ve olmayan bir HTML paragrafı ekleyin.
builder.ParagraphFormat.Alignment = ParagraphAlignment.Distributed;
builder.InsertHtml(
    "<p align='right'>Paragraph 1.</p>" +
    "<p>Paragraph 2.</p>", useBuilderFormatting);

ParagraphCollection paragraphs = doc.FirstSection.Body.Paragraphs;

// İlk paragrafta belirtilen hizalama var. InsertHtml HTML kodunu ayrıştırdığında,
// HTML kodunda bulunan paragraf hizalama değeri her zaman belge oluşturucunun değerinin yerine geçer.
Assert.AreEqual("Paragraph 1.", paragraphs[0].GetText().Trim());
Assert.AreEqual(ParagraphAlignment.Right, paragraphs[0].ParagraphFormat.Alignment);

// İkinci paragrafta herhangi bir hizalama belirtilmemiş. Hizalama değeri doldurulmuş olabilir
// InsertHtml yöntemine ilettiğimiz bayrağa bağlı olarak oluşturucunun değerine göre.
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");

Ayrıca bakınız


InsertHtml(string, HtmlInsertOptions)

Belgeye bir HTML dizesi ekler. Ek seçeneklerin belirtilmesine izin verir.

public void InsertHtml(string html, HtmlInsertOptions options)
ParametreTipTanım
htmlStringBelgeye eklenecek bir HTML dizesi.
optionsHtmlInsertOptionsHTML dizesi eklendiğinde kullanılan seçenekler.

Notlar

Bir HTML parçasını veya tüm HTML belgesini eklemek için bu yöntemi kullanabilirsiniz.

Örnekler

Html eklerken seçeneklerin nasıl kullanılacağını gösterir.

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

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

// Varsayılan olarak "DocumentBuilder.InsertHtml", blok düzeyinde bir HTML öğesiyle biten bir HTML parçası ekler,
// normalde bu blok düzeyindeki öğeyi kapatır ve bir paragraf sonu ekler.
// Sonuç olarak, eklenen belgeden sonra yeni bir boş paragraf belirir.
// "HtmlInsertOptions.RemoveLastEmptyParagraph" belirtirsek, o ekstra boş paragraflar kaldırılacaktır.
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");

Ayrıca bakınız