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

问题描述 投票:2回答:2

我目前正在将网页转换为可以轻松打印为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都看起来不错!

html css pdf pdf-generation
2个回答
2
投票

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

并且在这种情况下,他们必须为作业创建PostScript

文件。 (仅在下一阶段,当虚拟的“ PDF打印机”起作用时,才从此PostScript输入创建PDF。与LibreOffice,OpenOffice和MS Office不同,浏览器还不能直接“导出到PDF “。更新:显然,Chrome浏览器会这样做:正如yms在注释中所述:打开打印对话框,使用打印机选择下拉列表选择“另存为PDF”。但是,我发现默认情况下它不打印背景。 )

现在您必须考虑两件事:

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

    所以您首先应该问自己:

    • 浏览器的打印设置是什么?

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

  2. 如果不是,那不是PDF打印机的故障。

  3. 关于透明度功能:PostScript不支持透明度

  4. (仅PDF支持)。因此,对于PostScript输出,透明区域需要“展平”(即,转换为试图模拟透明对象外观的位图图像)。

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

    只要您需要“打印到PDF”

    ,在地狱中就没有机会真正获得PDF文件的透明性(您只会得到“ mimikry”位图)。

    一旦浏览器开始能够“导出为PDF”],这里的透明度将开始发生。或者,您可能会找到第三方工具,该工具可以从HTML 直接转换

到PDF(无需使用print中间步骤,该步骤首先转换为可打印的PostScript)。

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

  • [Amyuni webkitpdf Windows库,具有用于C#和C ++的绑定。

  • 1
    投票

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

    © www.soinside.com 2019 - 2024. All rights reserved.