我碰巧试图将一个简单的Automator脚本组合在一起,以合并几个一页的PDF文件。我有88个文件可以合并,每个文件恰好约300KB,所以我希望最终产品约为30MB。使用Combine PDFs Automator操作生成的PDF文件为300 + MB。

随便看看,Automator操作使用带有Foundation绑定的Python脚本通过CoreGraphics PDF API创建新的PDF文档。似乎没有什么不妥。基本上,它就是这样做的(简化了,但是这些是要点):

writeContext = CGPDFContextCreateWithURL(outURL, None, None)
for url in inURLs:
    doc = CGPDFDocumentCreateWithURL(url)
    page = CGPDFDocumentGetPage(doc, 1)
    mediaBox = CGPDFPageGetBoxRect(page, kCGPDFMediaBox)
    CGContextBeginPage(writeContext, mediaBox)
    CGContextDrawPDFPage(writeContext, page)
    CGContextEndPage(writeContext)
CGPDFContextClose(writeContext)


我无法想象CGContextDrawPDFPage绘制到PDF上下文时,除了复制该页面的PDF数据(带有一些窗口修饰)之外,什么都不会做。

与仅300 PDF原始的一页PDF相比,即使仅“合并”一个PDF,输出也为2.8 MB。

生成的PDF逐页看上去与原始页面完全相同:可以在相同位置选择文本,图形看起来完全相同,页面大小完全相同。

有任何想法吗?

最佳答案

输入的PDF是否包含相同的字体集或不同的字体集?也许如果原件不包含嵌入字体,但输出却包含嵌入字体,则可以解释其中的一些增长。

09-05 10:04