gpt4 book ai didi

c++ - Libharu pdf 创作 : How to know the size of the printed text

转载 作者:搜寻专家 更新时间:2023-10-31 01:37:30 32 4
gpt4 key购买 nike

我目前正在使用 libharu库,以便在 C++ 程序中呈现一些 pdf。

我不知道是否有可能知道用特定字体绘制特定文本所需的大小。

HPDF_Page_TextRect如果文本不适合提供的矩形,绘图方法将返回 HPDF_PAGE_INSUFFICIENT_SPACE 消息,但我想知道是否有一种方法可以计算文本适合的最小尺寸一种特定的字体。

提前,谢谢。

最佳答案

另一种方法是使用 HPDF_Page_TextWidth 函数获取当前字体大小、字符间距和字间距的文本宽度:

HPDF_STATUS FitText( 
HPDF_Page pdfPage,
HPDF_Font pdfFont,
HPDF_REAL pdfFontSize,
HPDF_REAL rectProvidedLeft,
HPDF_REAL rectProvidedRight,
HPDF_REAL rectProvidedTop,
char *pText )
{
if ( pdfPage <= 0 || pdfFont <= 0 || pdfFontSize <= 0 )
return HPDF_INVALID_PARAMETER;

HPDF_Page_SetFontAndSize ( pdfPage, pdfFont, pdfFontSize );
HPDF_REAL dTextExtent = HPDF_Page_TextWidth ( pdfPage, pText );

// reduce font size until text fit in provided rectangle
HPDF_REAL nReducedFontSize = pdfFontSize;
while ( dTextExtent > (rectProvidedRight-rectProvidedLeft) && nReducedFontSize >= 0 )
{
HPDF_Page_SetFontAndSize ( pdfPage, pdfFont, --nReducedFontSize );
dTextExtent = HPDF_Page_TextWidth ( pdfPage, pText );
}
if ( nReducedFontSize == 0 )
return HPDF_STRING_OUT_OF_RANGE;

HPDF_Page_BeginText ( pdfPage );
HPDF_Page_MoveTextPos ( pdfPage, rectProvidedLeft, rectProvidedTop );
HPDF_STATUS pdfStatus = HPDF_Page_ShowText ( pdfPage, pText );
HPDF_Page_EndText ( pdfPage );

return pdfStatus;
}

关于c++ - Libharu pdf 创作 : How to know the size of the printed text,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34068369/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com