mirror of
https://github.com/mozilla/pdf.js.git
synced 2026-08-03 04:47: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.
|
// Ensure that the structTree will contain the page's annotations.
|
||||||
await this._parsedAnnotations;
|
await this._parsedAnnotations;
|
||||||
|
|
||||||
const structTree = await this.pdfManager.ensure(this, "_parseStructTree", [
|
try {
|
||||||
structTreeRoot,
|
const structTree = await this.pdfManager.ensure(
|
||||||
]);
|
this,
|
||||||
return this.pdfManager.ensure(structTree, "serializable");
|
"_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) {
|
add(cmd, args) {
|
||||||
if (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) {
|
for (let i = 0, ii = args.length; i < ii; i += 2) {
|
||||||
const x = args[i];
|
Util.applyTransform(args, currentTransform, i);
|
||||||
const y = args[i + 1];
|
|
||||||
args[i] = a * x + c * y + e;
|
|
||||||
args[i + 1] = b * x + d * y + f;
|
|
||||||
}
|
}
|
||||||
this.cmds.push(`${cmd}${args.join(" ")}`);
|
this.cmds.push(`${cmd}${args.join(" ")}`);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@ -524,11 +524,11 @@ addState(
|
|||||||
switch (buffer[k++]) {
|
switch (buffer[k++]) {
|
||||||
case DrawOPS.moveTo:
|
case DrawOPS.moveTo:
|
||||||
case DrawOPS.lineTo:
|
case DrawOPS.lineTo:
|
||||||
Util.applyTransform(buffer.subarray(k), transform);
|
Util.applyTransform(buffer, transform, k);
|
||||||
k += 2;
|
k += 2;
|
||||||
break;
|
break;
|
||||||
case DrawOPS.curveTo:
|
case DrawOPS.curveTo:
|
||||||
Util.applyTransformToBezier(buffer.subarray(k), transform);
|
Util.applyTransformToBezier(buffer, transform, k);
|
||||||
k += 6;
|
k += 6;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -757,7 +757,10 @@ class StructTreePage {
|
|||||||
|
|
||||||
const parent = dict.get("P");
|
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)) {
|
if (!this.addTopLevelNode(dict, element)) {
|
||||||
map.delete(dict);
|
map.delete(dict);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -730,15 +730,14 @@ class Util {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// For 2d affine transforms
|
// For 2d affine transforms
|
||||||
static applyTransform(p, m) {
|
static applyTransform(p, m, pos = 0) {
|
||||||
const p0 = p[0];
|
const p0 = p[pos];
|
||||||
const p1 = p[1];
|
const p1 = p[pos + 1];
|
||||||
p[0] = p0 * m[0] + p1 * m[2] + m[4];
|
p[pos] = p0 * m[0] + p1 * m[2] + m[4];
|
||||||
p[1] = p0 * m[1] + p1 * m[3] + m[5];
|
p[pos + 1] = p0 * m[1] + p1 * m[3] + m[5];
|
||||||
}
|
}
|
||||||
|
|
||||||
// For 2d affine transforms
|
static applyTransformToBezier(p, transform, pos = 0) {
|
||||||
static applyTransformToBezier(p, transform) {
|
|
||||||
const m0 = transform[0];
|
const m0 = transform[0];
|
||||||
const m1 = transform[1];
|
const m1 = transform[1];
|
||||||
const m2 = transform[2];
|
const m2 = transform[2];
|
||||||
@ -746,10 +745,10 @@ class Util {
|
|||||||
const m4 = transform[4];
|
const m4 = transform[4];
|
||||||
const m5 = transform[5];
|
const m5 = transform[5];
|
||||||
for (let i = 0; i < 6; i += 2) {
|
for (let i = 0; i < 6; i += 2) {
|
||||||
const pI = p[i];
|
const pI = p[pos + i];
|
||||||
const pI1 = p[i + 1];
|
const pI1 = p[pos + i + 1];
|
||||||
p[i] = pI * m0 + pI1 * m2 + m4;
|
p[pos + i] = pI * m0 + pI1 * m2 + m4;
|
||||||
p[i + 1] = pI * m1 + pI1 * m3 + m5;
|
p[pos + i + 1] = pI * m1 + pI1 * m3 + m5;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user