SAS-RTF合并之告别空白页

2020-06-02 11:20:19 浏览数 (1)

日前,小编亲眼目睹了RTF合并删空白页的痛苦,数百页的文档穿插着无数无规律的空白页,删一页电脑卡半分钟。既然用了小编写的宏程序,又让小编亲眼目睹了删空白页的痛苦,那么就安排了一下,来解决一下这个问题,让合并后的RTF再无空白页。

相关文章

SAS-如何简单快捷的实现RTF合并

SAS-RTF的合并【完善篇】

SAS-文本转化成RTF编码

如上三篇,是小编关于RTF合并相关的历史推文,随着时间的变化,程序也在不断的更新,功能也逐步趋于完善。那么今天本文将用四行代码告别空白页,再也不用手动删除空白页了。

正文

空白页

先来看一下空白页,如上图中第6、8为空白页,第13页把脚注挤到了下一页。那么显然合并完正确的RTF不应该是这样子的。于是小编用UE打开了RTF,找到了产生空白页位置的代码。

RTF编码

根据小编多年编程的经验并掐指一算得知,一定有RTF编码影响这空白页。既然有了这个方向,那么小编就在RTF编码中观察与测试,发现了在删除sect空白页就消失了,于是第一句告别空白页的代码产生了。

代码语言:javascript复制
data want;
    set want;
    line=tranwrd(line,'sectsectdlinex0endnheresbknonepgwsxn16837pghsxn11905lndscpsxnheadery720footery1440marglsxn1440margrsxn1440margtsxn720margbsxn1440','');
run;

如果对want数据集不了解,那么这里小编来解释一下,Want为小编RTF合并后RTF编码存放的最终数据集,变量line存放了所有合并后RTF的编码。这一步是删掉那一串编码(需要强调,基于template可能不同,这句代码可能有出入,小编手中测试文档有限,并不能确认我这行代码能通用,但能确认的是你一定有类似这行代码的存在的,而且在删除sect后能解决部分空白页)。这句编码可能会产生部分空白页,但是解决的范围是很受限制的。仍然有大量空白页存在。显然这句话编码还有其他帮凶。

RTF编码

于是继续探索发现,将目光移动到前一句编码的上几行时,眼光一亮,par在RTF中是换行符的存在。那么空白页背后的元凶是否有它一份,于是经过一番尝试后,得出了如下代码。

代码语言:javascript复制
data want;
    set want;
    line=tranwrd(line,'sectsectdlinex0endnheresbknonepgwsxn16837pghsxn11905lndscpsxnheadery720footery1440marglsxn1440margrsxn1440margtsxn720margbsxn1440','');
    line=tranwrd(line,'}par}{pagepar}','}}{page}');
    line=tranwrd(line,'pard{par}{pardplainqc{','pard{}{pardplainqc{');
    line=tranwrd(line,'}par}','}}');
run;

在加完这几行代码后,运行合并程序,再也没有空白页了。如果对RTF合并不了解,可以看本文前的专辑。

添加位置

程序下载

公众号回复:RTF合并V3.0,获取V3.0免费宏包及V1.0源码。V2.0是给表格添加索引,基于大家用的template可能都不一样,索引就没有提供源码,添加索引的方法在小编历史推文中有介绍。或者用小编的V3.0中的IndexYN将文档名作为索引进行添加。如需想将表格标题添加索引,可联系小编进行私人订制。

0 人点赞