web-dev-qa-db-ja.com

フォントのオープンXMLを変更するには

OpenXmlを介してドキュメントのフォントファミリを変更するにはどうすればよいですか?いくつかの方法を試しましたが、ドキュメントを開くと、常にCalibriにあります

私のコードと私が試したものに従ってください。

投稿しても役に立たないと思うヘッダービルダー

private static void BuildDocument(string fileName, List<string> lista, string tipo)
{                
    using (var w = WordprocessingDocument.Create(fileName, WordprocessingDocumentType.Document))
    {
        var mp = w.AddMainDocumentPart();
        var d = new DocumentFormat.OpenXml.Wordprocessing.Document();
        var b = new Body();
        var p = new DocumentFormat.OpenXml.Wordprocessing.Paragraph();
        var r = new Run();

        // Get and format the text.                                    
        for (int i = 0; i < lista.Count; i++)
        {
            Text t = new Text();                    
            t.Text = lista[i];
            if (t.Text == "          ")
            {
                r.Append(new CarriageReturn());
            }
            else
            {
                r.Append(t);
                r.Append(new CarriageReturn());
            }
        }

        // What I tried
        var rPr = new RunProperties(new RunFonts() { Ascii = "Arial" });                

        lista.Clear();                
        p.Append(r);                
        b.Append(p);
        var hp = mp.AddNewPart<HeaderPart>();
        string headerRelationshipID = mp.GetIdOfPart(hp);
        var sectPr = new SectionProperties();                
        var headerReference = new HeaderReference();                
        headerReference.Id = headerRelationshipID;
        headerReference.Type = HeaderFooterValues.Default;
        sectPr.Append(headerReference);
        b.Append(sectPr);
        d.Append(b);                

        // Customize the header.
        if (tipo == "alugar")
        {
            hp.Header = BuildHeader(hp, "Anúncio Aluguel de Imóvel");
        }
        else if (tipo == "vender")
        {
            hp.Header = BuildHeader(hp, "Anúncio Venda de Imóvel");
        }
        else
        {
            hp.Header = BuildHeader(hp, "Aluguel/Venda de Imóvel");
        }

        hp.Header.Save();
        mp.Document = d;
        mp.Document.Save();
        w.Close();
    }             
}
22
Lucas_Santos

特定のフォントでテキストのスタイルを設定するには、以下の手順に従います。

  1. RunPropertiesクラスのインスタンスを作成します。
  2. RunFontクラスのインスタンスを作成します。 Asciiプロパティを目的のフォントファミリに設定します。
  3. FontSizeクラスを使用して、フォントのサイズ(ハーフポイントフォントサイズ)を指定します。
  4. RunPropertiesインスタンスを、スタイルを設定するテキストを含むランに追加します。

上記の手順を示す小さなコード例を次に示します。

private static void BuildDocument(string fileName, List<string> text)
{
    using (var wordDoc = WordprocessingDocument.Create(fileName, WordprocessingDocumentType.Document))
    {
        var mainPart = wordDoc.AddMainDocumentPart();
        mainPart.Document = new Document();

        var run = new Run();

        foreach (string currText in text)
        {
            run.AppendChild(new Text(currText));
            run.AppendChild(new CarriageReturn());
        }

        var paragraph = new Paragraph(run);
        var body = new Body(paragraph);

        mainPart.Document.Append(body);

        var runProp = new RunProperties();

        var runFont = new RunFonts { Ascii = "Arial" };

        // 48 half-point font size
        var size = new FontSize { Val = new StringValue("48") }; 

        runProp.Append(runFont);
        runProp.Append(size);

        run.PrependChild(runProp);

        mainPart.Document.Save();
        wordDoc.Close();
    }
}

お役に立てれば。

41
Hans