comparison mupdf-source/docs/examples/fix-s22pdf.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 // A simple script to fix the broken fonts in PDF files generated by S22PDF.
2
3 if (scriptArgs.length != 2) {
4 print("usage: mutool run fix-s22pdf.js input.pdf output.pdf");
5 quit();
6 }
7
8 var doc = Document.openDocument(scriptArgs[0]);
9
10 var font = new Font("zh-Hans");
11 var song = doc.addCJKFont(font, "zh-Hans", "H", "serif");
12 var heiti = doc.addCJKFont(font, "zh-Hans", "H", "sans-serif");
13 song.Encoding = 'GBK-EUC-H';
14 heiti.Encoding = 'GBK-EUC-H';
15
16 var MAP = {
17 "/#CB#CE#CC#E5": song, // SimSun
18 "/#BA#DA#CC#E5": heiti, // SimHei
19 "/#BF#AC#CC#E5_GB2312": song, // SimKai
20 "/#B7#C2#CB#CE_GB2312": heiti, // SimFang
21 "/#C1#A5#CA#E9": song, // SimLi
22 }
23
24 var i, n = doc.countPages();
25 for (i = 0; i < n; ++i) {
26 var fonts = doc.findPage(i).Resources.Font;
27 if (fonts) {
28 fonts.forEach(function (font, name) {
29 if (font.BaseFont in MAP && font.Encoding == 'WinAnsiEncoding')
30 fonts[name] = MAP[font.BaseFont];
31 });
32 }
33 }
34
35 doc.save(scriptArgs[1]);