我希望这是一个简单的问题!
我正在生成一个简单的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}
设置列宽需要添加什么?我已经尝试改变单词中的列宽,然后检查输出,但至少可以说它有点模糊不清!
答案 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 }
\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)
检查此链接
你可以制作自己的文件。
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