我正在动态创建一个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包含一些代码和背景图形,还有样式,字体等信息。
提前致谢!