分割PDF文档

将大尺寸PDF文件切割为数个小尺寸页面以方便打印,适合处理地图与工程图纸

--by Captdam @ Nov 12, 2024

[en] Here is the English version of this article

Also on GitHub: https://github.com/captdam/TilingPDF

为了方便在小尺寸的纸张上打印大尺寸图纸,于是我写了这个Web应用。

有一些图纸是在大尺寸的纸张上建立的,图纸尺寸越大,一页包含的信息也就越多。比如说,ANSI E纸张的尺寸就是34英寸的44英寸(近似于1米的0.75米)。如果能使用大尺寸的纸张,那么大尺寸图纸无疑能方便阅读。但是,一般的家用打印机只能支持信笺纸(11英寸的8.5英寸)或相似的小尺寸纸张(比如A4)。一些办公用打印机可以使用大一点的纸张,例如Ledger(11英寸的17英寸)。对于更大的纸张,要么需要专业的打印机,将花费一笔不晓得投资;或是需要前往打印店,很是麻烦。

下面以温莎市的地图为例。如果要把它打印出来,我们只能使用一页的尺寸。就如截屏所示,字体非常小,很难阅读。

打印大地图时的截图
打印大地图时的截图 - City of Windsor的地图

在这个打印的窗口内,我们可以选择大尺寸的纸张,但是在打印机内放入小尺寸的纸张。这样,打印机就会自动切割文件为多页实际使用的纸张的大小。这个方法非常的不优雅,我们没办法预览实际打印的效果,需要一些试错才能得到想要的效果。

另一个办法是使用软件来预处理,即,使用软件来将大的文件切割为数个小尺寸的文件。之后,就可以像是正常文件一样打印了。一个例子就是使用imagemagick的convert指令来切割图像,比如这个命令:convert -extract 4800x3600+4800+7200 src.png tile2x3.png。但是,这个办法需要Linux系统或WSL,并且需要安装软件。

另外,我们也可以使用一些在线工具。这很方便,不需要安装软件,电脑和手机(或是任何支持网页浏览的设备)都可以操作,只要有浏览器并且能联网就行。但是,这个本法无法保证文件的安全性,比如需要保密的工程图。

于是,我决定自己写一个软件。我使用了之前做工程图PDF标题栏与目录生成器使用的PDF-Lib库来在浏览器中本地切割PDF文档。

打印切割后的大地图时的截图
打印切割后的大地图时的截图