【发布时间】:2016-04-15 06:49:47
【问题描述】:
我正在使用 wkhtmltopdf 将 html 转换为 pdf,并且使用以下代码可以完全正常地进行转换:
shell_exec('wkhtmltopdf http://www.example.com/Haryana.htm Haryana.pdf');
现在,假设html 文件中隐藏了一些 DIV。说,
在Haryana.htm
<div style="display:none;">Hello</div>
所以,“Hello”这个词也不会在转换后的 PDF 中打印(这很明显)。
我需要做的是将所有隐藏的文本显示到转换后的 PDF 中。
到目前为止,我尝试的是,创建了一个 JS 文件,例如 external-js.js,其中包含显示所有隐藏 DIV 的代码
var elements = document.getElementsByTagName('DIV')
for (var i = 0; i < elements.length; i++){
if (elements[i].style.display == 'none') {
elements[i].style.display = 'block';
}
}
并在创建 PDF 时应用此 JS 文件,如下所示:
shell_exec('wkhtmltopdf --enable-javascript --run-script /var/www/html/search/external-js.js http://www.example.com/Haryana.htm Haryana.pdf');
尽管如此,PDF 转换得很好,但隐藏的文本不可见。
请帮我在 pdf 中显示所有隐藏的文本。我希望我能解决这个问题。
注意:我无法对 html 文件进行更改,因为我们有数千个这样的文件。
更新:当添加 debug-javascript 选项并在 putty 中运行以下代码时
wkhtmltopdf --debug-javascript --enable-javascript --run-script /var/www/html/search/external-js.js http://www.example.com/Haryana.htm Haryana.pdf;
我得到以下输出:
Loading pages (1/6)
Warning: undefined:0 SyntaxError: Invalid flags supplied to RegExp constructor.
Counting pages (2/6)
Resolving links (4/6)
Loading headers and footers (5/6)
Printing pages (6/6)
Done
其中有一些警告。我确信这个警告是因为--run-script /var/www/html/search/external-js.js 而出现的,但为什么呢?我已经按照官方文档添加了这个。
我被这个困住了......有人可以帮帮我吗?
【问题讨论】:
-
我认为您应该在 HTML 文件中添加一个功能,例如页码功能。根据文档是否在其中找到页面的编号,您的 div 将样式更改为“style.display = 'block'”。您可以使用 Java 一次更改所有 html 文件。
-
我无法修改 HTML 文件,因为同一文件也用于在浏览器中呈现。
标签: javascript php html linux wkhtmltopdf