mirror of
https://github.com/mozilla/pdf.js.git
synced 2025-04-25 01:28:06 +02:00
Correctly order added annotations when saving or printing
- the annotations must be rendered in the same order as the chronological one. - fix a bug in document.js which avoids to read a saved pdf correctly in Acrobat: there is no need to reset the xref state: it's done in worker.js once everything has been saved.
This commit is contained in:
parent
c5dc082da4
commit
e49d039853
3 changed files with 7 additions and 24 deletions
|
@ -245,9 +245,9 @@ class AnnotationFactory {
|
|||
static async saveNewAnnotations(evaluator, task, annotations) {
|
||||
const xref = evaluator.xref;
|
||||
let baseFontRef;
|
||||
const results = [];
|
||||
const dependencies = [];
|
||||
const promises = [];
|
||||
|
||||
for (const annotation of annotations) {
|
||||
switch (annotation.annotationType) {
|
||||
case AnnotationEditorType.FREETEXT:
|
||||
|
@ -266,7 +266,6 @@ class AnnotationFactory {
|
|||
FreeTextAnnotation.createNewAnnotation(
|
||||
xref,
|
||||
annotation,
|
||||
results,
|
||||
dependencies,
|
||||
{ evaluator, task, baseFontRef }
|
||||
)
|
||||
|
@ -274,20 +273,13 @@ class AnnotationFactory {
|
|||
break;
|
||||
case AnnotationEditorType.INK:
|
||||
promises.push(
|
||||
InkAnnotation.createNewAnnotation(
|
||||
xref,
|
||||
annotation,
|
||||
results,
|
||||
dependencies
|
||||
)
|
||||
InkAnnotation.createNewAnnotation(xref, annotation, dependencies)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
await Promise.all(promises);
|
||||
|
||||
return {
|
||||
annotations: results,
|
||||
annotations: await Promise.all(promises),
|
||||
dependencies,
|
||||
};
|
||||
}
|
||||
|
@ -1360,13 +1352,7 @@ class MarkupAnnotation extends Annotation {
|
|||
this._streams.push(this.appearance, appearanceStream);
|
||||
}
|
||||
|
||||
static async createNewAnnotation(
|
||||
xref,
|
||||
annotation,
|
||||
results,
|
||||
dependencies,
|
||||
params
|
||||
) {
|
||||
static async createNewAnnotation(xref, annotation, dependencies, params) {
|
||||
const annotationRef = xref.getNewRef();
|
||||
const apRef = xref.getNewRef();
|
||||
const annotationDict = this.createNewDict(annotation, xref, { apRef });
|
||||
|
@ -1385,7 +1371,7 @@ class MarkupAnnotation extends Annotation {
|
|||
: null;
|
||||
writeObject(annotationRef, annotationDict, buffer, transform);
|
||||
|
||||
results.push({ ref: annotationRef, data: buffer.join("") });
|
||||
return { ref: annotationRef, data: buffer.join("") };
|
||||
}
|
||||
|
||||
static async createNewPrintAnnotation(xref, annotation, params) {
|
||||
|
|
|
@ -314,7 +314,6 @@ class Page {
|
|||
...newData.annotations
|
||||
);
|
||||
|
||||
this.xref.resetNewRef();
|
||||
return objects;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue