1 选那份 PDF
这份文档是锁着的。先在这个浏览器里用 PDF 解锁把保护去掉,再把解锁后的副本拿回这里;想要的话,之后用 PDF 加密给盖好章的副本加上密码。
2 说水印该写什么、怎么放
只盖第一页 不勾的话每一页都盖。
这里只选择预览页面;导出仍按“仅第一页”设置处理。
3 盖上去
# PDF 水印 一份写着自己去了哪里的扫描件,就没法悄悄再去别的地方。 > 在浏览器里给 PDF 的每一页加上水印:给谁的、日期、名字,任意角度和透明度,任何语言。什么都不上传,页面本身不动,结果会先核对再给你下载。 This is an interactive browser tool at https://httcup.github.io/tools/watermark-pdf/. Files are processed on the device running that browser. Any deliberate sharing or optional network feature is described on the page. What follows is its written explanation; open the address to use it. ## Your 文档 are **processed in your browser**. No processing upload. 你选的那份文档,打开、盖章、写回,全都在这台机器的内存里完成,用的是从这个地址发来的代码。水印上的字是你自己的浏览器画的。这里根本没有能做上传的东西,这一页的另一头也没有服务器可以接收。 - ✗ 不上传 - ✗ 不注册 - ✓ 断网可用 - ✓ 开源 - ✓ 文件留在你的设备上 ## 怎么给 PDF 加水印 1. **选那份 PDF。** 一次一份文档。浏览器直接从你的硬盘上把它读进来,在这里打开。要密码的文档会被退回,附一个去解锁那一页的链接;其他的,包括扫描件,原样收下。 2. **打上那行字。** 这份副本是给谁的、什么时候给的:「仅供某某银行使用 · 2026 年 9 月 12 日」就是能干活的样子。任何语言、任何文字,字是你自己的浏览器画的,你能打出来的,水印就能说出来。 3. **调它怎么放,看着预览。** 大小、是沿着页面对角线还是平放、是在中间出现一次还是铺满整页、有多淡、什么颜色,以及是每一页都盖还是只盖第一页。预览是一张跟你第一页一样形状的空白页,水印就压在文件会把它放的位置上。 4. **盖上去,然后读那句写着「已核对」的话。** 那张图会被加进文档一次,每一页各得到一条画它的指令。接着做好的文件会在这里被重新打开,每一页都必须带着水印回来,页数跟原来一样,否则你不会拿到下载,只会拿到一句说明。 ## The longer version [如何为 PDF 加水印,印记究竟有什么用](https://httcup.github.io/tools/guides/watermark-a-pdf/): 贷款机构和房东为何要求扫描写名字,印记能防什么、不能防什么,写什么,以及怎样在浏览器中无需上传完成。 ## Also in the box - [PDF 涂黑](https://httcup.github.io/tools/redact-pdf/): 字从文件里删掉,然后再搜一遍这个文件来证明。 - [PDF 转 CSV](https://httcup.github.io/tools/pdf-to-csv/): 将检测到的 PDF 文本表格转换成电子表格可打开的行。 - [收据与发票识别](https://httcup.github.io/tools/receipt-invoice-extractor/): 读取照片,检查字段和裁剪结果,准备供邮件应用使用的压缩附件和合计。 - [图片转 PDF](https://httcup.github.io/tools/images-to-pdf/): 把你的图片装进一个文档。 ## Questions ### 水印能被去掉吗? 能,任何一个有 PDF 编辑器的人都能,这一页不会告诉你别的。水印不是保护。它做的是让一份副本说出自己去了哪里:一份盖着「仅供某某银行使用」的扫描件出现在另一家贷款机构,就带着它泄露出去的那个地方的名字,这正是贷款机构、房东和律师要求盖章的原因。如果这份文档根本不能被错误的人读到,那要的是密码,本站的 [PDF 加密](https://httcup.github.io/protect-pdf/)能加上一个。 ### 水印可以是中文、阿拉伯文或者别的语言吗? 可以,你能打出来的都可以。字是你的浏览器用你自己机器上的字体画的,作为一张图压在每一页上,所以水印不像 PDF 里没有嵌字体的文字那样只限于拉丁字母。代价是做完之后这些字不能被选中、不能被搜索,对水印来说这反而是对的。 ### 为什么预览里看不到我的文档? 因为本站没有 PDF 渲染器,这是有意的。要忠实地画出一页 PDF,得有字体引擎和完整的图形模型,一个浏览器那么大的引擎,而背上它会改变这里每一个工具的性质。所以预览显示的是它能诚实显示的东西:一张跟你第一页大小形状完全一样的空白页,水印压在文件会把它放的位置上,用的是写文件的同一段代码。用任何一个阅读器打开结果,就能看到两者合在一起的样子。 ### 水印底下的文档看上去会不一样吗? 不会。页面自己的绘制没有被读取,更没有被改动:每一条指令、每一个嵌入字体、每一张图片都原样复制过去,水印以你选的透明度画在上面。文字还能选、还能搜,扫描件还是原来的分辨率,什么都不会移位。文件会大一张图的大小,每一页共用这一张,几个字的水印也就几十 KB。 ### 扫描件和横着存的页面能用吗? 都能。扫描件就是一页上放着一张图,水印跟盖在别的东西上一样盖在图上。横着存的页面,也就是带着旋转、显示出来是横向的那种,会按它显示出来的样子盖:屏幕上的对角线就是屏幕上的对角线,不是扫描仪以为的那张纸的对角线。 ### 带签名的文档会怎么样? 它的签名会失效,而且没有办法绕过去。签名覆盖的是它当初签的那个文件的确切字节,所以任何改动,任何程序做的,都会让它失效。这个工具写的是一个新文件,发现原件带签名时会在结果里说明。把你的原件留着:那一份仍然是签过名的。 ### 带密码的 PDF 能加水印吗? 不能直接加,也不是在这里输密码:这一页不问密码。先在同一个浏览器里用 [PDF 解锁](https://httcup.github.io/unlock-pdf/)把密码去掉,再把解锁后的副本拿到这里盖章,然后想要的话用 [PDF 加密](https://httcup.github.io/protect-pdf/)把密码加回去。只带着限制的文件,也就是谁都打得开、却不肯打印的那种,同样会被退回,因为盖章意味着重写,而重写会把那些限制丢掉。 ### 我的文档或者我打的字会被上传到什么地方吗? 不会。文件是你自己的浏览器在你自己的硬件上读取、盖章、写出的,字也是它画的。这个工具没有服务器那一端,页面的 `Content-Security-Policy` 列出了它可以联系的每一个地址,其中没有一个属于本站。最简单的验证办法,是把网线拔掉,照样用这一页。 ### 我怎么知道每一页真的都盖上了? 因为这个工具会在你的机器上核对,并且把结果给你看。文件写好之后,它会被交给本站其他 PDF 工具用的同一个读取器,每一页回来时都必须在它的资源里带着水印的名字、并且以画出水印的那条指令收尾,页数跟原来一样。有任何一页不是这样,这次运行就报告为失败,什么都不会给你下载。 ### 有大小限制吗?要钱吗? 工具里没有写死任何限制。限制是你自己的机器:文档在处理的时候是放在内存里的,几百兆的量,一台笔记本吃得下,再往上就会吃力。它是免费的,不注册、不登录,也没有试用期。本站带广告,那是养活它的东西;广告拿不到任何关于你文档的内容。 ### 断网能用吗? 能。把页面加载一次,然后断开网络,它照样能用。这也是证明什么都没被上传的最简单的办法:一个把你的文档发出去盖章的工具,你一拔网线它就停了。 ## How the privacy claim is verifiable - **人们要加水印的文档,正是他们最不想上传的那份。** 给房东的护照扫描件。给贷款经纪的对账单。不能泄露的合同草稿。给一份文档盖上「这是给谁的」,理由就是它马上要离开你的手,而每一个提供盖章的在线工具都要你先把它交给一台陌生的服务器,那恰恰是水印要防的事。这一页做不到那件事。文件是你自己的浏览器读的,字是你自己的浏览器画的,盖好章的副本在内存里写出,页面的 `Content-Security-Policy` 列出了这一页可以联系的每一个地址,其中没有一个属于本站。把网络断掉它照样能用。 - **水印说的是一份副本去了哪里。它拦不住有人复制。** 这就是这件事诚实的大小。每一页上都压着「仅供某某银行使用,2026 年 9 月 12 日」,意味着一份出现在别处的扫描件带着它泄露出去的那个地方的名字,这正是银行、律师和房东要求盖章的原因,也是这件事值得做的原因。它不是保护:任何一个有 PDF 编辑器的人都能把水印再去掉,一个告诉你别的说法的页面是在推销什么。如果这份文档根本不能被错误的人读到,那就用 [PDF 加密](https://httcup.github.io/protect-pdf/)给它加上密码,结果下面那一排「接着去」的链接直接通到那里。 - **水印是一张图,所以任何语言、任何字体都行。** 一份 PDF 只能用它自己带着的字体、或者每个阅读器都默认有的那十四种字体来画文字,而那十四种是拉丁字母。这里没有去嵌一个字体,那要好几兆,还要一个本站决定不去背的引擎,而是让你的浏览器用你自己机器上的字体把字画一次,你打什么文字都行,然后作为一张带透明遮罩的图压在每一页上。画的分辨率打印机看不出区别。代价是做完之后这些字不能被选中、不能被搜索,对水印来说这反而是对的:它是给人看的,不是给人复制出去的。 - **页面本身不会被读取、重新渲染或者重排。** 这个工具往文档里加的是三个小对象,那张图、它的遮罩和一个透明度设置,往每一页加的是两条极小的绘制指令,一条在页面原有内容之前,一条在之后。页面自己的内容没有被解码,更没有被改动:每一条绘制指令、每一个嵌入字体、每一张图片都按原样写回去,所以扫描件还是扫描时的分辨率,文字还能选、还能搜,什么都不会移位。唯一会变的是任何一次重写都会变的东西:早先编辑留下的、已经被取代的旧对象不再带过来。 - **预览画的是位置,不是你文档的渲染。** 本站没有 PDF 渲染器,这是有意的,它也不假装有。预览显示的是一张跟你第一页大小形状完全一样的空白页,水印压在文件会把它放的位置上,用的是写文件的同一套算法,所以两者不可能不一致。你自己页面上的内容不会被画出来,因为画它需要一个浏览器那么大的引擎,而一个靠猜的预览比没有预览更糟。 - **做好的文件在交给你之前,会在这里重新打开一次。** 在那之前,上面这些话都只是这个工具在给自己判卷。所以那些马上就要变成你下载的字节,会被交给本站每一个 PDF 工具用的同一个读取器,而每一页回来时都必须在它的资源里带着水印的名字、并且以画出水印的那条指令收尾,页数跟原来一样。过不了这一关的文件会报告为失败,也不会有下载。 - **数字签名过不了这一关,有签名的时候页面会说。** 签名覆盖的是它当初签的那个文件的确切字节,所以任何重写都会让它失效,这正是签名的用处。这个工具写的是一个新文件,所以你拿回去的那份是没有签名的;发现文件带着签名时,它会在结果里说明。你的原件仍然是那份签过名的。 - **锁着的文档会先被送到隔壁。** 要密码才能打开的文件,不打开就没法盖章,而这一页不问密码。它会把这样的文件退回,附一个去 [PDF 解锁](https://httcup.github.io/unlock-pdf/)的链接,在同一个浏览器里把保护去掉;解锁后的副本拿回这里盖章,之后再用 [PDF 加密](https://httcup.github.io/protect-pdf/)把密码加回去。 - **Google 加载了什么,又没拿到什么。** 广告和统计脚本来自 Google。这两个都没有拿到关于你文档的任何东西:不是文件,不是某一页,不是文件名、大小、页数,也不是水印上的字。每一行读取、盖章或者写出 PDF 的代码都由这个源站发出,并且列在代码仓库里。 - **打赏按钮加载了什么,又没拿到什么。** 页眉上那个「Buy me a coffee」按钮,是由 cdnjs.buymeacoffee.com 的一段脚本画出来的,字体取自 Google Fonts。它就是一个链接,仅此而已:它不上报访问,也拿不到任何关于你或者你文档的东西。你不点它就什么都不会发生,而点下去要去的是别人的网站。 - **断网也能用。** 把网络断掉,这一页上的所有功能照常。这是最简单的一个证明:一个把你的文档发出去盖章的工具,这时候就停了。 **Check it yourself.** None of the above has to be taken on trust. This page is generated from the templates and config in the repository by a build script you can read and run yourself, and the result is committed to the `dist` branch — so you can diff what is served against what a build of the sources produces: https://github.com/httcup/tools The files worth reading first are `config/site.toml` for the Content-Security-Policy,水印落在页面哪里看 `src/stamp.js`,字是怎么变成一张图的看 `src/render.js`,往文档里加的三个对象和往每一页加的两个看 `src/apply.js`。这几个都够不着网络,旁边负责读和写的部分也一样。
怎么给 PDF 加水印
- 选那份 PDF。一次一份文档。浏览器直接从你的硬盘上把它读进来,在这里打开。要密码的文档会被退回,附一个去解锁那一页的链接;其他的,包括扫描件,原样收下。
- 打上那行字。这份副本是给谁的、什么时候给的:「仅供某某银行使用 · 2026 年 9 月 12 日」就是能干活的样子。任何语言、任何文字,字是你自己的浏览器画的,你能打出来的,水印就能说出来。
- 调它怎么放,看着预览。大小、是沿着页面对角线还是平放、是在中间出现一次还是铺满整页、有多淡、什么颜色,以及是每一页都盖还是只盖第一页。预览是一张跟你第一页一样形状的空白页,水印就压在文件会把它放的位置上。
- 盖上去,然后读那句写着「已核对」的话。那张图会被加进文档一次,每一页各得到一条画它的指令。接着做好的文件会在这里被重新打开,每一页都必须带着水印回来,页数跟原来一样,否则你不会拿到下载,只会拿到一句说明。
更完整的说明
如何为 PDF 加水印,印记究竟有什么用 贷款机构和房东为何要求扫描写名字,印记能防什么、不能防什么,写什么,以及怎样在浏览器中无需上传完成。
盒子里还有什么
有疑问?
水印能被去掉吗?
能,任何一个有 PDF 编辑器的人都能,这一页不会告诉你别的。水印不是保护。它做的是让一份副本说出自己去了哪里:一份盖着「仅供某某银行使用」的扫描件出现在另一家贷款机构,就带着它泄露出去的那个地方的名字,这正是贷款机构、房东和律师要求盖章的原因。如果这份文档根本不能被错误的人读到,那要的是密码,本站的 PDF 加密能加上一个。
水印可以是中文、阿拉伯文或者别的语言吗?
可以,你能打出来的都可以。字是你的浏览器用你自己机器上的字体画的,作为一张图压在每一页上,所以水印不像 PDF 里没有嵌字体的文字那样只限于拉丁字母。代价是做完之后这些字不能被选中、不能被搜索,对水印来说这反而是对的。
为什么预览里看不到我的文档?
因为本站没有 PDF 渲染器,这是有意的。要忠实地画出一页 PDF,得有字体引擎和完整的图形模型,一个浏览器那么大的引擎,而背上它会改变这里每一个工具的性质。所以预览显示的是它能诚实显示的东西:一张跟你第一页大小形状完全一样的空白页,水印压在文件会把它放的位置上,用的是写文件的同一段代码。用任何一个阅读器打开结果,就能看到两者合在一起的样子。
水印底下的文档看上去会不一样吗?
不会。页面自己的绘制没有被读取,更没有被改动:每一条指令、每一个嵌入字体、每一张图片都原样复制过去,水印以你选的透明度画在上面。文字还能选、还能搜,扫描件还是原来的分辨率,什么都不会移位。文件会大一张图的大小,每一页共用这一张,几个字的水印也就几十 KB。
扫描件和横着存的页面能用吗?
都能。扫描件就是一页上放着一张图,水印跟盖在别的东西上一样盖在图上。横着存的页面,也就是带着旋转、显示出来是横向的那种,会按它显示出来的样子盖:屏幕上的对角线就是屏幕上的对角线,不是扫描仪以为的那张纸的对角线。
带签名的文档会怎么样?
它的签名会失效,而且没有办法绕过去。签名覆盖的是它当初签的那个文件的确切字节,所以任何改动,任何程序做的,都会让它失效。这个工具写的是一个新文件,发现原件带签名时会在结果里说明。把你的原件留着:那一份仍然是签过名的。
带密码的 PDF 能加水印吗?
不能直接加,也不是在这里输密码:这一页不问密码。先在同一个浏览器里用 PDF 解锁把密码去掉,再把解锁后的副本拿到这里盖章,然后想要的话用 PDF 加密把密码加回去。只带着限制的文件,也就是谁都打得开、却不肯打印的那种,同样会被退回,因为盖章意味着重写,而重写会把那些限制丢掉。
我的文档或者我打的字会被上传到什么地方吗?
不会。文件是你自己的浏览器在你自己的硬件上读取、盖章、写出的,字也是它画的。这个工具没有服务器那一端,页面的 Content-Security-Policy 列出了它可以联系的每一个地址,其中没有一个属于本站。最简单的验证办法,是把网线拔掉,照样用这一页。
我怎么知道每一页真的都盖上了?
因为这个工具会在你的机器上核对,并且把结果给你看。文件写好之后,它会被交给本站其他 PDF 工具用的同一个读取器,每一页回来时都必须在它的资源里带着水印的名字、并且以画出水印的那条指令收尾,页数跟原来一样。有任何一页不是这样,这次运行就报告为失败,什么都不会给你下载。
有大小限制吗?要钱吗?
工具里没有写死任何限制。限制是你自己的机器:文档在处理的时候是放在内存里的,几百兆的量,一台笔记本吃得下,再往上就会吃力。它是免费的,不注册、不登录,也没有试用期。本站带广告,那是养活它的东西;广告拿不到任何关于你文档的内容。
断网能用吗?
能。把页面加载一次,然后断开网络,它照样能用。这也是证明什么都没被上传的最简单的办法:一个把你的文档发出去盖章的工具,你一拔网线它就停了。