Add a utility function, for the viewer, that removes null (\x00) characters (issue 6416)

Since some browsers render `null` characters, and others don't, this patch adds a way to remove them to prevent display issues in the viewer UI.

Given that documents may contain very long outlines, I've added a utility function to avoid creating a lot of unnecessary `RegExp` objects.
To avoid any future issues, this utility function is used for both the outline and the attachments.

Fixes 6416.
This commit is contained in:
Jonas Jenwald 2015-09-09 23:42:22 +02:00
parent 3daae40425
commit b7d1bed463
3 changed files with 10 additions and 3 deletions

View File

@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
/* globals getFileName */ /* globals getFileName, removeNullCharacters */
'use strict'; 'use strict';
@ -91,7 +91,7 @@ var PDFAttachmentView = (function PDFAttachmentViewClosure() {
div.className = 'attachmentsItem'; div.className = 'attachmentsItem';
var button = document.createElement('button'); var button = document.createElement('button');
this._bindLink(button, item.content, filename); this._bindLink(button, item.content, filename);
button.textContent = filename; button.textContent = removeNullCharacters(filename);
div.appendChild(button); div.appendChild(button);
this.container.appendChild(div); this.container.appendChild(div);
} }

View File

@ -14,6 +14,7 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
/* globals removeNullCharacters */
'use strict'; 'use strict';
@ -138,7 +139,7 @@ var PDFOutlineView = (function PDFOutlineViewClosure() {
div.className = 'outlineItem'; div.className = 'outlineItem';
var element = document.createElement('a'); var element = document.createElement('a');
this._bindLink(element, item); this._bindLink(element, item);
element.textContent = item.title; element.textContent = removeNullCharacters(item.title);
div.appendChild(element); div.appendChild(element);
if (item.items.length > 0) { if (item.items.length > 0) {

View File

@ -75,6 +75,12 @@ var CustomStyle = (function CustomStyleClosure() {
return CustomStyle; return CustomStyle;
})(); })();
var NullCharactersRegExp = /\x00/g;
function removeNullCharacters(str) {
return str.replace(NullCharactersRegExp, '');
}
function getFileName(url) { function getFileName(url) {
var anchor = url.indexOf('#'); var anchor = url.indexOf('#');
var query = url.indexOf('?'); var query = url.indexOf('?');