Ensure that the isUsingOwnCanvas-parameter is consistently included in operatorLists (PR 14247 follow-up)

Currently some `OPS.beginAnnotation` arguments will contain a `Number` value for the `isUsingOwnCanvas`-parameter, or in some cases an `undefined` value, which is inconsistent from an API perspective.
This commit is contained in:
Jonas Jenwald 2022-07-28 13:37:37 +02:00
parent b06d190451
commit 2fb083f3e2
2 changed files with 22 additions and 2 deletions

View File

@ -876,8 +876,9 @@ class Annotation {
) { ) {
const data = this.data; const data = this.data;
let appearance = this.appearance; let appearance = this.appearance;
const isUsingOwnCanvas = const isUsingOwnCanvas = !!(
this.data.hasOwnCanvas && intent & RenderingIntentFlag.DISPLAY; this.data.hasOwnCanvas && intent & RenderingIntentFlag.DISPLAY
);
if (!appearance) { if (!appearance) {
if (!isUsingOwnCanvas) { if (!isUsingOwnCanvas) {
return new OperatorList(); return new OperatorList();
@ -1679,6 +1680,7 @@ class WidgetAnnotation extends Annotation {
this.data.rect, this.data.rect,
transform, transform,
this.getRotationMatrix(annotationStorage), this.getRotationMatrix(annotationStorage),
/* isUsingOwnCanvas = */ false,
]); ]);
const stream = new StringStream(content); const stream = new StringStream(content);

View File

@ -2506,6 +2506,12 @@ Caron Broadcasting, Inc., an Ohio corporation (“Lessee”).`)
expect(opListAnnotEnable.argsArray.length).toBeGreaterThan(140); expect(opListAnnotEnable.argsArray.length).toBeGreaterThan(140);
expect(opListAnnotEnable.lastChunk).toEqual(true); expect(opListAnnotEnable.lastChunk).toEqual(true);
let firstAnnotIndex = opListAnnotEnable.fnArray.indexOf(
OPS.beginAnnotation
);
let isUsingOwnCanvas = opListAnnotEnable.argsArray[firstAnnotIndex][4];
expect(isUsingOwnCanvas).toEqual(false);
const opListAnnotEnableForms = await pdfPage.getOperatorList({ const opListAnnotEnableForms = await pdfPage.getOperatorList({
annotationMode: AnnotationMode.ENABLE_FORMS, annotationMode: AnnotationMode.ENABLE_FORMS,
}); });
@ -2513,6 +2519,12 @@ Caron Broadcasting, Inc., an Ohio corporation (“Lessee”).`)
expect(opListAnnotEnableForms.argsArray.length).toBeGreaterThan(30); expect(opListAnnotEnableForms.argsArray.length).toBeGreaterThan(30);
expect(opListAnnotEnableForms.lastChunk).toEqual(true); expect(opListAnnotEnableForms.lastChunk).toEqual(true);
firstAnnotIndex = opListAnnotEnableForms.fnArray.indexOf(
OPS.beginAnnotation
);
isUsingOwnCanvas = opListAnnotEnableForms.argsArray[firstAnnotIndex][4];
expect(isUsingOwnCanvas).toEqual(true);
const opListAnnotEnableStorage = await pdfPage.getOperatorList({ const opListAnnotEnableStorage = await pdfPage.getOperatorList({
annotationMode: AnnotationMode.ENABLE_STORAGE, annotationMode: AnnotationMode.ENABLE_STORAGE,
}); });
@ -2520,6 +2532,12 @@ Caron Broadcasting, Inc., an Ohio corporation (“Lessee”).`)
expect(opListAnnotEnableStorage.argsArray.length).toBeGreaterThan(170); expect(opListAnnotEnableStorage.argsArray.length).toBeGreaterThan(170);
expect(opListAnnotEnableStorage.lastChunk).toEqual(true); expect(opListAnnotEnableStorage.lastChunk).toEqual(true);
firstAnnotIndex = opListAnnotEnableStorage.fnArray.indexOf(
OPS.beginAnnotation
);
isUsingOwnCanvas = opListAnnotEnableStorage.argsArray[firstAnnotIndex][4];
expect(isUsingOwnCanvas).toEqual(false);
// Sanity check to ensure that the `annotationMode` is correctly applied. // Sanity check to ensure that the `annotationMode` is correctly applied.
expect(opListAnnotDisable.fnArray.length).toBeLessThan( expect(opListAnnotDisable.fnArray.length).toBeLessThan(
opListAnnotEnableForms.fnArray.length opListAnnotEnableForms.fnArray.length