将页面转换为PDF时强制html元素的透明度

时间:2012-08-02 00:02:34

标签: html css pdf pdf-generation

我目前正在将网页转换为可以轻松打印为pdf同时保持相同外观的格式。许多打印到pdf工具不允许您打印背景图像/颜色,所以我试图通过在表的标题元素下放置纯色图像来解决这个问题。 现在它看起来像这样:

<img src="/image.png" width="100%" style="margin-bottom:-90px">
<table><th>Header1</th><th>Header2</th>...

当我使用浏览器正常查看时,看起来好像标题元素具有纯色背景但是当尝试打印到pdf时,<th>元素在图像上方具有空白背景。有没有办法强制这些元素被视为透明的文本与图像?或者可能有一种更简单的方法来解决背景问题?

修改
所以我真正的问题在于我正在尝试使用尽可能多的htmltopdf工具访问页面,最终这不是一个选项,因为它在一个浏览器或另一个和一个打印机中总是看起来不同将强制利润,而另一个不会,等等。我的解决方案是我在PHP中创建了一个简单的应用程序,使用wkhtmltopdf打印页面,我必须首先在我的服务器上安装。一旦完成,无论浏览器如何,pdf看起来都很好!

3 个答案:

答案 0 :(得分:2)

当您“打印到PDF”网页时,首要责任在于浏览器创建打印作业。

在这种情况下,他们必须为作业创建 PostScript 文件。 (只有下一个阶段,当虚拟“PDF打印机”开始发挥作用时,从这个PostScript输入创建PDF。与LibreOffice,OpenOffice和MS Office不同,浏览器不能直接“导出到PDF“更新:显然,Chrome确实如下:正如yms在评论中解释:打开打印对话框,使用打印机选择下拉列表选择”另存为PDF“。但是,我发现默认情况下它不打印背景。)

现在你必须考虑两件事:

  1. 大多数浏览器都有设置,允许“打印图像”/“不打印图像”和“打印背景颜色”/“不打印背景颜色”等等。

    所以你应该首先问自己:

    • 我的浏览器有哪些打印设置?

    • 我的浏览器是否将PostScript移交给具有我想要的颜色的PDF打印机?

    如果不是,那不是PDF打印机的错误。

  2. 至于透明度功能: PostScript不支持透明度 (仅限PDF)。因此,对于PostScript输出,需要“展平”透明区域(即,转换为 位图图像,这些图像试图模仿透明对象的外观 )。

    但是,并非所有的应用程序和浏览器都能在这种“扁平化”方面做得很好。

    只要您需要“打印到PDF”,就没有机会在PDF文件中获得真正的透明度(您只能获得'mimikry'位图)。

  3. 一旦浏览器开始能够“导出为PDF”,这里的透明度才会开始发生。或者,您可以找到第三方工具,可以直接将从HTML转换为PDF(不使用打印中间步骤,首先转换为可打印的PostScript)。

答案 1 :(得分:1)

正如@Kurt Pfeifle所提到的,最好的选择可能是使用直接从HTML转换为PDF的工具,而无需通过打印机。以下是您可以尝试的2个免费组件:

答案 2 :(得分:0)

我在Google Chrome浏览器中找到了一个解决方案,该解决方案在Windows 10 / Google Chrome 86.0.4240.111版上适用于我。

只需在打印前转到页面末尾!现在,按Ctrl + P并从目标位置选择“另存为pdf”。您将获得具有透明度的PDF!

如果您在打印之前没有转到html页的末尾,则您将没有透明度!

相关问题