美文网首页读书
书籍打印装订

书籍打印装订

作者: 2016晓 | 来源:发表于2023-10-24 17:36 被阅读0次

    自己有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中,对右边距适当增大,保证纸张中心有足够的空白区。

    相关文章

      网友评论

        本文标题:书籍打印装订

        本文链接:https://www.haomeiwen.com/subject/suysidtx.html