word 2003 xml - 用PHP制作word文件 - 空行,但为什么呢?

时间:2012-08-17 00:11:50

标签: php xml ms-word

我正在动态创建一个word文档的XML文件。它包含文本和图像。

我已经尝试过PHPDocx和PHPWord - 当我尝试以边框显示图像或使用文本正确格式化时,它们无法正常工作。

这就是为什么我开始使用PHP创建自己的XML并且我已经与它斗争了15个小时。

虽然我讨厌word文件,但我取得了一些进展。不幸的是,我添加到文件的每个段落都以回车符开头。因此,如果我在新段落中添加一个字符串,它不会从字符串开始,而是使用一个空行然后是字符串。

我的代码如下所示:

$scheme = 'http://schemas.microsoft.com/office/word/2003/wordml';
$vscheme = 'urn:schemas-microsoft-com:vml';
$oscheme = 'urn:schemas-microsoft-com:office:office';
$w10scheme = 'urn:schemas-microsoft-com:office:word';

$feed = file_get_contents("template.xml");
$xml = new SimpleXmlElement($feed);

function AddText($p, $fontsize, $text, $scheme) {
        $r =    $p->addChild('r', null, $scheme);
        $rpr =  $r->addChild('rPr', null, $scheme);
        $rpr->addChild('noProof', null, $scheme);
        $rpr->addChild('sz', null, $scheme)->addAttribute('w:val', $fontsize, $scheme);
        $rpr->addChild('sz-cs', null, $scheme)->addAttribute('w:val', $fontsize, $scheme);
        $rpr->addChild('lang', null, $scheme)->addAttribute('w:val', 'PL', $scheme);;
        $rpr->addChild('ind', null, $scheme)->addAttribute('w:left', 426, $scheme);
        $r->addChild('t', $text, $scheme);
    }


$bloki = $xml->children('w', TRUE);
foreach ( $bloki as $blok ) {
    if ( $blok->getName() == 'body' ) {
             $p = $blok->addChild('p', null, $scheme);
             AddText($p, 26, 'Hello World', $scheme);
    }
}

你知道为什么这段代码在开头会产生空行吗? Template.xml包含一些代码和背景图形,还有样式,字体等信息。

提前致谢!

0 个答案:

没有答案