Генерировать строки таблицы RTF из цикла PHP
Я пытаюсь сгенерировать RTF документ. У меня есть шаблон RTF, который имеет первую строку таблицы (заголовки). Остальные строки генерируются из PHP динамически. Я просмотрел исходный документ RTF и скопировал код для конкретной строки, я заменил текст на имена переменных типа:
%%a%% - means that in my PHP code, it looks for %%a%% and replaces with some text
Скрипт работает, на стороне PHP все работает, генерирует заменяет переменные. Но я получаю сообщение об ошибке, как только я пытаюсь открыть созданный документ RTF:
Таблица в этом документе повреждена.
Мой код RTF для генерации внутри цикла PHP таков:
\trowd \irow1\irowband1\ts18\trgaph108\trleft-813\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10
\trftsWidth3\trwWidth10795\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tbllkhdrrows\tbllklastrow\tbllkhdrcols\tbllklastcol \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr
\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1728\clshdrawnil \cellx915\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1620\clshdrawnil \cellx2535\clvertalt\clbrdrt
\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1260\clshdrawnil \cellx3795\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10
\cltxlrtb\clftsWidth3\clwWidth1440\clshdrawnil \cellx5235\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1440\clshdrawnil \cellx6675\clvertalt\clbrdrt\brdrs\brdrw10
\clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1440\clshdrawnil \cellx8115\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10
\cltxlrtb\clftsWidth3\clwWidth1867\clshdrawnil \cellx9982\row }\pard\plain \qj \li0\ri0\sl360\slmult1\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0\pararsid9917761\yts18 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {
\f37\fs20\insrsid5056707 %%a%%}{\f37\fs20\ul\cf6\insrsid5335176\charrsid15606364 \cell }{\f37\fs20\insrsid5056707 %%b%%}{\f37\fs20\ul\cf6\insrsid5335176\charrsid15606364 \cell }{\f37\fs20\insrsid5056707 %%c%%}{
\f37\fs20\ul\cf6\insrsid5335176\charrsid15606364 \cell }{\f37\fs20\insrsid5056707 %%d%%}{\f37\fs20\ul\cf6\insrsid5335176\charrsid15606364 \cell }{\f37\fs20\insrsid5056707 %%e%%}{\f37\fs20\ul\cf6\insrsid5335176\charrsid15606364 \cell }{
\f37\fs20\insrsid5056707 %%f%%}{\f37\fs20\ul\cf6\insrsid5335176\charrsid15606364 \cell }{\f37\fs20\insrsid5056707 %%g%%}{\f37\fs20\ul\cf6\insrsid5335176\charrsid15606364 \cell }\pard\plain
\ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\b\f37\fs28\ul\cf6\insrsid5335176
Если кто-нибудь знает синтаксис RTF, есть ли где-нибудь ошибка синтаксиса? Пожалуйста помоги.
1 ответ
Решение
Ваш RTF
просто недопустимо отсутствующие заголовки, определение шрифта, незакрытое }
так далее. ..
Пытаться
$template = "test/hey_main.rtf";
$newfile = "test/hey_x.rtf";
$rtf = file_get_contents($template);
$replace = array("%%no%%"=>1,"%%name%%"=>"Giorgi","%%Value%%"=>"Sample RTF");
$rtf = str_replace(array_keys($replace), array_values($replace), $rtf);
file_put_contents($newfile, $rtf)
hey_main.rtf
Пример RTF
{\rtf1\ansi\ansicpg1252\deff0\deflang1033\deflangfe1033{\fonttbl{\f0\froman\fprq2\fcharset0 Times New Roman;}{\f1\fswiss\fprq2\fcharset0 Calibri;}}
\viewkind4\uc1\trowd\trgaph108\trleft-108\trbrdrl\brdrs\brdrw10 \trbrdrt\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trpaddl108\trpaddr108\trpaddfl3\trpaddfr3
\clbrdrl\brdrw10\brdrs\clbrdrt\brdrw10\brdrs\clbrdrr\brdrw10\brdrs\clbrdrb\brdrw10\brdrs \cellx3084\clbrdrl\brdrw10\brdrs\clbrdrt\brdrw10\brdrs\clbrdrr\brdrw10\brdrs\clbrdrb\brdrw10\brdrs \cellx6276\clbrdrl\brdrw10\brdrs\clbrdrt\brdrw10\brdrs\clbrdrr\brdrw10\brdrs\clbrdrb\brdrw10\brdrs \cellx9468\pard\intbl\b\f1\fs22 No\b0\cell\b Name\b0\cell\b Value\b0\cell\row\trowd\trgaph108\trleft-108\trbrdrl\brdrs\brdrw10 \trbrdrt\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trpaddl108\trpaddr108\trpaddfl3\trpaddfr3
\clbrdrl\brdrw10\brdrs\clbrdrt\brdrw10\brdrs\clbrdrr\brdrw10\brdrs\clbrdrb\brdrw10\brdrs \cellx3084\clbrdrl\brdrw10\brdrs\clbrdrt\brdrw10\brdrs\clbrdrr\brdrw10\brdrs\clbrdrb\brdrw10\brdrs \cellx6276\clbrdrl\brdrw10\brdrs\clbrdrt\brdrw10\brdrs\clbrdrr\brdrw10\brdrs\clbrdrb\brdrw10\brdrs \cellx9468\pard\intbl %%no%%\cell %%name%%\cell %%Value%%\cell\row\pard\sa200\sl276\slmult1\par
}