Skip to content

Commit d706737

Browse files
VladimirAnton Kiselev
authored andcommitted
The glyph has no Unicode value
1 parent 0aad84b commit d706737

File tree

4 files changed

+42
-6
lines changed

4 files changed

+42
-6
lines changed

src/core/annotation.js

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -634,6 +634,7 @@ class Annotation {
634634
this.setColor(dict.getArray("C"));
635635
this.setBorderStyle(dict);
636636
this.setAppearance(dict);
637+
this.initAppearancePos = this.appearance?.pos;
637638
this.setOptionalContent(dict);
638639

639640
const MK = dict.get("MK");
@@ -1165,8 +1166,10 @@ class Annotation {
11651166
isUsingOwnCanvas,
11661167
]);
11671168

1168-
await evaluator.getOperatorList({
1169+
const [MCIDBBoxes, opPos, noMCIDBBoxes] = await evaluator.getOperatorList({
1170+
initStreamPos: this.initAppearancePos,
11691171
stream: appearance,
1172+
intent,
11701173
task,
11711174
resources,
11721175
operatorList: opList,
@@ -1178,7 +1181,15 @@ class Annotation {
11781181
opList.addOp(OPS.endMarkedContent, []);
11791182
}
11801183
this.reset();
1181-
return { opList, separateForm: false, separateCanvas: isUsingOwnCanvas };
1184+
return {
1185+
opList,
1186+
separateForm: false,
1187+
separateCanvas: isUsingOwnCanvas,
1188+
annotBBoxesAndOpPos: {
1189+
operationPosition: opPos,
1190+
boundingBoxes: [MCIDBBoxes, noMCIDBBoxes],
1191+
},
1192+
};
11821193
}
11831194

11841195
async save(evaluator, task, annotationStorage) {
@@ -2034,7 +2045,8 @@ class WidgetAnnotation extends Annotation {
20342045
]);
20352046

20362047
const stream = new StringStream(content);
2037-
await evaluator.getOperatorList({
2048+
const [MCIDBBoxes, opPos, noMCIDBBoxes] = await evaluator.getOperatorList({
2049+
intent,
20382050
stream,
20392051
task,
20402052
resources: this._fieldResources.mergedResources,
@@ -2045,7 +2057,15 @@ class WidgetAnnotation extends Annotation {
20452057
if (optionalContent !== undefined) {
20462058
opList.addOp(OPS.endMarkedContent, []);
20472059
}
2048-
return { opList, separateForm: false, separateCanvas: isUsingOwnCanvas };
2060+
return {
2061+
opList,
2062+
separateForm: false,
2063+
separateCanvas: false,
2064+
annotBBoxesAndOpPos: {
2065+
operationPosition: opPos,
2066+
boundingBoxes: [MCIDBBoxes, noMCIDBBoxes],
2067+
},
2068+
};
20492069
}
20502070

20512071
_getMKDict(rotation) {

src/core/document.js

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -572,6 +572,7 @@ class Page {
572572
intent & RenderingIntentFlag.ANNOTATIONS_DISABLE
573573
) {
574574
if (intent & RenderingIntentFlag.OPLIST) {
575+
pageOpList.addOp(OPS.annotBBoxesAndOpPos, []);
575576
pageOpList.addOp(OPS.operationPosition, positionByOperationIndex);
576577
pageOpList.addOp(OPS.boundingBoxes, [MCIDBoundingBoxes, noMCIDBoundingBoxes]);
577578
}
@@ -623,13 +624,22 @@ class Page {
623624
let form = false,
624625
canvas = false;
625626

626-
for (const { opList, separateForm, separateCanvas } of opLists) {
627+
const annotationsBBoxesAndOperationPosition = [];
628+
for (const { opList, separateForm, separateCanvas, annotBBoxesAndOpPos } of opLists) {
627629
pageOpList.addOpList(opList);
628630

629631
form ||= separateForm;
630632
canvas ||= separateCanvas;
633+
634+
annotationsBBoxesAndOperationPosition.push(
635+
annotBBoxesAndOpPos ? [
636+
annotBBoxesAndOpPos.operationPosition,
637+
annotBBoxesAndOpPos.boundingBoxes,
638+
] : []
639+
);
631640
}
632641
if (intent & RenderingIntentFlag.OPLIST) {
642+
pageOpList.addOp(OPS.annotBBoxesAndOpPos, annotationsBBoxesAndOperationPosition);
633643
pageOpList.addOp(OPS.operationPosition, positionByOperationIndex);
634644
pageOpList.addOp(OPS.boundingBoxes, [
635645
MCIDBoundingBoxes,

src/core/evaluator.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1718,6 +1718,7 @@ class PartialEvaluator {
17181718
}
17191719

17201720
getOperatorList({
1721+
initStreamPos,
17211722
stream,
17221723
task,
17231724
resources,
@@ -1739,6 +1740,8 @@ class PartialEvaluator {
17391740
var self = this;
17401741
var xref = this.xref;
17411742
let parsingText = false;
1743+
let prevStreamPos;
1744+
if (initStreamPos != null) stream.pos = initStreamPos;
17421745
const localImageCache = new LocalImageCache();
17431746
const localColorSpaceCache = new LocalColorSpaceCache();
17441747
const localGStateCache = new LocalGStateCache();
@@ -1773,6 +1776,7 @@ class PartialEvaluator {
17731776
const operation = {};
17741777
let stop, i, ii, cs, name, isValidName;
17751778
while (!(stop = timeSlotManager.check())) {
1779+
if (prevStreamPos) stream.pos = prevStreamPos;
17761780
// The arguments parsed by read() are used beyond this loop, so we
17771781
// cannot reuse the same array on each iteration. Therefore we pass
17781782
// in |null| as the initial value (see the comment on
@@ -1785,6 +1789,7 @@ class PartialEvaluator {
17851789
let fn = operation.fn;
17861790
boundingBoxCalculator.incrementOperation(fn);
17871791

1792+
prevStreamPos = stream.pos;
17881793
switch (fn | 0) {
17891794
case OPS.paintXObject:
17901795
// eagerly compile XForm objects

src/shared/util.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -345,7 +345,8 @@ const OPS = {
345345
setStrokeTransparent: 92,
346346
setFillTransparent: 93,
347347
boundingBoxes: 100,
348-
operationPosition: 101
348+
operationPosition: 101,
349+
annotBBoxesAndOpPos: 102,
349350
};
350351

351352
const PasswordResponses = {

0 commit comments

Comments
 (0)