一种PDF文档的版面重排方法与流程

专利2022-06-29  202


本发明涉及文档排版领域,特别涉及一种pdf文档的版面重排方法。



背景技术:

随着信息技术的快速发展,大量信息和资料以pdf文档的形式保存和传播。pdf文档无论在哪种pdf阅读器上,无论在哪种打印机上,无论在哪种操作系统下,都可保证精确的颜色和准确的显示/打印效果,忠实地再现原稿排版效果,包括每一个字符、颜色和图像。

在阅读pdf文档时,用户经常希望对文档进行一些注释。因此,大多数pdf阅读器,比如adobeacrobatreader,福昕pdf阅读器,迅捷pdf阅读器,都有文档注释功能。但是,pdf文档的页面一般都比较紧凑,只有两侧的空白处才能用于注释,不仅空间有限,而且用户阅读起来也很不方便,严重地限制了pdf文档的注释功能。

为了解决pdf文档的注释展示空间不足的问题,需要对pdf文档的页面进行重新排版,从而给注释挤出一定的展示空间。



技术实现要素:

本发明所要解决的技术问题是,将pdf页面进行重新排版,为注释留下一定的展示空间。

为解决上述技术问题,本发明所采用的技术方案是一种pdf文档的版面重排方法,包括导入pdf文档每页的页面信息,提取bt和et之间文本及其排版信息,把这些矢量文本进行纵向压缩,横向保持不变,替换对应的文本及其排版信息,生成版面重排的页面,所有版面重排后的页面组合成新的pdf文档。

所述的把这些矢量文本进行纵向压缩,纵向压缩系数(压缩后文本高度与原文本的比值)为60%至80%。

所述的把这些矢量文本进行纵向压缩,横向保持不变,可以通过文本变换操作tm的纵向缩放参数乘以纵向压缩系数,同时位移操作td和td的纵向参数放大到纵向压缩系数的倒数倍来实现的。

所述的把这些矢量文本进行纵向压缩,横向保持不变,也可以通过字体大小操作tf乘以纵向压缩系数,同时横向缩放操作tz放大到纵向压缩系数的倒数倍来实现。

本发明有三点有益效果:(1)每行文本上方都有了相对充足的空间用于展示注释;(2)由于文本的宽度不变,pdf的版面完全保持原来的布局;(3)文本虽然高度变小,但是宽度完全不变,原文依然清晰可读,仅仅影响了一些美观。

附图说明

图1为本发明pdf文档的版面重排前后的对比图。

图2为本发明pdf文档的不同压缩系数下版面重排后的对比图。

具体实施方式

下面结合附图和实施例对本发明做进一步阐述。

本发明的实施例采用开源软件itext软件包(https://itextpdf.com/)对pdf文档进行解析和修改。

因为pdf的页面是独立的,本实施例只选择一页pdf文档,其余页按照实施方式同样处理即可。实施例选用的正式出版物的英文期刊《physicalreviewletters》的一篇文章:competitionforgraphene:graphyneswithdirection-dependentdiraccones(https://journals.aps.org/prl/abstract/10.1103/physrevlett.108.086804)的pdf版本作为例子进行说明。

实施例1

首先设定纵向压缩比yscale(压缩后文本高度比原文本高度)为70%,对pdf页面进行重新排版。其次将pdf文档逐页读入,用itext软件包的getpagecontent函数把pdf压缩格式的源码转换成多行文本数组linearr,把每行文本按照空格分割为字符串数组wordarr,对字符串数组wordarr的所有元素进行扫描。如果元素的值为“tm”,则将其前面的第三wordarr元素(纵向缩放参数)乘以纵向压缩比yscale;如果元素的值为“td”或者“td”,则将前一个wordarr元素(纵向位移参数)除以yscale;然后将处理后的所有wordarr元素用空格串接起来。所有linearr元素再用换行符串接起来,生成重新排版的一个pdf页面,对每个pdf页面依次进行处理,直到所有页面都处理完毕,组合成版面重排后的pdf文档。

重排后的pdf页面见附图1的下图(20),与原pdf页面(10)相比,可以看到,行之间的间距变大,足以放下一行文字;而文字的位置和宽度完全保持,从而pdf版面保持不变。重排后的pdf页面中的文字仅仅是被纵向压缩了一些,仍然十分清楚,完全不影响阅读。因此,这种版面重排方法达到了为注释留下展示空间的目的。

实施例2

类似于实施例1,纵向压缩比yscale同样设定为70%。将pdf文档读入,分解为页面,页面分解为一行行文本,并将每行文本用空格分解为数组wordarr,然后扫描数组wordarr的所有元素。如果元素的值为“bt”,则在其后添加“143tz”,将文本的横向缩放参数tz(100为正常不变的值)变大为100/70%=143;如果元素的值为“tf”,则将前一个元素(字符大小参数)的值乘以70%,把字体变小为原来的70%。这样,横向宽度先变大而字体变小,就保证了字符的横向宽度保持不变,而纵向高度变为原来的70%。这样处理后的元素串接起来,重新生成行,行再串接起来生成一个pdf页面,页面组合成重新排版的pdf文档。重排得到的页面效果与附图1的重排版面(20)完全一样,因此也可以达到为注释留出展示空间的目的。

实施例3

类似于实施例1,纵向压缩比yscale分别为50%,60%,70%,80%,90%,对pdf文档进行页面重排,得到附图2,其中50、60、70、80、90分别对应于纵向压缩比yscale为50%、60%、70%、80%、90%。从附图2可以看出,纵向压缩比为50%时,原文本被压缩得变形很大,影响阅读;而60%时还可以文字比较清晰,不影响阅读,所以最小的纵向压缩比为60%。而纵向压缩比为90%时,挤出的空间太小,不足展示一行注释文字;而80%时留出的空间基本上可以展示一行略小的文字,因此最大的纵向压缩比为80%。综合起来,为注释展示留出空间的最佳纵向压缩比为60%至80%。

通过上述三个实施例,可以看到,可以通过排版重排,简单地对原pdf版面的文本的进行纵向压缩,就可以在保留了pdf的内容和布局下,为注释展示留出足够的空间,有利于用户在阅读过程中随时随处注释。


技术特征:

1.一种pdf文档的版面重排方法,包括导入pdf文档每页的页面信息,提取bt和et之间文本及其排版信息,把这些矢量文本进行纵向压缩,横向保持不变,替换对应的文本及其排版信息,生成版面重排的页面,所有页面组合成版面重排后的新pdf文档。

2.根据权利要求1所述的把这些矢量文本进行纵向压缩,其特征在于,纵向压缩系数(压缩后文本高度与原文本的比值)为60%至80%。

3.根据权利要求1所述的把这些矢量文本进行纵向压缩,横向保持不变,其特征在于,可以通过文本变换操作tm的纵向缩放参数乘以纵向压缩系数,同时位移操作td和td的纵向参数放大到纵向压缩系数的倒数倍来实现。

4.根据权利要求1所述的把这些矢量文本进行纵向压缩,横向保持不变,其特征在于,也可以通过字体大小操作tf乘以纵向压缩系数,同时横向缩放操作tz放大到纵向压缩系数的倒数倍来实现。

技术总结
为了给PDF文档留下足够的空间用于添加注释,本发明提供一种PDF文档的版面重排方法,包括导入PDF文档每页的页面信息,提取BT和ET之间文本及其排版信息,把这些矢量文本进行纵向压缩,横向保持不变,替换对应的文本及其排版信息,生成版面重排的页面,所有页面组合成版面重排后的新PDF文档。版面重排后的PDF文档的文本行间距变大,足以放下一行注释文字,原版面基本不变,不影响阅读。

技术研发人员:不公告发明人
受保护的技术使用者:吕海港
技术研发日:2020.02.10
技术公布日:2020.06.05

转载请注明原文地址: https://bbs.8miu.com/read-54905.html

最新回复(0)