Установка ширины столбца в RTF - PullRequest
5 голосов
/ 09 марта 2011

У меня есть, я надеюсь, простой вопрос!

Я создаю простую таблицу 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} 

Что мне нужно добавить, чтобы установить ширину столбца? Я попытался изменить ширину столбца в word, а затем проверить вывод, но это немного неясно, если не сказать больше!

Ответы [ 4 ]

10 голосов
/ 03 апреля 2011

Контрольные слова, которые вы ищете: \clwWidthN и \clftsWidthN

Спецификация Microsoft RTF 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 }
8 голосов
/ 11 апреля 2011

Проблема в том, что вы установили очень маленькую ширину для столбца:

\cellx1 
\cellx2 
\cellx3

Чтобы задать ширину столбца в RTF, существует ключевое слово '\ cellxN', где N - ширина столбца в твипах. 15 твипов это 1px.

Таким образом, если вы хотите создать простую таблицу RTF с 1 строкой и 3 столбцами по 100 пикселей каждый, используйте следующий синтаксис:

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

Вы получите простую таблицу размером 300 пикселей, 3 столбца по 100 пикселей каждая с невидимыми границами.

Cheers, Max

2 голосов
/ 01 апреля 2011

Вам нужно либо использовать cellx0, чтобы применялся тег автоподбора, либо explicity установить число равным числу смещений от левой границы.В вашем примере вы используете 1 2 и 3, что является эксплозностью, устанавливая ширину столбцов очень тонкой.Например, что-то вроде:

\ cellx5125 \ Cellx6000 \ Cellx8000

Обратите внимание, что эти числа смещены от левого поля.

Если вы собираетесь сделать какой-либо RTF,Я настоятельно рекомендую руководство по карману RTF от O'Rielly

0 голосов
/ 28 апреля 2014

Проверьте эту ссылку

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
...