From 7c616502c28fcacbdd14291dabd13352e3dabe32 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Thu, 9 Jan 2014 13:44:21 +0100 Subject: [PATCH] Fix annotation border issue (bug 957034) --- src/shared/annotation.js | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/shared/annotation.js b/src/shared/annotation.js index 234f59b7f..ea504e8aa 100644 --- a/src/shared/annotation.js +++ b/src/shared/annotation.js @@ -98,6 +98,29 @@ var Annotation = (function AnnotationClosure() { } else { var borderArray = dict.get('Border') || [0, 0, 1]; data.borderWidth = borderArray[2] || 0; + + // TODO: implement proper support for annotations with line dash patterns. + var dashArray = borderArray[3]; + if (dashArray && isArray(dashArray)) { + var dashArrayLength = dashArray.length; + if (dashArrayLength > 0) { + // According to the PDF specification: the elements in a dashArray + // shall be numbers that are nonnegative and not all equal to zero. + var isInvalid = false; + var numPositive = 0; + for (var i = 0; i < dashArrayLength; i++) { + if (!(+dashArray[i] >= 0)) { + isInvalid = true; + break; + } else if (dashArray[i] > 0) { + numPositive++; + } + } + if (isInvalid || numPositive === 0) { + data.borderWidth = 0; + } + } + } } this.appearance = getDefaultAppearance(dict);