边框不打印Chrome浏览器PDF查看器

时间:2016-12-01 13:11:00

标签: html css google-chrome pdf wkhtmltopdf

我使用wkhtmltopdf将HTML页面转换为PDF文件。客户端然后下载PDF并打印它。

如果你使用像Adobe Reader这样的东西打开PDF文件,这很有用,但是如果你使用Chrome的内置PDF查看器,这将无效。

PDF将在Chrome PDF Viewer中正常显示(几乎)。 (所有边框实际上都是相同的厚度,我不知道它为什么显示中间边框更粗): enter image description here

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

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

1 个答案:

答案 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预览版处理边框崩溃的方式),但是现在这有望帮助你。