首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用wkhtmltopdf /table/ acrobat-reader显示错误

用wkhtmltopdf /table/ acrobat-reader显示错误
EN

Stack Overflow用户
提问于 2011-11-29 13:11:55
回答 3查看 6.2K关注 0票数 4

我使用html页面使用wkhtmltopdf生成了一个PDF文件。html页面使用1像素边框的表。如果我用Acrobat或Foxit打开PDF,他们会随机错过绘制垂直边框,但如果我放大,它们就会出现。所以我猜这是某种舍入误差,因为线条太细了?

如果我打印PDF,它看起来不错。

我刚刚意识到,只有在设置背景颜色时才会发生这种情况。

我怎么才能解决这个问题?

这是一个示例PDF格式。分隔字符"a“和"b”的边框将根据缩放因子消失。我生成了这样的文件:

代码语言:javascript
复制
echo "
 <html><body>
  <span style="border: 1px solid black; background-color:red;">a</span>
  <span style="background-color:red">b</span>
 </body></html>"
| wkhtmltopdf.exe - test.pdf
EN

回答 3

Stack Overflow用户

发布于 2011-12-08 09:54:24

您的行没有丢失,只是太小,无法在屏幕上呈现。

这是因为PDF是根据页面大小呈现的,而不是根据页面上的功能大小呈现的。页面上的所有内容都是向上或向下缩放的,以使其适合于PDF页面,因此您的行正在缩小,从而消失:1/3= 0.333 =无一行。

要解决这个问题,您有以下选项:

  1. 使用: wkhtml2pdf减少页面大小:--page-size A4
  2. 使用:--page-width 9in --page-height 6in精确地减少页面的宽度和高度
  3. 让你的线更厚。

在这种情况下,备选案文3可能更可取。这不是一个非常优雅的修复,但你没有太多的选择可玩。如果您是在低级别上编写PDF,那么就可以完成一些事情,但是由于您使用的是wkhtml2pdf,所以您只能使用它允许您设置的内容。

票数 6
EN

Stack Overflow用户

发布于 2012-07-06 09:27:07

我的桌子边框也有类似的问题。帮助我的是在我的css中使用pt而不是px

请参见W3C

但一般来说,你会使用一套不同的单位显示在屏幕上,而不是印刷在纸上。

票数 4
EN

Stack Overflow用户

发布于 2015-11-10 23:58:10

我假设您想要细行,否则就不会将宽度设置为1 1px。

在用wkhtmltopdf制作的PDF中显示细的发际线边框的关键是使用SVG背景,如下所示:

代码语言:javascript
复制
.hairline-border {
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%'><rect x='0' y='0' width='100%' height='100%'  stroke='black' fill='white' stroke-opacity='1' /></svg>");
}

对于发际线分隔符(如<hr>),我使用:

代码语言:javascript
复制
.hairline {
  height: 0.5mm;
  width: 100%;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%'><line x1='0mm' y1='0mm' x2='300mm' y2='0mm' style='stroke:black; stroke-width:0.25mm;' /></svg>");
}

我是这样用它们的:

代码语言:javascript
复制
<div class="hairline-border"></div>

它在Firefox和Safari/Chrome中正确呈现,wkhtmltopdf至少保持了原来的线宽。有一些讨论认为,SVG的base64转换将保证在IE上具有更好的兼容性。坦白地说,我不在乎IE是否快乐,但如果必须的话,我会看到CSS中的内联SVG

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8311297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档