.net 如何仅在PDFsharp中加粗某些文本?

.net 如何仅在PDFsharp中加粗某些文本?,.net,pdfsharp,.net,Pdfsharp,我在VB.NET上编程,并根据程序的需要使用PDFsharp库创建PDF页面。现在,我只需要加粗文本的某些部分,但我只知道如何一次加粗整个部分。我该怎么做呢 目前,我用于呈现单词的代码如下: Dim graph As XGraphics = XGraphics.FromPdfPage(pdfPage) graph.DrawString("Sample Text", New XFont("Arial", 12, FontStyle.Bold), New SolidBrush(Color.Black

我在VB.NET上编程,并根据程序的需要使用PDFsharp库创建PDF页面。现在,我只需要加粗文本的某些部分,但我只知道如何一次加粗整个部分。我该怎么做呢

目前,我用于呈现单词的代码如下:

Dim graph As XGraphics = XGraphics.FromPdfPage(pdfPage)
graph.DrawString("Sample Text", New XFont("Arial", 12, FontStyle.Bold), New SolidBrush(Color.Black), New RectangleF(X, Y, 700, 30), New XStringFormat())

为常规部分调用
DrawString
,然后为粗体部分调用
DrawString
,然后为下一个常规部分调用
DrawString
。始终为每个字符串提供正确的位置

您可以查看
XTextFormatter
类。它实现了自动换行,但还不支持混合不同的字体样式。它可以让你开始


专业提示:您可以在一个NuGet包中获得MigraDoc和PDFsharp。MigraDoc允许在单个段落中混合使用,自动处理换行符和换页符,还带来了其他好处,如页眉和页脚。

为常规部分调用
DrawString
,然后为粗体部分调用
DrawString
,然后为下一个常规部分调用
DrawString
。始终为每个字符串提供正确的位置

您可以查看
XTextFormatter
类。它实现了自动换行,但还不支持混合不同的字体样式。它可以让你开始


专业提示:您可以在一个NuGet包中获得MigraDoc和PDFsharp。MigraDoc允许在单个段落中进行混合,自动处理换行符和分页符,还带来了其他好处,如页眉和页脚。

在上面的示例中,如果您希望用粗体字“Text”编写“示例文本”,请执行以下操作:

  • 包括MigraDoc+PDFsharp NuGet包,如前面的回复所述
  • 用以下代码替换
    graph.DrawString
    行(尽管这是C#,抱歉),以使用PDFsharp中现有的
    XGraphics
    graph实例,使用MigraDoc
    段落
    实例呈现文本

    var document = new Document();
    var section = document.AddSection();
    var paragraph = section.AddParagraph();
    paragraph.Format.Alignment = ParagraphAlignment.Left;
    paragraph.Format.Font.Name = "Arial";
    paragraph.Format.Font.Size = 12;
    
    paragraph.AddText("Sample ");
    paragraph.AddFormattedText("Text", TextFormat.Bold);
    
    var docRenderer = new DocumentRenderer(document);                            
    docRenderer.PrepareDocument();
    docRenderer.RenderObject(graph, XUnit.FromPoint(X), XUnit.FromPoint(Y), XUnit.FromPoint(700), paragraph);
    

在上述示例中,如果您希望用粗体字“文本”书写“示例文本”,请执行以下操作:

  • 包括MigraDoc+PDFsharp NuGet包,如前面的回复所述
  • 用以下代码替换
    graph.DrawString
    行(尽管这是C#,抱歉),以使用PDFsharp中现有的
    XGraphics
    graph实例,使用MigraDoc
    段落
    实例呈现文本

    var document = new Document();
    var section = document.AddSection();
    var paragraph = section.AddParagraph();
    paragraph.Format.Alignment = ParagraphAlignment.Left;
    paragraph.Format.Font.Name = "Arial";
    paragraph.Format.Font.Size = 12;
    
    paragraph.AddText("Sample ");
    paragraph.AddFormattedText("Text", TextFormat.Bold);
    
    var docRenderer = new DocumentRenderer(document);                            
    docRenderer.PrepareDocument();
    docRenderer.RenderObject(graph, XUnit.FromPoint(X), XUnit.FromPoint(Y), XUnit.FromPoint(700), paragraph);
    

我真的希望避免使用双抽绳方法,但我将研究MigraDoc/PDFSharp融合。谢谢我真的希望避免使用双抽绳方法,但我将研究MigraDoc/PDFSharp融合。谢谢有没有办法知道渲染段落的最终高度是多少?我需要这个来知道从哪里开始画下一个!有没有办法知道渲染段落的最终高度是多少?我需要这个来知道从哪里开始画下一个!