Skip to content

Commit cb28250

Browse files
authored
Merge pull request #20546 from calixteman/jbig2wasm
Use the PDFium JBig2 decoder compiled into wasm
2 parents eccbcbe + 98c1955 commit cb28250

13 files changed

Lines changed: 406 additions & 4 deletions

eslint.config.mjs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ export default [
3535
"external/builder/fixtures_babel/",
3636
"external/openjpeg/",
3737
"external/qcms/",
38+
"external/jbig2/",
3839
"external/quickjs/",
3940
"test/stats/results/",
4041
"test/tmp/",

external/jbig2/LICENSE_JBIG2

Lines changed: 196 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,196 @@
1+
// Copyright 2014 The PDFium Authors
2+
//
3+
// Redistribution and use in source and binary forms, with or without
4+
// modification, are permitted provided that the following conditions are
5+
// met:
6+
//
7+
// * Redistributions of source code must retain the above copyright
8+
// notice, this list of conditions and the following disclaimer.
9+
// * Redistributions in binary form must reproduce the above
10+
// copyright notice, this list of conditions and the following disclaimer
11+
// in the documentation and/or other materials provided with the
12+
// distribution.
13+
// * Neither the name of Google Inc. nor the names of its
14+
// contributors may be used to endorse or promote products derived from
15+
// this software without specific prior written permission.
16+
//
17+
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18+
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19+
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
20+
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
21+
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22+
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23+
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24+
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25+
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26+
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27+
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28+
Apache License
29+
Version 2.0, January 2004
30+
https://www.apache.org/licenses/
31+
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
32+
1. Definitions.
33+
"License" shall mean the terms and conditions for use, reproduction,
34+
and distribution as defined by Sections 1 through 9 of this document.
35+
"Licensor" shall mean the copyright owner or entity authorized by
36+
the copyright owner that is granting the License.
37+
"Legal Entity" shall mean the union of the acting entity and all
38+
other entities that control, are controlled by, or are under common
39+
control with that entity. For the purposes of this definition,
40+
"control" means (i) the power, direct or indirect, to cause the
41+
direction or management of such entity, whether by contract or
42+
otherwise, or (ii) ownership of fifty percent (50%) or more of the
43+
outstanding shares, or (iii) beneficial ownership of such entity.
44+
"You" (or "Your") shall mean an individual or Legal Entity
45+
exercising permissions granted by this License.
46+
"Source" form shall mean the preferred form for making modifications,
47+
including but not limited to software source code, documentation
48+
source, and configuration files.
49+
"Object" form shall mean any form resulting from mechanical
50+
transformation or translation of a Source form, including but
51+
not limited to compiled object code, generated documentation,
52+
and conversions to other media types.
53+
"Work" shall mean the work of authorship, whether in Source or
54+
Object form, made available under the License, as indicated by a
55+
copyright notice that is included in or attached to the work
56+
(an example is provided in the Appendix below).
57+
"Derivative Works" shall mean any work, whether in Source or Object
58+
form, that is based on (or derived from) the Work and for which the
59+
editorial revisions, annotations, elaborations, or other modifications
60+
represent, as a whole, an original work of authorship. For the purposes
61+
of this License, Derivative Works shall not include works that remain
62+
separable from, or merely link (or bind by name) to the interfaces of,
63+
the Work and Derivative Works thereof.
64+
"Contribution" shall mean any work of authorship, including
65+
the original version of the Work and any modifications or additions
66+
to that Work or Derivative Works thereof, that is intentionally
67+
submitted to Licensor for inclusion in the Work by the copyright owner
68+
or by an individual or Legal Entity authorized to submit on behalf of
69+
the copyright owner. For the purposes of this definition, "submitted"
70+
means any form of electronic, verbal, or written communication sent
71+
to the Licensor or its representatives, including but not limited to
72+
communication on electronic mailing lists, source code control systems,
73+
and issue tracking systems that are managed by, or on behalf of, the
74+
Licensor for the purpose of discussing and improving the Work, but
75+
excluding communication that is conspicuously marked or otherwise
76+
designated in writing by the copyright owner as "Not a Contribution."
77+
"Contributor" shall mean Licensor and any individual or Legal Entity
78+
on behalf of whom a Contribution has been received by Licensor and
79+
subsequently incorporated within the Work.
80+
2. Grant of Copyright License. Subject to the terms and conditions of
81+
this License, each Contributor hereby grants to You a perpetual,
82+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
83+
copyright license to reproduce, prepare Derivative Works of,
84+
publicly display, publicly perform, sublicense, and distribute the
85+
Work and such Derivative Works in Source or Object form.
86+
3. Grant of Patent License. Subject to the terms and conditions of
87+
this License, each Contributor hereby grants to You a perpetual,
88+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
89+
(except as stated in this section) patent license to make, have made,
90+
use, offer to sell, sell, import, and otherwise transfer the Work,
91+
where such license applies only to those patent claims licensable
92+
by such Contributor that are necessarily infringed by their
93+
Contribution(s) alone or by combination of their Contribution(s)
94+
with the Work to which such Contribution(s) was submitted. If You
95+
institute patent litigation against any entity (including a
96+
cross-claim or counterclaim in a lawsuit) alleging that the Work
97+
or a Contribution incorporated within the Work constitutes direct
98+
or contributory patent infringement, then any patent licenses
99+
granted to You under this License for that Work shall terminate
100+
as of the date such litigation is filed.
101+
4. Redistribution. You may reproduce and distribute copies of the
102+
Work or Derivative Works thereof in any medium, with or without
103+
modifications, and in Source or Object form, provided that You
104+
meet the following conditions:
105+
(a) You must give any other recipients of the Work or
106+
Derivative Works a copy of this License; and
107+
(b) You must cause any modified files to carry prominent notices
108+
stating that You changed the files; and
109+
(c) You must retain, in the Source form of any Derivative Works
110+
that You distribute, all copyright, patent, trademark, and
111+
attribution notices from the Source form of the Work,
112+
excluding those notices that do not pertain to any part of
113+
the Derivative Works; and
114+
(d) If the Work includes a "NOTICE" text file as part of its
115+
distribution, then any Derivative Works that You distribute must
116+
include a readable copy of the attribution notices contained
117+
within such NOTICE file, excluding those notices that do not
118+
pertain to any part of the Derivative Works, in at least one
119+
of the following places: within a NOTICE text file distributed
120+
as part of the Derivative Works; within the Source form or
121+
documentation, if provided along with the Derivative Works; or,
122+
within a display generated by the Derivative Works, if and
123+
wherever such third-party notices normally appear. The contents
124+
of the NOTICE file are for informational purposes only and
125+
do not modify the License. You may add Your own attribution
126+
notices within Derivative Works that You distribute, alongside
127+
or as an addendum to the NOTICE text from the Work, provided
128+
that such additional attribution notices cannot be construed
129+
as modifying the License.
130+
You may add Your own copyright statement to Your modifications and
131+
may provide additional or different license terms and conditions
132+
for use, reproduction, or distribution of Your modifications, or
133+
for any such Derivative Works as a whole, provided Your use,
134+
reproduction, and distribution of the Work otherwise complies with
135+
the conditions stated in this License.
136+
5. Submission of Contributions. Unless You explicitly state otherwise,
137+
any Contribution intentionally submitted for inclusion in the Work
138+
by You to the Licensor shall be under the terms and conditions of
139+
this License, without any additional terms or conditions.
140+
Notwithstanding the above, nothing herein shall supersede or modify
141+
the terms of any separate license agreement you may have executed
142+
with Licensor regarding such Contributions.
143+
6. Trademarks. This License does not grant permission to use the trade
144+
names, trademarks, service marks, or product names of the Licensor,
145+
except as required for reasonable and customary use in describing the
146+
origin of the Work and reproducing the content of the NOTICE file.
147+
7. Disclaimer of Warranty. Unless required by applicable law or
148+
agreed to in writing, Licensor provides the Work (and each
149+
Contributor provides its Contributions) on an "AS IS" BASIS,
150+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
151+
implied, including, without limitation, any warranties or conditions
152+
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
153+
PARTICULAR PURPOSE. You are solely responsible for determining the
154+
appropriateness of using or redistributing the Work and assume any
155+
risks associated with Your exercise of permissions under this License.
156+
8. Limitation of Liability. In no event and under no legal theory,
157+
whether in tort (including negligence), contract, or otherwise,
158+
unless required by applicable law (such as deliberate and grossly
159+
negligent acts) or agreed to in writing, shall any Contributor be
160+
liable to You for damages, including any direct, indirect, special,
161+
incidental, or consequential damages of any character arising as a
162+
result of this License or out of the use or inability to use the
163+
Work (including but not limited to damages for loss of goodwill,
164+
work stoppage, computer failure or malfunction, or any and all
165+
other commercial damages or losses), even if such Contributor
166+
has been advised of the possibility of such damages.
167+
9. Accepting Warranty or Additional Liability. While redistributing
168+
the Work or Derivative Works thereof, You may choose to offer,
169+
and charge a fee for, acceptance of support, warranty, indemnity,
170+
or other liability obligations and/or rights consistent with this
171+
License. However, in accepting such obligations, You may act only
172+
on Your own behalf and on Your sole responsibility, not on behalf
173+
of any other Contributor, and only if You agree to indemnify,
174+
defend, and hold each Contributor harmless for any liability
175+
incurred by, or claims asserted against, such Contributor by reason
176+
of your accepting any such warranty or additional liability.
177+
END OF TERMS AND CONDITIONS
178+
APPENDIX: How to apply the Apache License to your work.
179+
To apply the Apache License to your work, attach the following
180+
boilerplate notice, with the fields enclosed by brackets "[]"
181+
replaced with your own identifying information. (Don't include
182+
the brackets!) The text should be enclosed in the appropriate
183+
comment syntax for the file format. We also recommend that a
184+
file or class name and description of purpose be included on the
185+
same "printed page" as the copyright notice for easier
186+
identification within third-party archives.
187+
Copyright [yyyy] [name of copyright owner]
188+
Licensed under the Apache License, Version 2.0 (the "License");
189+
you may not use this file except in compliance with the License.
190+
You may obtain a copy of the License at
191+
https://www.apache.org/licenses/LICENSE-2.0
192+
Unless required by applicable law or agreed to in writing, software
193+
distributed under the License is distributed on an "AS IS" BASIS,
194+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
195+
See the License for the specific language governing permissions and
196+
limitations under the License.

external/jbig2/LICENSE_PDFJS_JBIG2

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
Copyright 2026 Mozilla Foundation
2+
3+
Licensed under the Apache License, Version 2.0 (the "License");
4+
you may not use this file except in compliance with the License.
5+
You may obtain a copy of the License at
6+
7+
http://www.apache.org/licenses/LICENSE-2.0
8+
9+
Unless required by applicable law or agreed to in writing, software
10+
distributed under the License is distributed on an "AS IS" BASIS,
11+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
See the License for the specific language governing permissions and
13+
limitations under the License.

external/jbig2/README.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
## Build
2+
3+
In order to generate the file `jbig2.js`:
4+
* git clone https://github.com/mozilla/pdf.js.jbig2/
5+
* the build requires to have a [Docker](https://www.docker.com/) setup and then:
6+
* `node build.js -C` to build the Docker image
7+
* `node build.js -co /pdf.js/external/jbig2/` to compile the decoder
8+
9+
## Licensing
10+
11+
[PDFium](https://pdfium.googlesource.com/pdfium/) is under [Apache-2.0](https://pdfium.googlesource.com/pdfium/+/main/LICENSE)
12+
and [pdf.js.jbig2](https://github.com/mozilla/pdf.js.jbig2/) is released under [Apache-2.0](https://github.com/mozilla/pdf.js.jbig2/blob/main/LICENSE) license so `jbig2.js` is released under [Apache-2.0](https://github.com/mozilla/pdf.js.jbig2/blob/main/LICENSE) license too.

0 commit comments

Comments
 (0)