Calculate text height based on available width and font?

前端 未结 8 1545
醉酒成梦
醉酒成梦 2020-12-16 13:11

We are creating PDF documents on the fly from the database using PDFsharp.

I need to know the best way to calculate the height of the text area based on the font use

8条回答
  •  刺人心
    刺人心 (楼主)
    2020-12-16 14:12

    The PdfSharp.Drawing.XGraphics object has a MeasureString method that returns what you require.

     var pdfDoc = new PdfSharp.Pdf.PdfDocument();
     var pdfPage = pdfDoc.AddPage();
     var pdfGfx = PdfSharp.Drawing.XGraphics.FromPdfPage(pdfPage);
     var pdfFont = new PdfSharp.Drawing.XFont("Helvetica", 20);
    
     while (pdfGfx.MeasureString("Hello World!").Width > pdfPage.Width)
          --pdfFont.Size;
    
     pdfGfx.DrawString("Hello World!", pdfFont
          , PdfSharp.Drawing.XBrushes.Black
          , new PdfSharp.Drawing.XPoint(100, 100));
    

    This should help you. Please consider that I didn't test this code as I wrote it on the fly in order to help. It might contain some compile-time errors, but you may get the idea.

提交回复
热议问题