iText7解套(二)中文行首行末标点符号处理
中文排版输出文件时,有的标点符号不能在行首如:“)”,“;”等,有的不能在行末如:“(”,“《”等....
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解套(二)中文行首行末标点符号处理相关推荐
- IDEA跳至行首行末快捷键
shift + 数字键盘: Shift + 7调到一行的行首 Shift + 1:调制一行的行末 Shift + 9:调制全篇开头 Shift + 3:调制全篇结尾
- iText7 解套 (一) 原生方法输出带斜线表格
iText7相对iText5做了比较大的改动,网上找的一些文章有些参考价值. 大部分建议使用图片插入方式解决.但图片大小不合适会造成斜线和表格边框粗细不一致.颜色不一致.锯齿等问题. 参考官网例子: ...
- 21-MySQL-Ubuntu-快速回到SQL语句的行首和行末
行首: Ctrl + A 行末:Ctrl + E 转载于:https://www.cnblogs.com/summer1019/p/11043692.html
- linux删除每行首字符,vim技巧:删除行首、行末的空白字符,删除空白行
使用 :help + 命令查看 + 的含义如下: + Matches 1 or more of the preceding atom, as many as possible. 使用 :help /* ...
- linux shell使用sed在行首和行末插入内容
在某些场景我们需要对每一个行进行操作,例如添加行头,行尾内容. 定义: s/^/HEAD&/g 是在行首添加内容,g是应用到每一行,按需求添加 s/$/&TAIL/g 是在行末添加内容 ...
- sublime text 光标移动行末/行首
背景 使用Sublime有移动至行首与文件首部的需求 解决方式 sublime text没有直接跳转至行首行尾的,因为不能判断哪里是段首和短位.但可以通过连续移动单词的方式快速到达行首或行尾. 快捷键 ...
- HAProxy详解(二):HAProxy基础配置与应用实例
一.HAProxy基础配置与应用实例: 1.快速安装HAProxy集群软件: HAProxy的官网: https://www.haproxy.org/#down下载HAProxy的源码包. 安装: [ ...
- logback 常用配置详解(二) appender
详细整理了logback常用配置 不是官网手册的翻译版,而是使用总结,旨在更快更透彻的理解其配置 logback 简介 logback常用配置详解(一)<configuration> an ...
- Spark SQL原理及常用方法详解(二)
Spark SQL 一.Spark SQL基础知识 1.Spark SQL简介 (1)简单介绍 (2)Datasets & DataFrames (3)Spark SQL架构 (4)Spark ...
最新文章
- epoch如何设置_使用TFRecordDataset时如何设置epoch计数器?
- vn.py 2.0.1 发布,全功能交易程序开发框架
- java栈存储_【转载】Java中的数据存储(堆、栈、常量池)
- Mysql(7)——auto_increment简介
- 火星人乘坐核动力飞船回故乡
- c语言怎么让图形界面单独显示,「分享」C语言如何编写图形界面
- JavaScript this 关键字
- kodi pvr 不能安装_「保姆级教程」家庭影音多媒体中心第5节—KODI18安装/设置IPTV...
- 孙宏斌,真的押上了全部身家?
- 导购效果跟踪: SPM
- 从零搭建LNMP环境(三) - 安装MySQL数据库服务器
- Chrome应用商店打不开问题
- redis 获取验证码
- C++解决猜大小问题
- 关于高压线路如何防山火
- 数据结构之树从入门到如土(四)----从零开始入门Rust实现一颗B树(未完成待续)
- 006输出9行内容,第1行输出1,第2行输出12,第3行输出123,以此类推,第9行输出123456789。
- 神一样的美国高中作文比喻集锦
- 网络打印两个基本端口(LPD和9100)的相关知识
- 1、MySQL——MySQL数据库管理系统、数据库基本概念