Decode XML metadata as UTF-8
XML uses UTF-8 by default, which needs to be decoded to a Javascript String prior to feeding it to the DOMParser. In an ideal world, the XML would actually be analyzed and the specified charset would be used, however that does not seem feasible unless JS engines get iconv bindings. Fixes GH-1692
This commit is contained in:
parent
e9632120c4
commit
40b9be137f
@ -140,7 +140,12 @@ var Catalog = (function CatalogClosure() {
|
||||
|
||||
if (isName(type) && isName(subtype) &&
|
||||
type.name === 'Metadata' && subtype.name === 'XML') {
|
||||
metadata = stringToPDFString(bytesToString(stream.getBytes()));
|
||||
// XXX: This should examine the charset the XML document defines,
|
||||
// however since there are currently no real means to decode
|
||||
// arbitrary charsets, let's just hope that the author of the PDF
|
||||
// was reasonable enough to stick with the XML default charset,
|
||||
// which is UTF-8.
|
||||
metadata = stringToUTF8String(bytesToString(stream.getBytes()));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -302,6 +302,10 @@ function stringToPDFString(str) {
|
||||
return str2;
|
||||
}
|
||||
|
||||
function stringToUTF8String(str) {
|
||||
return decodeURIComponent(escape(str));
|
||||
}
|
||||
|
||||
function isBool(v) {
|
||||
return typeof v == 'boolean';
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user