comparison mupdf-source/docs/examples/draw-device.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
comparison
equal deleted inserted replaced
1:1d09e1dec1d9 2:b50eed0cc0ef
1 // Use device interface to draw some graphics and save as a PNG.
2
3 import * as mupdf from "mupdf"
4
5 var font = new mupdf.Font("Times-Roman")
6 var image = new mupdf.Image("huntingofthesnark.png")
7 var path, text
8
9 var pixmap = new mupdf.Pixmap(mupdf.ColorSpace.DeviceRGB, [ 0, 0, 500, 600 ], false)
10 pixmap.clear(255)
11 var device = new mupdf.DrawDevice(mupdf.Matrix.identity, pixmap)
12 var transform = [ 2, 0, 0, 2, 0, 0 ]
13 {
14 text = new mupdf.Text()
15 {
16 text.showString(font, [ 16, 0, 0, -16, 100, 30 ], "Hello, world!")
17 text.showString(font, [ 0, 16, 16, 0, 15, 100 ], "Hello, world!")
18 }
19 device.fillText(text, transform, mupdf.ColorSpace.DeviceGray, [ 0 ], 1)
20
21 path = new mupdf.Path()
22 {
23 path.moveTo(10, 10)
24 path.lineTo(90, 10)
25 path.lineTo(90, 90)
26 path.lineTo(10, 90)
27 path.closePath()
28 }
29 device.fillPath(path, false, transform, mupdf.ColorSpace.DeviceRGB, [ 1, 0, 0 ], 1)
30 device.strokePath(
31 path,
32 { dashes: [ 5, 10 ], lineWidth: 3, lineCap: "Round" },
33 transform,
34 mupdf.ColorSpace.DeviceRGB,
35 [ 0, 0, 0 ],
36 1
37 )
38
39 path = new mupdf.Path()
40 {
41 path.moveTo(100, 100)
42 path.curveTo(150, 100, 200, 150, 200, 200)
43 path.curveTo(200, 300, 0, 300, 100, 100)
44 path.closePath()
45 }
46 device.clipPath(path, true, transform)
47 {
48 device.fillImage(image, Matrix.concat(transform, [ 300, 0, 0, 300, 0, 0 ]), 1)
49 }
50 device.popClip()
51 }
52 device.close()
53
54 pixmap.saveAsPNG("out.png")