【硬核】思源导出之 PDF 水印

本贴最后更新于 226 天前,其中的信息可能已经天翻地覆

水印的定义

WIKI 中,水印的定义是:

水印(watermark)是一种能让人识别纸上图案的技术,当光线照射纸张时,纸张上会显现出各种不同阴影,这些阴影组成的图案就是水印。

而在思源中,处理水印的方式是使用一款 pdfcpu​ 制作的 watermark​ 来处理的。

由于市面上有关 watermark​ 水印的使用方法入门较高,且不契合思源,于是就有了这篇文章的产生。

选项如何填写/配置/使用?

开始使用水印。首先你需要在思源【设置(快捷键 alt + p)】-> 【导出】这里面找到下面这两个选项:

image

水印文本或水印文件路径

这个选项支持输入三种格式的内容,分别是文本(text)、图片(image)和 PDF 文档(pdf)。

官方为此贴心的提供了自动匹配机制,也就意味着你只需填写以上支持内容即可。例:

支持格式 填写例子
文本(text) 我是文本
图片(image) D:\logo.png
PDF 文档(pdf) D:\test.pdf

设置和默认效果如下:

image

这里的图片(image)和 PDF 文档(pdf)需要注意的是:要你自己机器路径里面有这些文档,才可以正常识别滴~

可惜这里 PDF 没有办法在后面添加 :X​(X 是指定 PDF 的页数,意思是指定获取 PDF 第几页用来做水印)。目前的操作逻辑是:PDF 一页页对应模式。 不过没关系,谁会用 PDF 来做水印呀~

水印位置、大小和样式

重点来啦,配置水印的位置、大小、样式都在这个选项。在思源里,经过我的测试目前可以用的主要是这几个:

参数 参数解释 参数使用例子 使用例子简写
position 水印位置 position:center pos:c
scalefactor
水印放大缩小 scalefactor:0.5 abs/rel scale:0.5 rel
strokecolor 水印文字描边颜色 strokecolor:#808080 strokec:#808080
fillcolor 水印文字颜色 fillcolor:#808080 color:#808080
rendermode 水印文字渲染模式 rendermode:2 mo:2
rotation 水印的旋转角度 rotation:0 rot:0
opacity 水印的不透明度 opacity:0.6 op:0.6
margins 水印的边距 margins:5 ma:5
backgroundcolor 水印的边距框背景颜色 backgroundcolor:#808080 bgcolor:#808080
border 水印的边界框 border:7 bo:7

在这里你可以同时配置多个参数。但是要遵守以下规则:

1)每个参数都要写成这种形势(其中符号**:**要使用英文符号):< 参数 > : < 内容 >

2)多个参数之间的要用英文 **,**符号区分开来:< 参数 > : < 内容 >, < 参数 > : < 内容 >

例如:

position:center, color:#808080, op:0.6     # 正确

position:center, bgcolor:#808080,op:0.6   # 错误(原因:,符号中文)

pos:c, rot:-90, op:0.6                    # 错误(原因::符号中文)

position 位置

Watermark​ 中,位置被分为以下几个部分:

Snipaste_2024-04-09_17-49-43_x4

这里的规则,我举个例子,比如我要把水印设置在【顶部】并且【居中】的情况,那么就可以这样拼接:

Animation

最后拼接完成的 TC​,修改为小写 tc​,然后在前面添加 pos:​。完整内容:pos:tc​。

为了更加方便的使用,Watermark​ 提供了简写的方式,比如这里提到的 position​ 就可以用 pos​ 来代替。顶部 Top​ 可以用 T​ 来代替,以此类推...

scalefactor 放大缩小

注意这里的 scalefactor​ 选项是有输入区间的:在最小 0.0​ 和最大 1.0​之间的数值,如:0.7​。

在这里还有个可选项,分别是:绝对位移 abs、相对位移 rel,属于可填可不填,它们的区别在于:

1)绝对位移(abs): 绝对位移是指水印相对于 PDF 页面的固定位置。

2)相对位移(rel): 相对位移是指水印相对于 PDF 页面的大小进行定位。

绝对位移是按照固定的点数来定位水印,而相对位移是按照页面宽度和高度的比例来定位水印。

strokecolor、fillcolor、rendermode 文字颜色

水印的颜色包括:水印描边颜色和水印本身的填充颜色两种。在这里我放在一起说是因为它们的参数很相似,均可接受以下参数:

1)RGB 浮点,即:RGB(r, g, b)。例:color:0.6 0.2 0.9​ 其中 0.6​ 是 R​,0.2​ 是 G​,0.9​ 是 B​ 。

2)RGB 十六进制,即:#RRGGBB。例:color:#000000​。

3)Watermark 中有提前预设好的值,但经测试,并未生效。

注意这里还有一个 rendermode​ 水印文字渲染模式选择。它默认支持输入以下参数:

参数解释 参数值
应用填充颜色 0
应用描边颜色 1
同时应用填充和描边颜色 2

如果你同时设置了水印描边颜色和水印本身的填充颜色两种,又想同时将其应用,只需要添加一个 mo:2​ 即可。

image

rotation 旋转

注意这里的 rotation​ 选项是有输入区间的:即在 -180.0​ 和 180.0​之间的角度(可以输入负数),如:-90​。

说到旋转,就不得不提到在 Watermark​ 里的对角线。对角线 diagonal​,其实它是一个参数,例:diagonal:2​ 或者简写成 d:2​,它默认参数是 1​,只能接受两个参数:

1)从左下角至右上角,记作 1

2)从左上角到右下角,记作 2

**很可惜,在思源中,**​**diagonal:2** 这种写法暂时不支持。所以默认的对角线就只有**diagonal:1** 即从左下角至右上角。并且基于该对角线进行旋转!

opacity 不透明度

这里的 opacity​ 选项是有输入区间的:在最小 0.0​ 和最大 1.0​之间的数值,如:0.3​。

其中 1.0​ 是完全不透明,0.0​ 是完全透明。

Animation

margins 边距框

在水印的边距 margins​ 中,你需要先设置背景颜色 backgroundcolor​ 参数,举例:backgroundcolor:#beded9​ 或者是使用简写:bgcolor:#beded9​。然后在设置水印的边距 margins​,它可接受以下的这两种方式:

1)直接设置四个边框。例:margins:5​。

2)为四个边框单独设置边距。这四个参数分别为 < 顶部 > < 右侧 > < 底部 > < 左侧 >:例:margins:5 0 5 0​。

image

border 边界框

在水印的边界框 border​ 中,你需要和上面的边距框 margins​配合使用。它的参数是这样子的,举例:border:7 round 0.3 0.7 0.7​ 或者是使用简写:bo:7 round 0.3 0.7 0.7​。你还可以使用 bo:7​ 表示我就要一个边界,这样也是可行的。

image

  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    22367 引用 • 89507 回帖 • 1 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • wwxiaoqi 3 评论

    第一次使用思源自带的分享到社区功能,发现如果有加粗的情况下,内部加粗就会变成:** : ** 这种形式,影响排版。特此分享下源文件:

    硬核思源导出之 PDF 水印.sy.zip

    链滴的 Markdown 解析没有完全兼容思源笔记,但目前没有精力优化
    JeffreyChen
    @JeffreyChen 没事,慢慢来吧。
    wwxiaoqi
  • Achuan-2 1 赞同

    我直接设置 pdf 水印放在右下角了

    Clip20240410165632.png

  • yalidabuda 1 赞同

    感谢大佬分享

  • ilovesiyuan

    大佬也介绍一下图片水印的写法吧


    用通义千问翻译了一下图片水印模板的内容:

    这段代码是 HTML 语法的一部分,具体来说它定义了一个 <span> 元素,该元素在网页中用于包裹并控制一小段文本的样式。

    • <span> 是一个行内元素,通常用来对文本进行样式处理,而不会像 <div> 那样影响布局(<div> 是块级元素,会独占一行)。

    • style<span> 标签的一个属性,用于直接在 HTML 元素上应用内联 CSS 样式。

    • style 属性中的各个样式说明以分号分隔:

      • color: #fff; 设置文本颜色为白色(#fff 代表白色十六进制 RGB 值)。
      • background-color: black; 设置背景颜色为黑色。
      • padding: 4px; 设置内容与边框之间的内填充为 4 像素。
      • border-radius: 5px; 设置边框圆角半径为 5 像素,使元素呈现圆角效果。
      • float: right; 将元素浮动至其父容器右侧。

    所以整体而言,这个 <span> 元素将会包裹文本"SiYuan",并使其显示为白色文字、黑色背景、四周内边距为 4 像素、圆角边框以及右浮动的效果。

    1 回复
    1 操作
    ilovesiyuan 在 2024-04-10 18:07:43 更新了该回帖
  • wwxiaoqi 1 评论

    这部分其实属于 HTML 编程范畴了,不太好讲。最好的方法就是直接分享些模板...

    试了一下可玩性还是比较高的
    ilovesiyuan
  • jspshsy

    image.png

    请教下,这么设置,导出图片或 PDF 文件没有水印呢。

    image.png

    1 回复
  • 把 d 盘改成大写的 D 盘

    1 回复
  • jspshsy

    改为大写也不行呢

  • jspshsy

    image.png

    改为大写还是不行

    1 回复
  • 我疑惑了,我不知道你这个为什么不行

    1 回复
  • jspshsy

    你的可以啊?还要设置其他什么吗?我也感觉奇怪呢,我看官方教程也是这样的。我文件里也有这个图片啊

    1 回复
  • 我这确实没问题。再确认一下图片路径对不对,然后把你的图片传上来我看看?

    1 回复
  • jspshsy

    logo.png

    1 回复
  • 我这里没问题,我怀疑你的路径里是不是隐藏了什么特殊字符,你直接复制下面这个粘贴到路径里试试:

    D:\logo.png
    

    image.png

请输入回帖内容 ...