mirror of
https://github.com/mozilla/pdf.js.git
synced 2026-08-02 12:27:21 +02:00
Compare commits
5 Commits
2f7d163dfd
...
4b1875c8c0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4b1875c8c0 | ||
|
|
d7cbda6cb5 | ||
|
|
f1e20cd668 | ||
|
|
bf553f22da | ||
|
|
76f23ce3b5 |
@ -707,10 +707,18 @@ class Page {
|
||||
// Ensure that the structTree will contain the page's annotations.
|
||||
await this._parsedAnnotations;
|
||||
|
||||
const structTree = await this.pdfManager.ensure(this, "_parseStructTree", [
|
||||
structTreeRoot,
|
||||
]);
|
||||
return this.pdfManager.ensure(structTree, "serializable");
|
||||
try {
|
||||
const structTree = await this.pdfManager.ensure(
|
||||
this,
|
||||
"_parseStructTree",
|
||||
[structTreeRoot]
|
||||
);
|
||||
const data = await this.pdfManager.ensure(structTree, "serializable");
|
||||
return data;
|
||||
} catch (ex) {
|
||||
warn(`getStructTree: "${ex}".`);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -745,12 +745,9 @@ class Commands {
|
||||
|
||||
add(cmd, args) {
|
||||
if (args) {
|
||||
const [a, b, c, d, e, f] = this.currentTransform;
|
||||
const { currentTransform } = this;
|
||||
for (let i = 0, ii = args.length; i < ii; i += 2) {
|
||||
const x = args[i];
|
||||
const y = args[i + 1];
|
||||
args[i] = a * x + c * y + e;
|
||||
args[i + 1] = b * x + d * y + f;
|
||||
Util.applyTransform(args, currentTransform, i);
|
||||
}
|
||||
this.cmds.push(`${cmd}${args.join(" ")}`);
|
||||
} else {
|
||||
|
||||
@ -524,11 +524,11 @@ addState(
|
||||
switch (buffer[k++]) {
|
||||
case DrawOPS.moveTo:
|
||||
case DrawOPS.lineTo:
|
||||
Util.applyTransform(buffer.subarray(k), transform);
|
||||
Util.applyTransform(buffer, transform, k);
|
||||
k += 2;
|
||||
break;
|
||||
case DrawOPS.curveTo:
|
||||
Util.applyTransformToBezier(buffer.subarray(k), transform);
|
||||
Util.applyTransformToBezier(buffer, transform, k);
|
||||
k += 6;
|
||||
break;
|
||||
}
|
||||
|
||||
@ -757,7 +757,10 @@ class StructTreePage {
|
||||
|
||||
const parent = dict.get("P");
|
||||
|
||||
if (!parent || isName(parent.get("Type"), "StructTreeRoot")) {
|
||||
if (
|
||||
!(parent instanceof Dict) ||
|
||||
isName(parent.get("Type"), "StructTreeRoot")
|
||||
) {
|
||||
if (!this.addTopLevelNode(dict, element)) {
|
||||
map.delete(dict);
|
||||
}
|
||||
|
||||
@ -730,15 +730,14 @@ class Util {
|
||||
}
|
||||
|
||||
// For 2d affine transforms
|
||||
static applyTransform(p, m) {
|
||||
const p0 = p[0];
|
||||
const p1 = p[1];
|
||||
p[0] = p0 * m[0] + p1 * m[2] + m[4];
|
||||
p[1] = p0 * m[1] + p1 * m[3] + m[5];
|
||||
static applyTransform(p, m, pos = 0) {
|
||||
const p0 = p[pos];
|
||||
const p1 = p[pos + 1];
|
||||
p[pos] = p0 * m[0] + p1 * m[2] + m[4];
|
||||
p[pos + 1] = p0 * m[1] + p1 * m[3] + m[5];
|
||||
}
|
||||
|
||||
// For 2d affine transforms
|
||||
static applyTransformToBezier(p, transform) {
|
||||
static applyTransformToBezier(p, transform, pos = 0) {
|
||||
const m0 = transform[0];
|
||||
const m1 = transform[1];
|
||||
const m2 = transform[2];
|
||||
@ -746,10 +745,10 @@ class Util {
|
||||
const m4 = transform[4];
|
||||
const m5 = transform[5];
|
||||
for (let i = 0; i < 6; i += 2) {
|
||||
const pI = p[i];
|
||||
const pI1 = p[i + 1];
|
||||
p[i] = pI * m0 + pI1 * m2 + m4;
|
||||
p[i + 1] = pI * m1 + pI1 * m3 + m5;
|
||||
const pI = p[pos + i];
|
||||
const pI1 = p[pos + i + 1];
|
||||
p[pos + i] = pI * m0 + pI1 * m2 + m4;
|
||||
p[pos + i + 1] = pI * m1 + pI1 * m3 + m5;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user