怎样控制SAS ODS RTF输出中的字体,位置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样控制SAS ODS RTF输出中的字体,位置相关的知识,希望对你有一定的参考价值。

参考技术A ods tagsets.ExcelXP options(sheet_name="&name.") style=XLStatistical;
proc print data=&data. noobs label;
run;
%mend;
* style 需要另外设置, label 表示在excel输出sas标签;
ods results noresults;
ods listing close;
ods tagsets.ExcelXP file="..\file_name.xls" options(sheet_name="xlname0") style=XLStyle;
proc print data=sdata0 noobs label;
run;
*table 1;
%o2xl(xlname1,sdata1);
*table 2;
%o2xl(xlname2,sdata2);
……
ods tagsets.excelxp close;

在 WPF 中加载/保存 RTF 时保留字体大小

【中文标题】在 WPF 中加载/保存 RTF 时保留字体大小【英文标题】:Retaining font size when loading/saving RTF in WPF 【发布时间】:2010-11-12 16:08:28 【问题描述】:

考虑以下 RTF 文档

\rtf1\ansi\ansicpg1252\deff0\deflang1031\fonttbl\f0\fswiss\fprq2\fcharset0 Segoe UI;\f1\fswiss\fcharset0 Arial;
\*\generator Msftedit 5.41.15.1507;\viewkind4\uc1\pard\f0\fs22 Sample Text\f1\fs20\par

它包含 Segoe UI 11 pt 字体中的“示例文本”。现在,当我分别使用 WPF 的 FlowDocument 和 TextRange.Load() 和 .Save() 加载并保存文档时,字体大小减小到 10.5pt。使用 RTF 作为输入/输出时,有什么办法可以保留原来的字体大小?

【问题讨论】:

嗯,我认为可能的一件事是:1. 从RichTextBox 获取 XAML; 2.修改为每个字号加0.001; 3. 使用代码(很容易找到)通过内置类将 XAML 转换为 RTF。这样你就可以调整输入,这样你的输出就是你想要的。 【参考方案1】:

WPF 的所有测量值都以像素为单位(尽管不完全是屏幕像素)。即使您指定TextRangeFontSize

在内部,当您在 XAML 中指定 FontSize="14pt" 之类的内容时,WPF 使用 LengthConverter 并根据与您提供的测量单位相关联的因素更改限定的 double。所以 11 大约乘以 1.3333333。因此,如果您将一个普通的 double 值提供给 FontSize 属性,则单位是像素。

但是,如果您使用FontSize="14.0001pt",或将这些点乘以 1.3333334,或者甚至只是将 0.0001 添加到像素测量值,它会抵消一些东西,以至于您实际上得到 \fs22 或 \fs28(而不是 \fs21 或\fs27,分别)。这是在您在 WPF 中设置大小时使用的。

你有 \fs22、Load()、Save(),然后有 \fs21 的原因与同样的事情有关。解析器获取 RTF 并将其转换为 WPF 对象。所以 22 个半点变成了 14.666666666667 像素。当您再次 Save() 时,这些像素会转换回不同的单位,但不是很正确。 14.666666666667 像素变成了 21 个半点,而 14.6666674 像素变成了 22 个半点,这就是你想要的。

也许这些信息会让您了解如何以不同的方式获取 RTF。也许您可以改为获取 XAML 并将其转换。也许有一个不错的免费第三方 XAML 到 RTF 转换器,它没有令人讨厌的舍入错误。

【讨论】:

很好地解释了这个问题。与此同时,我正在四处寻找这样的第三方组件。唉,没有太大的成功。

以上是关于怎样控制SAS ODS RTF输出中的字体,位置的主要内容,如果未能解决你的问题,请参考以下文章

SAS学习7(gpolt过程gchart过程图形输出ods功能假设检验,ttest过程,rank过程,秩和检验(非参数检验))

SAS infile 导入txt示例

从具有相同名称但不同扩展名的文件(*.pdf 和 *.rtf)中,如果 *.rtf 较新,则在控制台上输出消息

WPS系统中怎样将“收入.rtf”文档中的表格数据转换到工作表“Sheet1”中

log4j怎样控制只输出自己写的代码的日志,不输出框架中的日志

SAS 报表输出一些新式控制