作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我目前正在使用 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/
我是一名优秀的程序员,十分优秀!