PDF使用wkhtmltopdf/tables/acrobat-reader显示错误

due*_*l0r 4 acrobat pdf-generation foxit wkhtmltopdf

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

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

我刚刚意识到,只有设置了背景颜色才会发生.

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


这是一个PDF示例.分隔字符"a"和"b"的边界根据缩放系数消失.我这样生成了这个文件:

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
Run Code Online (Sandbox Code Playgroud)

Ala*_*air 6

你的线不会丢失,它太小而无法在屏幕上渲染.

这是因为PDF是根据页面大小呈现的,而不是根据页面上的功能大小来呈现.页面上的所有内容都按比例放大或缩小以使其适合PDF页面,因此您的线条按比例缩小并因此消失:1/3 = 0.333 =无线条.

要解决此问题,您有以下选择:

  1. 使用以下命令减少wkhtml2pdf上的页面大小: --page-size A4
  2. 使用以下方法精确缩小页面的宽度和高度: --page-width 9in --page-height 6in
  3. 让你的线更粗.

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