xml123
(xml123)
1
这个帖子是一个分享,把一个pdf插入到另一个pdf里,并且能精确的控制插入的坐标,不是
- 把两个pdf文件的页面合并成一个pdf
- 把多个pdf页面并排摆放,类似word的每版打印x页
这个需求比较小众,比较准确的描述应该叫给pdf添加水印(watermark),如果用合并、插入之类的关键词去搜索的话在网上很难找到,常见的pdf工具也没有这种功能。
我的方法不一定最好,本贴算是抛砖引玉。
使用的工具:cpdf
下载地址:
插入方法( 默认两个pdf都只有1页):
cpdf.exe -stamp-on watermark.pdf -topleft "10 20" original.pdf -o output.pdf
-stamp-on:插入的pdf会显示在上方,根据你的需求,也可以换成-stamp-under
watermark.pdf:插入的pdf,一般是面积比较小的,当然两个文件的页面一样大也没问题
-topleft "10 20":指定插入的坐标,距左上角水平10pt,垂直20pt,所有可选的坐标选项如下:
-top 10
-topleft 10
-topleft "10 20"
-topright 10
-topright "10 20"
-left 10
-bottomleft 10
-bottomleft "10 20"
-bottom 10
-bottomright 10
-bottomright "10 20"
-right 10
-center
original.pdf:被插入的pdf,一般是面积大的那个,最终输出的页面尺寸也和它是一样的
-o output.pdf:指定输出的文件路径
如果original.pdf有多页
上述命令会向所有页都插入watermark.pdf。如果你只需要在部分页插入,可以在original.pdf后加一个range选项,可选的格式如下:
1,2,7-end:第1页、第2页、第7页到最后一页
1-16odd:1到16页中的奇数页,也就是1、3、5……13、15页
˜3-˜1:倒数第3页到倒数第1页,也就是最后3页
如何计算插入的坐标
首先需要注意坐标的单位是pt(点),它的换算方法是 72 pt = 1 inch = 25.4 mm
如果你的pdf阅读器可以显示坐标,这对你应该不成问题;没有的话也可以用笨方法,通过反复尝试慢慢调坐标。当然也可以先用上面的方法往original.pdf插入坐标轴,然后所需要的坐标就一目了然了。这个文件里有我画好的网格,相邻两条细线的距离是10pt,粗线的距离是50pt
grid.pdf (2.3 KB)
为什么会有这种需求
pdf通常作为其他格式的最终输出结果,一般是不建议直接编辑的。但平常经常要和pdf文件打交道,难免还是会遇到需要往已有的pdf上添加内容的场合,需要的人自然能想到应用场景
为什么不用……
- Adobe Acrobat/Foxit PDF Editor/……:太大了不想装;并且命令行工具有天然的优势:适合批量处理。不管是给多个pdf添加相同的水印,还是不同的水印,或者是奇数页、偶数页用不同的水印,命令行都有办法处理,而gui工具则不一定有这种灵活性
- python(pypdf):不想装python环境
2 个赞
还真不知道可以这样,我自己能想到的解决方案是
- 把PDF页导出成300 PPI的高清图片
- 用PS以图片编辑的方式进行编辑
- 把图片转换回PDF
而且,一般来说,需要编辑的情况,都会留Word原本,所以,确实是一个需求,但是也确实很小众
pdftk 也是可以的。比如,要将 水印.pdf 叠加到 原文件.pdf 上,可执行如下命令:
pdftk 原文件.pdf multistamp 水印.pdf output 输出文件.pdf
位图就位图,没什么不好,300PPI,可以保证清晰度了。而且你通过水印,以图片形式添加进去的页面,同样不能编辑
而且,这种需求很少见,所以,能解决问题就好,还不用依赖任何额外的库或者包
GUO_Q
(Qiu)
8
直接放到adobo ai就行,可以保留PDF编辑格式
husnainc
(Husnain CH)
10
Using cpdf (Recommended)
cpdf -stamp-on base.pdf overlay.pdf \
-pos-left 100 -pos-bottom 200 \
-scale 0.5 \
-o output.pdf
What this does:
Key Point
This is called PDF stamping (not merging)
One-line summary
Use -stamp-on + position (-pos-left, -pos-bottom) + scale
1 个赞
Colin5887
(Colin5887)
11
这个关键词很准确,直接就搜到了成熟的解决方案了: Add a watermark to a PDF. Add text or image to a PDF
表示下感谢
我的操作习惯是这样:如果需要做这种水印效果,我会先用 Libreoffice 等软件创建一个和目标 PDF 文件尺寸一致的文档,然后在这个文档上绘制水印,并保存为水印图案 PDF 文档。最后直接将两份文档叠加,不考虑控制坐标的问题。个人感觉这样操作更加直观。