我使用wkhtmltopdf将HTML页面转换为PDF文件。客户端然后下载PDF并打印它。
如果你使用像Adobe Reader这样的东西打开PDF文件,这很有用,但是如果你使用Chrome的内置PDF查看器,这将无效。
PDF将在Chrome PDF Viewer中正常显示(几乎)。 (所有边框实际上都是相同的厚度,我不知道它为什么显示中间边框更粗):
但是,如果您从Chrome PDF Viewer打印PDF,某些边框将会消失:
我已经尝试使边框比1px厚,我尝试了pt而不是px。
答案 0 :(得分:3)
你设置边框有多厚?下载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开始在表格边框上显示不一致的结果。您可以使用以下snippits演示此内容:
public class MyPojo
{
private String alignment;
private String title;
private String hOffset;
private String height;
private String width;
private String name;
private String src;
private String vOffset;
public String getAlignment ()
{
return alignment;
}
public void setAlignment (String alignment)
{
this.alignment = alignment;
}
public String getTitle ()
{
return title;
}
public void setTitle (String title)
{
this.title = title;
}
public String getHOffset ()
{
return hOffset;
}
public void setHOffset (String hOffset)
{
this.hOffset = hOffset;
}
public String getHeight ()
{
return height;
}
public void setHeight (String height)
{
this.height = height;
}
public String getWidth ()
{
return width;
}
public void setWidth (String width)
{
this.width = width;
}
public String getName ()
{
return name;
}
public void setName (String name)
{
this.name = name;
}
public String getSrc ()
{
return src;
}
public void setSrc (String src)
{
this.src = src;
}
public String getVOffset ()
{
return vOffset;
}
public void setVOffset (String vOffset)
{
this.vOffset = vOffset;
}
@Override
public String toString()
{
return "ClassPojo [alignment = "+alignment+", title = "+title+", hOffset = "+hOffset+", height = "+height+", width = "+width+", name = "+name+", src = "+src+", vOffset = "+vOffset+"]";
}
}
将厚度设置为2px可以解决您的问题。这不是一个真正的解决方案(我的直觉告诉我根据Chrome PDF预览版处理边框崩溃的方式),但是现在这有望帮助你。