iTextSharp.dll的换行代码修改

weixin_38473303 2019-05-31 08:08:01
这是iTextSharp.dll中DefaultSplitCharacter类的一段不让标点符号位于行首的换行代码。
但是运行代码后,有时行尾会空出2个字符,明明可以放入上一行,为什么给挤到下一行呢?
请老师们指教。谢谢!


public bool IsSplitCharacter(int start, int current, int end, char[] cc, PdfChunk[] ck)
{
char c;
if (ck == null)
c = cc[current];
else
c = (char)ck[Math.Min(current, ck.Length - 1)].GetUnicodeEquivalent(cc[current]);
if (c <= ' ' || c == '-')
{
return true;
}
if (c < 0x2e80)
return false;
return ((c >= 0x2e80 && c < 0xd7a0)
|| (c >= 0xf900 && c < 0xfb00)
|| (c >= 0xfe30 && c < 0xfe50)
|| (c >= 0xff61 && c < 0xffa0))
&& (current >= cc.Length - 1 || ",。;、:!?".IndexOf(cc[current + 1]) == -1);
}
...全文
339 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38473303 2019-06-13
  • 打赏
  • 举报
回复
引用 7 楼 jhonsonzhang 的回复:
你把magrin.right缩小试试。定义document的时候,缩小2。

现在就是这样通过变换页边距,调整文字显示效果。
因为是看到效果后,再试着调整页边距。效率太低......
jhonsonzhang 2019-06-12
  • 打赏
  • 举报
回复
你把magrin.right缩小试试。定义document的时候,缩小2。
weixin_38473303 2019-06-12
  • 打赏
  • 举报
回复
经测试,奇怪的是“、”和“。”不会出错,可以不提前换行,其他标点“,!:;?”都会提前换行,行尾空出两个字符,这是是什么原因?
请大神们指教!
weixin_38473303 2019-06-06
  • 打赏
  • 举报
回复
谢谢提供思路!
但是每条记录的文本都不是固定的字数,总不能每次都计算需要多少行,每行多少字吧。
而且生成PDF文件要求的字体、字号、每行28字,都是固定的。
现在是,第28个字符碰巧是“,”号,结果在第26个字就换行了,那两个字完全可以放在上一行呀。我指的是这个问题。
3个T 2019-06-05
  • 打赏
  • 举报
回复
可以设置一下字体大小 间隔 在看下 (怎么设置可以在网上查找)
weixin_38473303 2019-06-05
  • 打赏
  • 举报
回复
朋友,你给的链接中并没有答案呀~
在段落中没有修改文字间距的方法,行高也不能控制段落中的换行。
jhonsonzhang 2019-06-05
  • 打赏
  • 举报
回复
给楼主一个思路供参考:既然都已经需要Itextsharp 来做精确的格式控制了。那你还不如事先把文本处理好,直接使用itextsharp的Paragraph。直接就搞定了。绝对完全按文本的格式生成。
得鹿梦鱼、 2019-05-31
  • 打赏
  • 举报
回复
修改文字中的间距和行高 https://blog.csdn.net/zxfc88/article/details/7520439

16,549

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧