在RTF中设置列宽

时间:2011-03-09 12:16:36

标签: width rtf

我希望这是一个简单的问题!

我正在生成一个简单的RTF表,随后在MS Word中打开。该表生成正常,但列宽有点小,导致一些自动换行(不是我想要的)。

我生成的RTF代码用于两行三列表,格式为:

\trowd \trautofit1 
\intbl
\cellx1 
\cellx2 
\cellx3 
{a\cell b\cell c\cell }{\trowd \trautofit1 
\intbl
\cellx1 
\cellx2 
\cellx3 
\row} 
\trowd \trautofit1 
\intbl
\cellx1 
\cellx2 
\cellx3 
{d\cell e\cell f\cell }{\trowd \trautofit1 
\intbl
\cellx1 
\cellx2 
\cellx3 
\row} 

设置列宽需要添加什么?我已经尝试改变单词中的列宽,然后检查输出,但至少可以说它有点模糊不清!

4 个答案:

答案 0 :(得分:10)

您要查找的控制字是\clwWidthN\clftsWidthN

Microsoft RTF Specification v1.9.1

- \clwWidthN
Preferred cell width. Overrides \trautofitN.
- \clftsWidthN 
Units for \clwWidthN:    
  - 0 : Null. Ignore \clwWidthN in favor of \cellxN (Word 97 style of determining cell and row width).
  - 1 : Auto, no preferred cell width, ignores \clwWidthN if present; \clwWidthN will generally not be written, giving precedence to row defaults.
  - 2 : Percentage (in 50ths of a percent).
  - 3 : Twips.

因此,在您的情况下,您可以使用\clftsWidth1(自动设置宽度)或自行设置首选百分比,例如\clwWidth2\clwWidth2500(2500 = 50%)

自动宽度

\trowd \trautofit1  
\intbl  
\clftsWidth1\cellx1  
\clftsWidth1\cellx2  
\clftsWidth1\cellx3  
{a\cell b\cell c\cell }

40% - 30% - 30%

\trowd \trautofit1  
\intbl  
\clftsWidth2\clwWidth2000\cellx1  
\clftsWidth2\clwWidth1500\cellx2  
\clftsWidth2\clwWidth1500\cellx3  
{a\cell b\cell c\cell }

答案 1 :(得分:8)

问题在于您为列设置了非常小的宽度:

\cellx1 
\cellx2 
\cellx3

要在RTF中设置列的宽度,有一个关键字'\ cellxN',其中N - 是以缇为单位的列宽。 15缇是1px。

因此,如果要创建一个包含1行和3列(每个100px)的简单RTF表,请使用以下语法:

\trowd\cellx1500\cellx3000\cellx4500
\intbl A\cell B\cell C\cell\row

你会得到一个300px,3列的简单表格 - 每列100px,带有不可见的边框。

干杯, 最大

答案 2 :(得分:2)

您需要使用cellx0,以便应用自动调整标记,或明确将数字设置为左边框的缇数。在您的示例中,您使用1 2和3,这是明确设置列宽是非常瘦。例如,像:

\ cellx5125 \ Cellx6000 \ Cellx8000

请注意,这些数字是左边距的偏移量。

如果您要进行任何RTF,我高度推荐O'Rielly的RTF Pocket Guide

答案 3 :(得分:0)

检查此链接

http://joseluisbz.wordpress.com/2014/04/26/working-rtf-html-css-and-script-files-with-my-own-packages-java-and-php/

你可以制作自己的文件。

      TblData = new RTFTable(4,4);  //4 Columns, 4 Rows

      TblData.setWideCols(1000);  //Width of 2000 to put all columns
      TblData.setWideCol(0,3000);  //Width of 3000 to Column 0