专栏首页SAS程序分享号号号SAS-RTF合并之告别空白页

SAS-RTF合并之告别空白页

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

相关文章

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

SAS-RTF的合并【完善篇】

SAS-文本转化成RTF编码

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

正文

空白页

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

RTF编码

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

data want;
    set want;
    line=tranwrd(line,'\sect\sectd\linex0\endnhere\sbknone\pgwsxn16837\pghsxn11905\lndscpsxn\headery720\footery1440\marglsxn1440\margrsxn1440\margtsxn720\margbsxn1440','');
run;

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

RTF编码

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

data want;
    set want;
    line=tranwrd(line,'\sect\sectd\linex0\endnhere\sbknone\pgwsxn16837\pghsxn11905\lndscpsxn\headery720\footery1440\marglsxn1440\margrsxn1440\margtsxn720\margbsxn1440','');
    line=tranwrd(line,'}\par}{\page\par}','}}{\page}');
    line=tranwrd(line,'\pard{\par}{\pard\plain\qc{','\pard{}{\pard\plain\qc{');
    line=tranwrd(line,'}\par}','}}');
run;

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

添加位置

程序下载

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

本文分享自微信公众号 - SAS程序分享号号号(xiaocgn),作者:setup

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-06-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

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

    今天小编打算分享一段关于RTF合并的小程序...在平时出Tabel的过程中,很多人都是一个表一个表的出,最后要面临一个RTF合并的过程,很多公司都有自己的方式进...

    Setup
  • SAS-如何随心所欲的抽取样本

    我们在处理大样本的时候,往往会遇到随机抽样的需求,在SAS中抽样的方法有一个专门的Proc过程步(Proc surveyselect),这个过程步可以简单快速的...

    Setup
  • SAS-RTF的合并【完善篇】

    这一篇推文是针对上一篇推文,进行SAS程序与功能上的完善!点击此处将可跳转至上一篇推文:SAS-如何简单快捷的实现RTF合并。在上一篇推文推送后,有不少人都对R...

    Setup
  • Docker 构建 Tengine 2.2.2 镜像

    Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型...

    緣來
  • 如何升级 Debian 9 (Stretch) 到 Debian 10 (Buster)

    Before we move on with the upgrade, let's fully upgrade our current Debian Jessi...

    DPCloudX
  • OpenCV3.4 'nullptr' was not declared in this scope

    那就给他返回一个空地址即可 原代码 编译环境Windows 目标编译平台Windows 编译工具Mingw5.3 报错文件io_win32.cc 报错行 94...

    Pulsar-V
  • PHP代码审计

    代码审计顾名思义就是检查源代码中的缺点和错误信息,分析并找到这些问题引发的安全漏洞,并提供代码修订措施和建议。

    信安之路
  • maven中打不同JDK版本的jar包

    最近项目中,I商机用jdk1.7,而ltc用jdk1.8,所以提供给他们的api都要不同的版本

    星痕
  • 也谈 setTimeout

    也谈 setTimeout setTimeout ,延迟一段事件执行代码,当然这是最基本的用法,这里不说基本用法。 jQuery 中的轮询 轮询,可能是 set...

    IMWeb前端团队
  • 正则表达式好难学!9个易懂的例子,轻松入门JavaScript正则

    正则表达式是用来描述字符模式的对象。它被用来在文本中执行模式匹配(pattern-matching)以及”查找-替换”(search-and-replace)的...

    Joel

扫码关注云+社区

领取腾讯云代金券