1

我想做一些非常简单的事情,但我不知道怎么做。这变得非常烦人,这是我的问题。

我想在 aspose.pdf 部分中添加以下文本

 "<h1>What a nice <i>italic</i> freaking title</h1>"

由于 apsose 的 PDF 生成不正确地支持 css 样式,它接缝,我的团队决定我们将采取不同的方法,即:支持基本的 html 元素,并使用代码中预定义样式的 aspose 对象库直接添加它们。现在,我做了以下函数来添加标题:

    public static void AddTitle(XElement xElement, Section section, TitleType type)
    {
        Text title;
        title = xElement.HasElements ? new Text(section, GetFullValue(xElement)) : new Text(section, xElement.Value);
        var info = new TextInfo();
        switch(type)
        {
            case TitleType.H1:
                info.FontSize = 22;
                break;
            case TitleType.H2:
                info.FontSize = 20;
                break;
            case TitleType.H3:
                info.FontSize = 18;
                break;
            case TitleType.H4:
                info.FontSize = 16;
                break;
            case TitleType.H5:
                info.FontSize = 14;
                break;
        }

        info.IsTrueTypeFontBold = true;
        title.IsKeptTogether = true;
        //title.IsHtmlTagSupported = true;
        title.TextInfo = info;
        section.Paragraphs.Add(title);
    }

顺便说一句:在这个例子中传递给文本对象的内容是“这是一个漂亮的斜体标题”

目前,斜体不工作。如果我取消注释 .IsHtmlTagSupported,斜体将起作用,但我会丢失我的 TextInfo(粗体、字体大小等)。有没有办法使这项工作?或者,有没有办法在具有不同样式的单个段落中附加文本。(就像我可以在包含斜体文本的段落中添加另一个 Text 对象)

4

1 回答 1

4

将以下简单代码与 Aspose.Pdf for .NET 7.7.0 一起使用时,我可以在 H1 中看到斜体文本和所有字符串。使用 IsHtmlTagSupported 时,建议使用 HTML 标签指定文本格式(粗体、字体大小等)。

Aspose.Pdf.Generator.Pdf pdf1 = new Aspose.Pdf.Generator.Pdf();
Aspose.Pdf.Generator.Section sec1 = pdf1.Sections.Add();
Text title = new Text("<h1>What a nice <i>italic</i> freaking title</h1>");
var info = new TextInfo();
info.FontSize = 12;
//info.IsTrueTypeFontBold = true;
title.TextInfo = info;

title.IsHtmlTagSupported = true;

sec1.Paragraphs.Add(title);
pdf1.Save("c:/pdftest/PDF_From_HTML.pdf");

此外,文本段落可以有一个或多个 Segment 对象,您可以为每个段指定不同的格式。为了满足您的要求,您可以尝试使用以下代码片段

Aspose.Pdf.Generator.Pdf pdf1 = new Aspose.Pdf.Generator.Pdf();
Aspose.Pdf.Generator.Section sec1 = pdf1.Sections.Add();
Text title = new Text("What a nice");

var info = new TextInfo();
info.FontSize = 12;
info.IsTrueTypeFontBold = true;
title.TextInfo = info;

Segment segment2 = new Segment(" italic ");
// set the formatting of segment2 as Italic
segment2.TextInfo.IsTrueTypeFontItalic = true;
// add segment2 to segments collection of text object
title.Segments.Add(segment2);

Segment segment3 = new Segment(" freaking title ");
// add segment3 to segments collection of text object
segment3.TextInfo.IsTrueTypeFontBold = true;
title.Segments.Add(segment3);

sec1.Paragraphs.Add(title);
// save the output document
pdf1.Save("c:/pdftest/PDF_with_Three_Segments.pdf");
于 2013-03-10T20:04:13.793 回答