中文排版输出文件时,有的标点符号不能在行首如:“)”,“;”等,有的不能在行末如:“(”,“《”等....

word等软件中有默认设置,也可以很方便的修改设置对某些符号做特别处理。使用iText7输出中文文档时,就不那么方便了。

值得庆幸的是,iText默认输出虽然没有考虑中文的符号处理,但考虑了欧美文字的断句问题。我们有机会接管这块处理,自定义符号断句折行规则。

这个规则由接口

/*** Interface for customizing the split character.*/
public interface ISplitCharacters {/*** The splitting implementation is free to look ahead or look behind characters to make a decision.* @param glyphPos the position of {@link Glyph} in the {@link GlyphLine}* @param text an array of unicode char codes which represent current text* @return true if the character can split a line.*/boolean isSplitCharacter(GlyphLine text, int glyphPos);}

参数:GlyphLine包含当前要输出的文本,具体结构看文档

参数:glyhPos是当前输出的字符位置。

方法很简单,则iText在计算布局时,需要断句折行时,调用isSplitCharacter方法判断是否可以在当前字符位置断句折行。当返回ture时,可以折行。返回false时,则反之。

我们通过实现该接口,在当前字符后一个字符为不能在行首的标点符号时,在当前字符为不能在行末的标点符号时,均返回false,则阻断折行,即可实现标点符号行首行末的控制。

使用时,创建完Document后,调setSplitCharacters设置实例即可实现全文控制。

        PdfDocument pdfDocument = new PdfDocument(new PdfWriter(output));Document document = new Document(pdfDocument, PageSize.A4);document.setSplitCharacters(new ChineseSplitterCharacters());

完整实现参见资源((本人下资料比较猛,弄得很穷,没有积分了,见谅。锁定积分:2分))。

包含通常的较全的标点符号规则。

https://download.csdn.net/download/BigBad/34896924

iText7解套(二)中文行首行末标点符号处理相关推荐

  1. IDEA跳至行首行末快捷键

    shift + 数字键盘: Shift + 7调到一行的行首 Shift + 1:调制一行的行末 Shift + 9:调制全篇开头 Shift + 3:调制全篇结尾

  2. iText7 解套 (一) 原生方法输出带斜线表格

    iText7相对iText5做了比较大的改动,网上找的一些文章有些参考价值. 大部分建议使用图片插入方式解决.但图片大小不合适会造成斜线和表格边框粗细不一致.颜色不一致.锯齿等问题. 参考官网例子: ...

  3. 21-MySQL-Ubuntu-快速回到SQL语句的行首和行末

    行首: Ctrl + A 行末:Ctrl + E 转载于:https://www.cnblogs.com/summer1019/p/11043692.html

  4. linux删除每行首字符,vim技巧:删除行首、行末的空白字符,删除空白行

    使用 :help + 命令查看 + 的含义如下: + Matches 1 or more of the preceding atom, as many as possible. 使用 :help /* ...

  5. linux shell使用sed在行首和行末插入内容

    在某些场景我们需要对每一个行进行操作,例如添加行头,行尾内容. 定义: s/^/HEAD&/g 是在行首添加内容,g是应用到每一行,按需求添加 s/$/&TAIL/g 是在行末添加内容 ...

  6. sublime text 光标移动行末/行首

    背景 使用Sublime有移动至行首与文件首部的需求 解决方式 sublime text没有直接跳转至行首行尾的,因为不能判断哪里是段首和短位.但可以通过连续移动单词的方式快速到达行首或行尾. 快捷键 ...

  7. HAProxy详解(二):HAProxy基础配置与应用实例

    一.HAProxy基础配置与应用实例: 1.快速安装HAProxy集群软件: HAProxy的官网: https://www.haproxy.org/#down下载HAProxy的源码包. 安装: [ ...

  8. logback 常用配置详解(二) appender

    详细整理了logback常用配置 不是官网手册的翻译版,而是使用总结,旨在更快更透彻的理解其配置 logback 简介 logback常用配置详解(一)<configuration> an ...

  9. Spark SQL原理及常用方法详解(二)

    Spark SQL 一.Spark SQL基础知识 1.Spark SQL简介 (1)简单介绍 (2)Datasets & DataFrames (3)Spark SQL架构 (4)Spark ...

最新文章

  1. epoch如何设置_使用TFRecordDataset时如何设置epoch计数器?
  2. vn.py 2.0.1 发布,全功能交易程序开发框架
  3. java栈存储_【转载】Java中的数据存储(堆、栈、常量池)
  4. Mysql(7)——auto_increment简介
  5. 火星人乘坐核动力飞船回故乡
  6. c语言怎么让图形界面单独显示,「分享」C语言如何编写图形界面
  7. JavaScript this 关键字
  8. kodi pvr 不能安装_「保姆级教程」家庭影音多媒体中心第5节—KODI18安装/设置IPTV...
  9. 孙宏斌,真的押上了全部身家?
  10. 导购效果跟踪: SPM
  11. 从零搭建LNMP环境(三) - 安装MySQL数据库服务器
  12. Chrome应用商店打不开问题
  13. redis 获取验证码
  14. C++解决猜大小问题
  15. 关于高压线路如何防山火
  16. 数据结构之树从入门到如土(四)----从零开始入门Rust实现一颗B树(未完成待续)
  17. 006输出9行内容,第1行输出1,第2行输出12,第3行输出123,以此类推,第9行输出123456789。
  18. 神一样的美国高中作文比喻集锦
  19. 网络打印两个基本端口(LPD和9100)的相关知识
  20. 1、MySQL——MySQL数据库管理系统、数据库基本概念

热门文章

  1. 2019-11 前端技术汇总
  2. 记离职同事给我们的建议之一:关于人员培养方面的思考
  3. 未来中国智能制造九大趋势
  4. 树莓派官方摄像头测试
  5. C++使用OPENSSL进行RSA加密,java服务端解密
  6. 简单记录下手机root 过程
  7. python中的连乘_python连乘
  8. 微信跳一跳python自动代码解读1.0
  9. 离散数学:常用的数学符号
  10. 幽默笑话,隔壁的长舌妇,木子家原创