首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LibHaru中的文本包装

LibHaru中的文本包装
EN

Stack Overflow用户
提问于 2016-04-20 11:31:42
回答 1查看 1.6K关注 0票数 2

我正在使用LibHaru进行与PDF生成相关的一些项目开发。我计划在一个特定的区域里加入一些文字。我用的是TextRect(),但是我在文字包装上遇到了一些问题。

  1. 如果文本的宽度大于矩形的宽度,则矩形变为空白。我怎么才能摆脱它?
  2. 我尝试编写自己的文本包装或拆分字符串函数,它在特定数量的字符之后添加空格,但在特定的限制之后似乎也失败了。任何有关文本包装功能的帮助。
  3. 如何计算文本的宽度,这将适合在特定宽度的矩形?

下面是拆分字符串函数的代码片段:

代码语言:javascript
复制
void SplitString(int iLength, string strInput, string& strOutput)
{

    int iSubstringsCnt;
    int iAddedCnt;


    iSubstringsCnt = strInput.length() / iLength;
    iAddedCnt = iSubstringsCnt / iLength;
    cout<<iSubstringsCnt<<endl;
    cout<<iAddedCnt<<endl;

    cout<<strInput.length()<<endl;
    for (int iCnt = 0; iCnt <= iSubstringsCnt+ iAddedCnt; iCnt++)
    {
            if (0 == iCnt)
                    continue;
                strInput.insert((iCnt * iLength)+(iCnt-1) , " ");
    }

    strOutput= strInput;

}
  • iLength:我想分开的长度。
  • iAddedCnt:在几个字符后添加空格后的字符串计数。
EN

回答 1

Stack Overflow用户

发布于 2016-09-06 21:54:39

Libharu是一个相当低级别的pdf库。因此,它没有太多的文本格式选项,例如高级文本包装。然而,它为您提供了一些帮助:

  • 函数HPDF_Page_TextRect写入打印字符的数量,这样您就可以检查打印是否成功而不检查pdf文件;
  • HPDF_Font_TextWidth返回要打印的文本的宽度(以圆点表示);以及
  • 函数HPDF_Font_MeasureText给出可以打印到给定宽度的字节数(应答3)。

使用这些函数,您可以将文本分成几行。例如(对于2):

  • 使用HPDF_Font_MeasureText设置iLength
  • 使用strInput.rfind("-",iLength)查找可能的换行位置(如连字符、点、冒号或空格)
  • 如果找到可能的换行位置,请在该位置插入\n;否则:在iLength处插入换行符。

你可能会遇到的另一个问题是盒子的高度。如果你有太多的行,它们将不会被打印。当将文本拆分成几行时,您可以跟踪所需的行数,而框中可能的行数是通过框高和行间距(由HPDF_Page_SetTextLeading设置)获得的。

如果你有太多的文字,大小的盒子,力婆鲁什么都做不了。唯一的方法是增加方框大小和减小字体大小(答1)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36742490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档