Skip to content

1028

工作

  • 问题:打印 pdf 时第二页没有水印

本地测试打印的时候,第二页是ok 的,服务端的 electron 环境是 2.x 版本的,打印的结果中第二页没有水印,使用的库是 gwm/github

代码大致为:

js
// 先插入水印
gwm.creation({ txt: '水印' }) // 默认挂载在 body 上
// 再插入 dom
document.body.innerHTML = dom

这种情况观察页面发现,滚动页面的时候,水印是不滚动的,水印只覆盖了当前屏幕内的元素

尝试修改为

html
<body>
  <div id="container"></div>
</body>

<script>
// 先插入水印
gwm.creation({ txt: '水印', container: '#container' }) // 默认挂载在 body 上
// 再插入 dom
const container = document.querySelector('#container')
container.innerHTML = dom
</script>

代码这么写,水印可以跟随着 页面一起滚动,覆盖了所有页面,打印的时候第二页也有水印;

原因:

默认情况是在 body 里面新增 一个 固定在页面顶层的 div,这个 div 使用绝对定位的宽高,使用了 inset: 0px !important; 默认宽高就是占满当前屏幕大小;

可以看到使用 如下 3 行代码 效果

html
<style>
  div {
    position: fixed;
    background: blue;
    inset: 0px !important;
  }
</style>
<body>
<div ></div>
</body>

查看这个页面的 例子,可以看到第一个 div 元素的样式即是水印样式,手动编辑网页加入很多的 <br> 让内容高于屏幕高度,发现水印的高度不变,但是 body 内的高度变了,这就是为什么,第二页的内容没有显示出水印了,因为水印高度没有被内容撑开

水印的样式如下:

css
element.style {
  pointer-events: none;
  z-index: 999999;
  animation: 0s ease 0s 1 normal none running undefined !important;
  inset: 0px !important;
  display: block !important;
  opacity: 1 !important;
  overflow: hidden !important;
  page: undefined !important;
  position: fixed !important;
  transition: undefined 0s ease 0s !important;
  background: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNThweCIgaGVpZ2h0PSIxMDBweCI+CiAgICAgICAgICAgICAgICA8dGV4dCB4PSIwcHgiIHk9IjUwcHgiIGR5PSIxMnB4IgogICAgICAgICAgICAgICAgICAgIHRleHQtYW5jaG9yPSJzdGFydCIKICAgICAgICAgICAgICAgICAgICBzdHJva2U9IiM4YTJiZTIiCiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLW9wYWNpdHk9IjAuMiIKICAgICAgICAgICAgICAgICAgICBmaWxsPSJub25lIgogICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT0icm90YXRlKC0xNSwwIDUwKSIKICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodD0iMTAwIgogICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZT0iMTIiCiAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgIDIwMjEvMTAvMjggVG9wIHNlY3JldAogICAgICAgICAgICAgICAgPC90ZXh0PgogICAgICAgICAgICA8L3N2Zz4=);
}

好文推荐

Released under the MIT License.