2016-12-01 194 views
0

我正在使用wkhtmltopdf将HTML页面转换为PDF文件。客户端然后下载PDF并打印它。边框不在Chrome浏览器中打印PDF查看器

如果您使用Adobe Reader之类的软件来打开PDF文件,这很有效,但如果您使用Chrome的内置PDF查看器,则无法使用。

在Chrome PDF查看器中,PDF将像这样正确显示(几乎)。 (所有的边界实际上是相同的厚度,我不知道为什么会出现中间厚边框): enter image description here

但是,如果您打印从Chrome PDF查看PDF格式,有些边框将只是dissapear: enter image description here

我已经尝试使边框比1px更厚,并且我尝试了pt而不是px。

+1

您可以发布您要转换为PDF页面的HTML/CSS吗? –

回答

1

你设置边界有多厚?下载PDF文件,用chrome打开它,然后放大到400%左右。边框显示了吗?如果是这样,那么您的问题在于Chrome PDF查看器如何处理细线渲染。这是一个问题for several years,由于Chrome PDF查看器自从at least 2011以来存在渲染表格边界的问题,这一事实加剧了这一问题。

大多数消息来源表示禁用Chrome浏览器PDF查看器,以便它可以回退到Adobe Reader。这是有效的,但这对我来说是不可用的选择,因为我们的服务器通过PhantomJS处理PDF文件,并且修改了Chrome在其中运行的方式会对我们提供的其他自定义PDF解决方案产生未知影响。 This article是我指出它是细线渲染器的可能性。 Chrome浏览器查看器开始给出不一致的表格边框结果,其阈值厚度似乎为2px。您可以使用以下snippits来演示:

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预览处理border-collapse的根源可能与此有关),但现在这将有望帮助您。

相关问题