我正在使用LibHaru进行与PDF生成相关的一些项目开发。我计划在一个特定的区域里加入一些文字。我用的是TextRect(),但是我在文字包装上遇到了一些问题。
下面是拆分字符串函数的代码片段:
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:在几个字符后添加空格后的字符串计数。发布于 2016-09-06 21:54:39
Libharu是一个相当低级别的pdf库。因此,它没有太多的文本格式选项,例如高级文本包装。然而,它为您提供了一些帮助:
HPDF_Page_TextRect写入打印字符的数量,这样您就可以检查打印是否成功而不检查pdf文件;HPDF_Font_TextWidth返回要打印的文本的宽度(以圆点表示);以及HPDF_Font_MeasureText给出可以打印到给定宽度的字节数(应答3)。使用这些函数,您可以将文本分成几行。例如(对于2):
HPDF_Font_MeasureText设置iLengthstrInput.rfind("-",iLength)查找可能的换行位置(如连字符、点、冒号或空格)\n;否则:在iLength处插入换行符。你可能会遇到的另一个问题是盒子的高度。如果你有太多的行,它们将不会被打印。当将文本拆分成几行时,您可以跟踪所需的行数,而框中可能的行数是通过框高和行间距(由HPDF_Page_SetTextLeading设置)获得的。
如果你有太多的文字,大小的盒子,力婆鲁什么都做不了。唯一的方法是增加方框大小和减小字体大小(答1)。
https://stackoverflow.com/questions/36742490
复制相似问题