读书

书籍打印装订

2023-10-24  本文已影响0人  2016晓

自己有pdf,但更想打印成纸质书阅读。本文介绍一种排版、装订的方法。
常见的打钱纸为A4尺寸的,直接打印pdf往往会使得字号过大、文字颜色太浅,边距过大。
经过笔者亲自尝试,推荐一种排版、装订的方式:
1、使用k2pdfopt工具进行裁边、字色加深
2、上述pdf内容转图片
3、按排版次序,重命名上述图片文件
4、插入上述图片到横排的word文档
5、使用虚拟打印机,打印上述文档为竖排pdf
6、对上述竖排pdf的偶数页进行180度旋转
7、将打印好的纸张对折,按内容次序叠放
8、使用502胶水侧面粘合
最终成品:


image.png

步骤详述:
1、使用k2pdfopt工具进行裁边、字色加深
下载地址https://willus.com/k2pdfopt/
windows版本有操作界面,mac/linux为命令行
运行后按图中,输入参数(-mode tm -n- -c-)、回车、文件路径、回车

image.png
等待处理完成后,所在目录下会创建出处理后的pdf文件
2、找一些在线网站或pdf转图片工具。转换出图片
如果有golang的编程环境,可以执行以下代码
package main

import (
    "fmt"
    "image/jpeg"
    "os"
    "path"
    "path/filepath"
    "strings"

    "github.com/karmdip-mi/go-fitz"
)

func main() {

    var files []string

    root := "/private/var/spool/pdfwriter/wangdongxiao/"
    err := filepath.Walk(root, func(path string, info os.FileInfo, err error) error {
        if filepath.Ext(path) == ".pdf" {
            files = append(files, path)
        }
        return nil
    })
    if err != nil {
        panic(err)
    }
    for _, file := range files {
        doc, err := fitz.New(file)
        if err != nil {
            panic(err)
        }
        folder := strings.TrimSuffix(path.Base(file), filepath.Ext(path.Base(file)))

        // Extract pages as images
        for n := 0; n < doc.NumPage(); n++ {
            img, err := doc.Image(n)
            if err != nil {
                panic(err)
            }
            err = os.MkdirAll("img/"+folder, 0755)
            if err != nil {
                panic(err)
            }

            f, err := os.Create(filepath.Join("img/"+folder+"/", fmt.Sprintf("image-%05d.jpg", n)))
            if err != nil {
                panic(err)
            }

            err = jpeg.Encode(f, img, &jpeg.Options{Quality: jpeg.DefaultQuality})
            if err != nil {
                panic(err)
            }

            f.Close()

        }
    }
}

3、按排版次序,重命名上述图片文件
由于需要在每张a4纸上,正反共打印4页内容,这4页的次序为4-1-2-3,对折装订后正好为内容次序


image.png

可按这个规则编写以下程序,在浏览器console中输出重命名的命令,mac/linux 为mv, windows为rename

ret = ""
offset = {"0":3,"1":-1,"2":-1,"3":-1}
for (i = 8 - 8; i <= 250 - 8; i++) {
    var curIdx = ((i + 8 + offset[i % 4])-1)
    ret += "mv image-00" + Math.floor(((curIdx/100))) + Math.floor(((curIdx/10)%10)) + Math.floor(((curIdx%10)))
    ret += ".jpg new_" + (1000+i) + ".jpg"
    ret += "\n"
}
console.log(ret)
image.png
4、插入上述图片到横排的word文档
1)新建文档,页面设置为横排
image.png
2)双击标尺,在弹出的页边距设置里,修改4个边距,其中右边距先设置大于一半的值(也可直接拖动标尺)。其目的是让word在插入图片时,自动去缩放图片为最终需要的大小。
image.png
3)插入上文中的图片
image.png
image.png
4)重新修改右边距与在边距相同
image.png
至此已经完成了,若打印机正常支持横向打印+双面打印,就可以直接打印了。
为了适应某些不支持横向打印的设备,可以再额外处理为竖排(5、6的步骤,可按实际情况省略)
5、使用虚拟打印机,打印上述文档为竖排pdf
mac下可安装https://github.com/rodyager/RWTS-PDFwriter/releases
虚拟打印出pdf文件
6、对上述竖排pdf的偶数页进行180度旋转
image.png
image.png
依次选取每张偶数页,点击两次90度旋转
7、将打印好的纸张对折,按内容次序叠放
对折叠放时注意保持内容次序
8、使用502胶水侧面粘合
若打算进行订书机装订,需要注意在4-2中,对右边距适当增大,保证纸张中心有足够的空白区。
上一篇下一篇

猜你喜欢

热点阅读