我不知道是否可以使用TemplateProcessor在PHPWord模板中添加图像.
我有一个文件(form.docx).该文档是一个模板.我阅读了字段(例如$ {name})并将其替换为文本.
$template = new TemplateProcessor('form.docx');
$template->setValue('name', $name);
Run Code Online (Sandbox Code Playgroud)
但现在,我想放一张图片,但我不知道我是怎么做的.我尝试这个:
$img='img.jpg';
$template->setValue('image',$img);
Run Code Online (Sandbox Code Playgroud)
不起作用.我尝试其他形式,创建一个部分并将此部分添加到模板但这失败了.
$phpWord = new PhpWord();
$section = $phpWord->createSection();
$section->addImage('img.jpg', array('width'=>210, 'height'=>210, 'align'=>'center'));
$template = new TemplateProcessor('form.docx');
$template->setValue('image',$section).
Run Code Online (Sandbox Code Playgroud)
有人知道如何使用模板将图像放入.docx吗?
谢谢.
当我使用Html阅读器将我的html转换为docx时,读者被切断了我的桌子.
PHP示例:
$reader = IOFactory::createReader('HTML');
$phpWord = $reader->load($this->getReportDir() . '/' . $fileName);
$writer = IOFactory::createWriter($phpWord);
$writer->save($this->getReportDir() . '/' . $fileName);
Run Code Online (Sandbox Code Playgroud)
表格示例:
<table>
<tr>
<td>? ?/?</td>
<td>????? ?????????? ??????????? ??????????? ??????????? ??????</td>
<td>?????????? ?????????? ????????</td>
<td>% ?? ?????? ?????????? ?????????? ????????</td>
</tr>
</table>
Run Code Online (Sandbox Code Playgroud) 我正在使用PHPWord加载docx模板并替换标签{test}.这工作得非常好.
但我想用html代码替换值.不可能直接将其替换为模板.据我所知,现在有使用PHPWord的方法.
我看了htmltodocx.但它接缝它也无法工作,是否可以将代码的和平转换<p>Test<b>test</b><br>test</p>为工作的doc标记?我只需要基本代码,没有样式.但Linebreaks必须工作.
我目前正在尝试使用PHPWord库及其模板系统处理 docx 文件。我已经找到并更新了这个库的路径(不记得名字,但它不重要)可以处理表(复制它的行,然后在每一行上使用 PHPWord 的标准 setValue())。
如果我创建自己的文档,xml中的数据是正常结构,所以要替换的变量 ${variable} 在它自己的标签中,如下所示:
<w:tbl>
<w:tr>
...
${variable}
</w:tr>
</w:tbl>
Run Code Online (Sandbox Code Playgroud)
我简化了代码,在实际代码中还有许多其他标签描述大小、样式等。
我的问题是我必须从其他人那里处理文件,我被禁止进行重大更改,我得到了一份文件,其中在某些时候它们是一个带有一个空白行的表格。我添加了 ${variable} 变量并通过 PHPWord 运行它。问题是,它失败了。经过一番研究,我发现源 XML 如下所示:
....
...
${va
...
riab
...
le}
....
Run Code Online (Sandbox Code Playgroud)
(再次大大简化,但你得到了图片)
这种结构对我来说是个问题,因为克隆行的函数使用 strpos()、substr() 和正则表达式来工作,并且不适用于这种结构(我无法想象这样做的优雅方式)。
所以问题是 - 有谁知道为什么 docx 这样做以及如何阻止他?我正在通过 word 而不是 PHP 寻找解决方案(我需要当前的函数无需太多编辑即可工作)
当我使用PHPTable创建一个简单的表时,行似乎有点太高了.我希望它们与字体具有相同的高度,并且在单元格中文本的下方或上方没有填充/间距..但是没有任何"填充"就无法使它工作...
码:
$styleTable = array('borderSize'=>0,
'borderColor'=>'eeeeee',
'cellMargin'=>0,
'spaceBefore' => 0,
'spaceAfter' => 0,
'spacing' => 0);
$PHPWord->addTableStyle('myOwnTableStyle', $styleTable);
$table = $section->addTable('myOwnTableStyle');
foreach($aryData['json_data'] as $data) {
$table->addRow();
$table->addCell(4000)->addText($data['label'] . ':', array('bold'=>true));
$table->addCell(8000)->addText($data['value']);
}
Run Code Online (Sandbox Code Playgroud) 我目前正在使用 PHPWord 生成我的文档,但我想在文档中添加一条水平线。就像一个
有人有关于此功能的更多信息吗?
谢谢!
最近我下载了从 github 下载的 php word,但我不知道如何通过这个读取 word 文件?这个库没有帮助。我看到一个与 php excel 相同的文件,但不知道如何使用 . 下面的文件:simple01 sample.php
<?php
error_reporting(E_ALL);
if(php_sapi_name() == 'cli' && empty($_SERVER['REMOTE_ADDR'])) {
define('EOL', PHP_EOL);
}
else {
define('EOL', '<br />');
}
require_once '../src/PHPWord.php';
// New Word Document
echo date('H:i:s') , " Create new PHPWord object" , EOL;
$PHPWord = new PHPWord();
// New portrait section
$section = $PHPWord->createSection();
// Add text elements
$section->addText('Hello World!');
$section->addTextBreak(2);
$section->addText('I am inline styled.', array('name'=>'Verdana', 'color'=>'006699'));
$section->addTextBreak(2);
$PHPWord->addFontStyle('rStyle', array('bold'=>true, 'italic'=>true, 'size'=>16));
$PHPWord->addParagraphStyle('pStyle', array('align'=>'center', 'spaceAfter'=>100));
$section->addText('I am …Run Code Online (Sandbox Code Playgroud) 我的基本 PHPWord 设置正在运行。
这是我的代码:
<?php
require_once 'PhpWord/Autoloader.php';
\PhpOffice\PhpWord\Autoloader::register();
function getEndingNotes($writers)
{
$result = '';
// Do not show execution time for index
if (!IS_INDEX) {
$result .= date('H:i:s') . " Done writing file(s)" . EOL;
$result .= date('H:i:s') . " Peak memory usage: " . (memory_get_peak_usage(true) / 1024 / 1024) . " MB" . EOL;
}
// Return
if (CLI) {
$result .= 'The results are stored in the "results" subdirectory.' . EOL;
} else {
if (!IS_INDEX) {
$types …Run Code Online (Sandbox Code Playgroud) 当我使用addText()它时align=center,左,右工作正常,但当我尝试使用align=justify脚本工作没有问题,但当我尝试打开.docx文件时,它给我错误,文件没有打开.
如果有人知道解决方案,将不胜感激.
$text = "some text";
$PHPWord->addFontStyle('r2Style', array('bold'=>false, 'italic'=>false, 'size'=>12));
$PHPWord->addParagraphStyle('p2Style', array('align'=>'center', 'spaceAfter'=>100));
$section->addText($text, 'r2Style', 'p2Style');
Run Code Online (Sandbox Code Playgroud) 我正在做一个作业,我需要捕获在 html 上生成的内容并将其发送到 word 文档,以便可以进一步发送。我已经捕获了内容并使用json对象将其发送到php并生成了word文档,但是当html包含特殊字符时,它会导致word文档被损坏。我尝试htmlspecialchars在addText函数中使用,但没有帮助。
这是我的 php 代码
\PhpOffice\PhpWord\Autoloader::register();
$phpWord = new \PhpOffice\PhpWord\PhpWord();
$jsonData2 =json_decode($_POST['outputData'],true);
foreach ($jsonData2 as $key => $value) {
$section-> addTextBreak();
$section->addText($key, array('size' => 16, 'bold' => true, 'color' => '#3b5999'));
$section-> addTextBreak(2);
foreach ($value as $key => $value) {
$section->addText($value, array('size' => 11));
$section-> addTextBreak();
}
}
Run Code Online (Sandbox Code Playgroud)
有人可以如何捕获特殊字符并将其显示到word doc,这样就不会导致文件损坏