Merge pull request #4768 from Snuffleupagus/issue-4766

Handle more cases of invalid line dash patterns in annotation borders
This commit is contained in:
Tim van der Meij 2014-05-12 22:40:46 +02:00
commit a27f51e37c

View File

@ -105,24 +105,30 @@ var Annotation = (function AnnotationClosure() {
// TODO: implement proper support for annotations with line dash patterns. // TODO: implement proper support for annotations with line dash patterns.
var dashArray = borderArray[3]; var dashArray = borderArray[3];
if (data.borderWidth > 0 && dashArray && isArray(dashArray)) { if (data.borderWidth > 0 && dashArray) {
var dashArrayLength = dashArray.length; if (!isArray(dashArray)) {
if (dashArrayLength > 0) { // Ignore the border if dashArray is not actually an array,
// According to the PDF specification: the elements in a dashArray // this is consistent with the behaviour in Adobe Reader.
// shall be numbers that are nonnegative and not all equal to zero. data.borderWidth = 0;
var isInvalid = false; } else {
var numPositive = 0; var dashArrayLength = dashArray.length;
for (var i = 0; i < dashArrayLength; i++) { if (dashArrayLength > 0) {
var validNumber = (+dashArray[i] >= 0); // According to the PDF specification: the elements in a dashArray
if (!validNumber) { // shall be numbers that are nonnegative and not all equal to zero.
isInvalid = true; var isInvalid = false;
break; var numPositive = 0;
} else if (dashArray[i] > 0) { for (var i = 0; i < dashArrayLength; i++) {
numPositive++; var validNumber = (+dashArray[i] >= 0);
if (!validNumber) {
isInvalid = true;
break;
} else if (dashArray[i] > 0) {
numPositive++;
}
}
if (isInvalid || numPositive === 0) {
data.borderWidth = 0;
} }
}
if (isInvalid || numPositive === 0) {
data.borderWidth = 0;
} }
} }
} }