Mercurial > hgrepos > Python2 > PyMuPDF
diff mupdf-source/docs/examples/pdf-merge.js @ 2:b50eed0cc0ef upstream
ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
The directory name has changed: no version number in the expanded directory now.
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Mon, 15 Sep 2025 11:43:07 +0200 |
| parents | |
| children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mupdf-source/docs/examples/pdf-merge.js Mon Sep 15 11:43:07 2025 +0200 @@ -0,0 +1,38 @@ +// A re-implementation of "mutool merge" in JavaScript. + +import * as mupdf from "mupdf" + +function copyPage(dstDoc, srcDoc, pageNumber, dstFromSrc) { + var srcPage, dstPage + srcPage = srcDoc.findPage(pageNumber) + dstPage = dstDoc.newDictionary() + dstPage.Type = dstDoc.newName("Page") + if (srcPage.MediaBox) dstPage.MediaBox = dstFromSrc.graftObject(srcPage.MediaBox) + if (srcPage.Rotate) dstPage.Rotate = dstFromSrc.graftObject(srcPage.Rotate) + if (srcPage.Resources) dstPage.Resources = dstFromSrc.graftObject(srcPage.Resources) + if (srcPage.Contents) dstPage.Contents = dstFromSrc.graftObject(srcPage.Contents) + dstDoc.insertPage(-1, dstDoc.addObject(dstPage)) +} + +function copyAllPages(dstDoc, srcDoc) { + var dstFromSrc = dstDoc.newGraftMap() + var k, n = srcDoc.countPages() + for (k = 0; k < n; ++k) + copyPage(dstDoc, srcDoc, k, dstFromSrc) +} + +function pdfmerge() { + var srcDoc, dstDoc, i + + dstDoc = new mupdf.PDFDocument() + for (i = 3; i < process.argv.length; ++i) { + srcDoc = mupdf.Document.openDocument(process.argv[i]) + copyAllPages(dstDoc, srcDoc) + } + dstDoc.save(process.argv[2], "compress") +} + +if (process.argv.length < 4) + print("usage: mutool run pdf-merge.js output.pdf input1.pdf input2.pdf ...") +else + pdfmerge()
