在Chrome PDF Viewer中无法打印边框

jtjikinw  于 2023-06-19  发布在  Go
关注(0)|答案(1)|浏览(287)

我正在使用wkhtmltopdf将HTML页面转换为PDF文件。然后客户端下载PDF并打印它。
如果你使用Adobe Reader之类的东西打开PDF文件,这很有效,但如果你使用Chrome内置的PDF查看器,这将不起作用。
PDF将在Chrome PDF Viewer中(几乎)正确显示。(所有边框其实都是一样的厚度,不知道为什么中间边框显示的比较厚):

但是,如果您从Chrome PDF Viewer打印PDF,某些边框将消失:

我已经尝试过让边框比1PX厚,我尝试了pt而不是px。

js4nwp54

js4nwp541#

你的边界有多厚?下载PDF,在chrome中打开,然后放大到400%左右。边界是否会重新显示?如果是这样,那么你的问题是Chrome PDF查看器如何处理细线渲染。这一直是一个问题for several years,这是由于Chrome PDF Viewer自at least 2011以来呈现表格边框的问题而加剧的。
大多数消息来源都说要禁用Chrome PDF Viewer,以便它可以回退到Adobe Reader。这是可行的,但这对我来说是一个不可用的选项,因为我们的服务器通过PhantomJS处理PDF,修改Chrome在其中的操作方式将对我们提供的其他自定义PDF解决方案产生未知的影响。This article是一个让我想到它可能是细线渲染器的例子。似乎有一个2px的阈值厚度,Chrome PDF Viewer开始在表格边框上给出不一致的结果。您可以通过以下片段来演示这一点:

table, th, td {
    /* 1.965354px, this does not work */
    border: 0.52mm solid #ddd;
}

table, th, td {
    /* 2.00315px, this does work */
    border: 0.53mm solid #ddd;
}

将厚度设置为2px应该可以解决您的问题。这不是一个真正的解决方案(我的直觉告诉我,根源可能是Chrome PDF Preview如何处理边框折叠),但现在这将有望帮助你。

相关问题