phpword 总页数无法从浏览器下载中正确打印

问题描述

我正在创建一个 PHPword 文档,它应该在每个页面上都有一个“第 3 页,共 8 页”样式的页脚。文档在服务器上正确生成。当它在 MS Word 中打开时,页码正确显示在我的电脑屏幕上。当我在 Word 中打开打印预览时,一切看起来都正确。当我将它发送到打印机时,它就搞砸了。我的打印机的物理页面显示第 1 页,共 1 页,第 2 页,共 2 页,第 3 页,共 3 页,依此类推。无论是将其发送到真实打印机还是发送到虚拟 PDF 打印机,都会发生这种情况。

问题似乎是文件如何打开。

我的代码发布在下面。最后一行代码创建了一个可点击的链接,该链接将把 word 文件从服务器下载到我本地机器的下载文件夹中,然后我的浏览器让我可以选择通过屏幕底部的按钮在 MS Word 中打开文件。我不知道如何或为什么,但这一系列操作是导致问题的原因。

当我以这种方式打开文件时,MS Word 首先在受保护的视图中打开。当您启用编辑时,它会进入兼容模式。如果我从那里打印文件,就会遇到上述问题。

如果我将文件保存到计算机上的其他位置,系统会提示我将文件保存为新格式并讨论兼容模式。然后,如果我关闭文件并使用更新后的格式重新打开它,它会打印得很好。

如果我直接从我的下载文件夹而不是使用浏览器按钮打开文件,同样的问题也存在。

如果我导航到我的服务器文件夹并将 word 文档从我的服务器下载到我的机器上,然后打开它,即使文件说它仍处于兼容模式,它也会正确打印。

我有我能想到的所有问题。为什么通过浏览器下载文件对总页数无法正确打印有任何影响?

<?PHP

//Starting WORD Document
//Calling necessary support file
require_once("vendor/autoload.PHP"); 
//Creating a new document
$PHPWord = new \PHPOffice\PHPWord\PHPWord();

$section = $PHPWord->addSection();

$footer = $section->addFooter();
$footer->addPreserveText('Page {PAGE} of {NUMPAGES}');

//Start Text of Document
$section->addText("SomeText");
$section->addPageBreak();
$section->addText("SomeText");
$section->addPageBreak();
$section->addText("SomeText");
$section->addPageBreak();
$section->addText("SomeText");
$section->addPageBreak();
$section->addText("SomeText");
$section->addPageBreak();


// Saving the document as OOXML file...
$objWriter = \PHPOffice\PHPWord\IOFactory::createWriter($PHPWord,'Word2007');
$objWriter->save('PageNumbersTest.docx');

$time = date("h:i:sa");
$file = "PageNumbersTest.docx?=";
$url = $file . $time;

echo '<a href='.$url.'>Click here</a>';

?>

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)