comparison mupdf-source/docs/examples/pdf-merge.js @ 3:2c135c81b16c

MERGE: upstream PyMuPDF 1.26.4 with MuPDF 1.26.7
author Franz Glasner <fzglas.hg@dom66.de>
date Mon, 15 Sep 2025 11:44:09 +0200
parents b50eed0cc0ef
children
comparison
equal deleted inserted replaced
0:6015a75abc2d 3:2c135c81b16c
1 // A re-implementation of "mutool merge" in JavaScript.
2
3 import * as mupdf from "mupdf"
4
5 function copyPage(dstDoc, srcDoc, pageNumber, dstFromSrc) {
6 var srcPage, dstPage
7 srcPage = srcDoc.findPage(pageNumber)
8 dstPage = dstDoc.newDictionary()
9 dstPage.Type = dstDoc.newName("Page")
10 if (srcPage.MediaBox) dstPage.MediaBox = dstFromSrc.graftObject(srcPage.MediaBox)
11 if (srcPage.Rotate) dstPage.Rotate = dstFromSrc.graftObject(srcPage.Rotate)
12 if (srcPage.Resources) dstPage.Resources = dstFromSrc.graftObject(srcPage.Resources)
13 if (srcPage.Contents) dstPage.Contents = dstFromSrc.graftObject(srcPage.Contents)
14 dstDoc.insertPage(-1, dstDoc.addObject(dstPage))
15 }
16
17 function copyAllPages(dstDoc, srcDoc) {
18 var dstFromSrc = dstDoc.newGraftMap()
19 var k, n = srcDoc.countPages()
20 for (k = 0; k < n; ++k)
21 copyPage(dstDoc, srcDoc, k, dstFromSrc)
22 }
23
24 function pdfmerge() {
25 var srcDoc, dstDoc, i
26
27 dstDoc = new mupdf.PDFDocument()
28 for (i = 3; i < process.argv.length; ++i) {
29 srcDoc = mupdf.Document.openDocument(process.argv[i])
30 copyAllPages(dstDoc, srcDoc)
31 }
32 dstDoc.save(process.argv[2], "compress")
33 }
34
35 if (process.argv.length < 4)
36 print("usage: mutool run pdf-merge.js output.pdf input1.pdf input2.pdf ...")
37 else
38 pdfmerge()