繁体   English   中英

从PHP循环生成RTF表行

[英]Generate RTF table rows from PHP loop

我正在尝试生成RTF文档。 我有一个RTF模板,其中包含表格的第一行(标题)。 其余的行是从PHP动态生成的。 我查看了RTF文档的源代码并复制了特定行的代码,然后将文本替换为某些变量类型的名称:

%%a%% - means that in my PHP code, it looks for %%a%% and replaces with some text

该脚本有效,PHP方面一切正常,它生成替换变量。 但是,当我尝试打开生成的RTF文档时,我得到一个错误:

本文档中的表已损坏。

我在PHP循环内生成的RTF代码是这样的:

\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语法,我在某处是否有语法错误? 请帮忙。

您的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
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM