comparison mupdf-source/docs/examples/fix-s22pdf.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 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]);