From 6a33dfd13a20afb1bc1ed5dc9f96740d4e9a2312 Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Sun, 14 Feb 2016 20:44:00 +0100 Subject: [PATCH 1/3] Implement support for FileAttachment annotations --- .../firefox/content/PdfStreamConverter.jsm | 2 +- src/core/annotation.js | 30 +++++++ src/core/obj.js | 1 + src/display/annotation_layer.js | 78 ++++++++++++++++++- web/annotation_layer_builder.css | 3 +- web/annotation_layer_builder.js | 5 +- web/pdf_page_view.js | 3 +- web/pdf_viewer.component.js | 5 +- web/pdf_viewer.js | 6 +- web/viewer.js | 3 +- 10 files changed, 127 insertions(+), 9 deletions(-) diff --git a/extensions/firefox/content/PdfStreamConverter.jsm b/extensions/firefox/content/PdfStreamConverter.jsm index d97344cf5..b3f7a9113 100644 --- a/extensions/firefox/content/PdfStreamConverter.jsm +++ b/extensions/firefox/content/PdfStreamConverter.jsm @@ -337,7 +337,7 @@ ChromeActions.prototype = { try { // contentDisposition/contentDispositionFilename is readonly before FF18 channel.contentDisposition = Ci.nsIChannel.DISPOSITION_ATTACHMENT; - if (self.contentDispositionFilename) { + if (self.contentDispositionFilename && !data.isAttachment) { channel.contentDispositionFilename = self.contentDispositionFilename; } else { channel.contentDispositionFilename = filename; diff --git a/src/core/annotation.js b/src/core/annotation.js index 46a59c916..a060094b0 100644 --- a/src/core/annotation.js +++ b/src/core/annotation.js @@ -50,6 +50,7 @@ var isName = corePrimitives.isName; var Stream = coreStream.Stream; var ColorSpace = coreColorSpace.ColorSpace; var ObjectLoader = coreObj.ObjectLoader; +var FileSpec = coreObj.FileSpec; var OperatorList = coreEvaluator.OperatorList; /** @@ -75,6 +76,7 @@ AnnotationFactory.prototype = /** @lends AnnotationFactory.prototype */ { // Return the right annotation object based on the subtype and field type. var parameters = { + xref: xref, dict: dict, ref: ref }; @@ -108,6 +110,9 @@ AnnotationFactory.prototype = /** @lends AnnotationFactory.prototype */ { case 'StrikeOut': return new StrikeOutAnnotation(parameters); + case 'FileAttachment': + return new FileAttachmentAnnotation(parameters); + default: warn('Unimplemented annotation type "' + subtype + '", ' + 'falling back to base annotation'); @@ -852,6 +857,31 @@ var StrikeOutAnnotation = (function StrikeOutAnnotationClosure() { return StrikeOutAnnotation; })(); +var FileAttachmentAnnotation = (function FileAttachmentAnnotationClosure() { + function FileAttachmentAnnotation(parameters) { + Annotation.call(this, parameters); + + var dict = parameters.dict; + var file = new FileSpec(dict.get('FS'), parameters.xref); + + this.data.annotationType = AnnotationType.FILEATTACHMENT; + this.data.file = file.serializable; + + if (!dict.has('C')) { + // Fall back to the default background color. + this.data.color = null; + } + + this.data.hasPopup = dict.has('Popup'); + this.data.title = stringToPDFString(dict.get('T') || ''); + this.data.contents = stringToPDFString(dict.get('Contents') || ''); + } + + Util.inherit(FileAttachmentAnnotation, Annotation, {}); + + return FileAttachmentAnnotation; +})(); + exports.Annotation = Annotation; exports.AnnotationBorderStyle = AnnotationBorderStyle; exports.AnnotationFactory = AnnotationFactory; diff --git a/src/core/obj.js b/src/core/obj.js index 37102c9b5..c7735ed87 100644 --- a/src/core/obj.js +++ b/src/core/obj.js @@ -1591,4 +1591,5 @@ var ObjectLoader = (function() { exports.Catalog = Catalog; exports.ObjectLoader = ObjectLoader; exports.XRef = XRef; +exports.FileSpec = FileSpec; })); diff --git a/src/display/annotation_layer.js b/src/display/annotation_layer.js index 722cf17ea..7eef28360 100644 --- a/src/display/annotation_layer.js +++ b/src/display/annotation_layer.js @@ -42,6 +42,7 @@ var CustomStyle = displayDOMUtils.CustomStyle; * @property {PDFPage} page * @property {PageViewport} viewport * @property {IPDFLinkService} linkService + * @property {DownloadManager} downloadManager */ /** @@ -83,6 +84,9 @@ AnnotationElementFactory.prototype = case AnnotationType.STRIKEOUT: return new StrikeOutAnnotationElement(parameters); + case AnnotationType.FILEATTACHMENT: + return new FileAttachmentAnnotationElement(parameters); + default: return new AnnotationElement(parameters); } @@ -101,6 +105,7 @@ var AnnotationElement = (function AnnotationElementClosure() { this.page = parameters.page; this.viewport = parameters.viewport; this.linkService = parameters.linkService; + this.downloadManager = parameters.downloadManager; if (isRenderable) { this.container = this._createContainer(); @@ -717,6 +722,76 @@ var StrikeOutAnnotationElement = ( return StrikeOutAnnotationElement; })(); +/** + * @class + * @alias FileAttachmentAnnotationElement + */ +var FileAttachmentAnnotationElement = ( + function FileAttachmentAnnotationElementClosure() { + function FileAttachmentAnnotationElement(parameters) { + AnnotationElement.call(this, parameters, true); + + this.filename = parameters.data.file.filename; + this.content = parameters.data.file.content; + } + + Util.inherit(FileAttachmentAnnotationElement, AnnotationElement, { + /** + * Render the file attachment annotation's HTML element in the empty + * container. + * + * @public + * @memberof FileAttachmentAnnotationElement + * @returns {HTMLSectionElement} + */ + render: function FileAttachmentAnnotationElement_render() { + this.container.className = 'fileAttachmentAnnotation'; + + var trigger = document.createElement('div'); + trigger.style.height = this.container.style.height; + trigger.style.width = this.container.style.width; + trigger.addEventListener('dblclick', this._download.bind(this)); + + if (!this.data.hasPopup && (this.data.title || this.data.contents)) { + var popupElement = new PopupElement({ + container: this.container, + trigger: trigger, + color: this.data.color, + title: this.data.title, + contents: this.data.contents, + hideWrapper: true + }); + var popup = popupElement.render(); + + // Position the popup next to the FileAttachment annotation's + // container. + popup.style.left = this.container.style.width; + + this.container.appendChild(popup); + } + + this.container.appendChild(trigger); + return this.container; + }, + + /** + * Download the file attachment associated with this annotation. + * + * @private + * @memberof FileAttachmentAnnotationElement + */ + _download: function FileAttachmentAnnotationElement_download() { + if (!this.downloadManager) { + warn('Download cannot be started due to unavailable download manager'); + return; + } + this.downloadManager.downloadData(this.content, this.filename, ''); + } + }); + + return FileAttachmentAnnotationElement; +})(); + /** * @typedef {Object} AnnotationLayerParameters * @property {PageViewport} viewport @@ -753,7 +828,8 @@ var AnnotationLayer = (function AnnotationLayerClosure() { layer: parameters.div, page: parameters.page, viewport: parameters.viewport, - linkService: parameters.linkService + linkService: parameters.linkService, + downloadManager: parameters.downloadManager }; var element = annotationElementFactory.create(properties); if (element.isRenderable) { diff --git a/web/annotation_layer_builder.css b/web/annotation_layer_builder.css index 3c6b4e43d..03494430a 100644 --- a/web/annotation_layer_builder.css +++ b/web/annotation_layer_builder.css @@ -72,6 +72,7 @@ .annotationLayer .highlightAnnotation, .annotationLayer .underlineAnnotation, .annotationLayer .squigglyAnnotation, -.annotationLayer .strikeoutAnnotation { +.annotationLayer .strikeoutAnnotation, +.annotationLayer .fileAttachmentAnnotation { cursor: pointer; } diff --git a/web/annotation_layer_builder.js b/web/annotation_layer_builder.js index 3f5a32900..6d985b8cc 100644 --- a/web/annotation_layer_builder.js +++ b/web/annotation_layer_builder.js @@ -21,6 +21,7 @@ * @property {HTMLDivElement} pageDiv * @property {PDFPage} pdfPage * @property {IPDFLinkService} linkService + * @property {DownloadManager} downloadManager */ /** @@ -35,6 +36,7 @@ var AnnotationLayerBuilder = (function AnnotationLayerBuilderClosure() { this.pageDiv = options.pageDiv; this.pdfPage = options.pdfPage; this.linkService = options.linkService; + this.downloadManager = options.downloadManager; this.div = null; } @@ -59,7 +61,8 @@ var AnnotationLayerBuilder = (function AnnotationLayerBuilderClosure() { div: self.div, annotations: annotations, page: self.pdfPage, - linkService: self.linkService + linkService: self.linkService, + downloadManager: self.downloadManager }; if (self.div) { diff --git a/web/pdf_page_view.js b/web/pdf_page_view.js index 539113a40..f03a13512 100644 --- a/web/pdf_page_view.js +++ b/web/pdf_page_view.js @@ -13,8 +13,7 @@ * limitations under the License. */ /* globals RenderingStates, PDFJS, DEFAULT_SCALE, CSS_UNITS, getOutputScale, - TextLayerBuilder, AnnotationLayerBuilder, Promise, - approximateFraction, roundToDivide */ + TextLayerBuilder, Promise, approximateFraction, roundToDivide */ 'use strict'; diff --git a/web/pdf_viewer.component.js b/web/pdf_viewer.component.js index 99b450ee8..9980b7ebf 100644 --- a/web/pdf_viewer.component.js +++ b/web/pdf_viewer.component.js @@ -15,7 +15,8 @@ /*jshint globalstrict: false */ /* globals PDFJS, PDFViewer, PDFPageView, TextLayerBuilder, PDFLinkService, DefaultTextLayerFactory, AnnotationLayerBuilder, PDFHistory, - DefaultAnnotationLayerFactory, getFileName, ProgressBar */ + DefaultAnnotationLayerFactory, getFileName, DownloadManager, + ProgressBar */ // Initializing PDFJS global object (if still undefined) if (typeof PDFJS === 'undefined') { @@ -29,6 +30,7 @@ if (typeof PDFJS === 'undefined') { //#include pdf_link_service.js //#include pdf_viewer.js //#include pdf_history.js +//#include download_manager.js PDFJS.PDFViewer = PDFViewer; PDFJS.PDFPageView = PDFPageView; @@ -40,5 +42,6 @@ if (typeof PDFJS === 'undefined') { PDFJS.PDFHistory = PDFHistory; PDFJS.getFileName = getFileName; + PDFJS.DownloadManager = DownloadManager; PDFJS.ProgressBar = ProgressBar; }).call((typeof window === 'undefined') ? this : window); diff --git a/web/pdf_viewer.js b/web/pdf_viewer.js index 2584a0287..baf28551d 100644 --- a/web/pdf_viewer.js +++ b/web/pdf_viewer.js @@ -40,6 +40,8 @@ var DEFAULT_CACHE_SIZE = 10; * @property {HTMLDivElement} container - The container for the viewer element. * @property {HTMLDivElement} viewer - (optional) The viewer element. * @property {IPDFLinkService} linkService - The navigation/linking service. + * @property {DownloadManager} downloadManager - (optional) The download + * manager component. * @property {PDFRenderingQueue} renderingQueue - (optional) The rendering * queue object. * @property {boolean} removePageBorders - (optional) Removes the border shadow @@ -92,6 +94,7 @@ var PDFViewer = (function pdfViewer() { this.container = options.container; this.viewer = options.viewer || options.container.firstElementChild; this.linkService = options.linkService || new SimpleLinkService(); + this.downloadManager = options.downloadManager || null; this.removePageBorders = options.removePageBorders || false; this.defaultRenderingQueue = !options.renderingQueue; @@ -757,7 +760,8 @@ var PDFViewer = (function pdfViewer() { return new AnnotationLayerBuilder({ pageDiv: pageDiv, pdfPage: pdfPage, - linkService: this.linkService + linkService: this.linkService, + downloadManager: this.downloadManager }); }, diff --git a/web/viewer.js b/web/viewer.js index dc748025f..8e4441f2e 100644 --- a/web/viewer.js +++ b/web/viewer.js @@ -134,7 +134,8 @@ var PDFViewerApplication = { container: container, viewer: viewer, renderingQueue: pdfRenderingQueue, - linkService: pdfLinkService + linkService: pdfLinkService, + downloadManager: new DownloadManager() }); pdfRenderingQueue.setViewer(this.pdfViewer); pdfLinkService.setViewer(this.pdfViewer); From 10902fd882055c8a03b0da32de3d293b0e9b472c Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Sun, 14 Feb 2016 21:27:53 +0100 Subject: [PATCH 2/3] Implement unit and reference testing for FileAttachment annotations --- test/pdfs/.gitignore | 1 + test/pdfs/annotation-fileattachment.pdf | Bin 0 -> 93322 bytes test/test_manifest.json | 7 ++++ test/unit/annotation_layer_spec.js | 47 +++++++++++++++++++++++- 4 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 test/pdfs/annotation-fileattachment.pdf diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index 911781e82..ec2d0568e 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -217,3 +217,4 @@ !annotation-strikeout.pdf !annotation-squiggly.pdf !annotation-highlight.pdf +!annotation-fileattachment.pdf diff --git a/test/pdfs/annotation-fileattachment.pdf b/test/pdfs/annotation-fileattachment.pdf new file mode 100644 index 0000000000000000000000000000000000000000..c3b60cd7e649ef8da22149eedd314f6741cf6ee3 GIT binary patch literal 93322 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

VJ@ zrAG&4hm(2QVKNeT%%C$GcQ8hJI$-!h;u-6}@G|HXSqn&!vPTUPTnT-!F6*c+;gVV; zq0>P^Kqe5}x80-_xyt`^Rzm*>&A$k>zva#JO@B1i zHAS!R_#HmAGizb4qu55;Cp<)7jN>nM%$P|w4V_Q*wOOvfn^~1O_Z7!ThS|$B^7g}CE_ery8CLL zGoVhyovTj9-HlGc9a~Sr-B-KcKApsH(QnhkKIIoPeg^QaLyZ+1HLEHycN=Us$oK3A z4VDOmOUpy1OT2?>g)6+4qPq-#y=$hF#SKAJoi28z8PtPH?b%S=^#k}lLB#noV)}F^m&pD)ZL&~O0Zr-Kf=>k0- zbC?r;?>fZGQd~$JO$BQ>1^SvP#7j$@XdoI^cd?FIE6Csk??SY==sE7A@cq*(G*FR?zf^)xp%!r z9~$YXg@%7?+Q%+@W>!O4&KB-TYn&^%Wqw+UDQ zz*>XrZ2#JFP)&sk+7gUH*jGQ)XuE|a)Y{EhYlM-0XryeqHb_q zp_}AjS+MGZxo5cGLf&Bj2s+^ag8r0ssr2>-EkLU2q$cVDyJf-$CKS{OefU z`{LI?tP^jeVM^9D#slp8XfNqrGb87QU)uAGhiUhJyy&+!jdUAwwYO?^G;bNa(|Q?< zG#j$DHvwZcyNgr_6jE3U`1J8C^VHpnx^#?B4`eqJm8ce_R-CStWBhfYr{lT+#Drs^ z#ZXx{blo>aj)0hSHQm^$Ud!3-V@EQcTg_wJalCB&Z1^k*TnXIFj%ytlju&(6BVNJ0 zx5V=Voy_Um{SCwXvGavp5)ymI;Af$|E!YP+umf2apy&WBlMJ}b*x1x@d4Ng=$yL5;G{C=(jRh@5PX#t}{YxPqNgmy+67hxb zA(p8-c#M3O=tMV>AnD;7tn1f+>z*j5)ChIifOd1)1BP0}_Z|oL@c`S8{$AXVoA=B$ z&&RL$r4>Q9Sj@~s$@f$?GuAdUcs4Ug^Z8Bl`S@kR`=!F1a=xPqzLx3tii!7%srQO| z9+ODAAuXQv-G}EWKl-^D1e#>coD_EhUam4qsZ5Tj`u`@`;p*NA_%l612bYB#MvJFfnwalImsy$@l5MCDq7d z)j*;qM|5DqdA!Svy-PzN9CIGmYssVMf&=#bVZm2W zsN0}OMTVs(29WgRmzq2)vvfd1N0(B*#mSXQ=}q2nZ@v+qZCS?fI+eB${HubnG5_GU zE9QrV!xvLp&`fmhnJwp}!KFQSV-K9U_CwQq?*qOV=(3H!5Xfq$VEUy~rLy1noPA3gcdQoOP1_?A(R z{-M1_PD(mcWyoH4D(t!mO&qFwWy>;J@uic2{@fV!1!Yi~8}0tn>;WDUM$1mf)5rMc z)=3!f{Ml`;@w%;}V9?7CJwR`d)^s)imhN@s>QcM#%l+7O(Mn61?7~V|*C0tNn1s>b z$Uv+PF<>c0aPDekm^!4W{+bcPK=M|(`;#w2wi4Zdq)NucJGFj=1MTHVBvlPaleSkh1jK%z*xV@rBI54d-Wx zz)m37dRudfKG;=AN@LeOCmg;!`;|Nn#sM*vx(%p#f!UtS$3Z{C&tMBz=q0K();&1;`E z836|z_eYlN$Lhu3>=3$fh$tJ!i{=AEhWCXf-tCDr*{umpgU_3PW$X(shfD39ZT7xO zZhwGI`wCjH;`_RMDGtIGiIesjkku`mzZf^#h{dPv_^!Akdh5+?9aInuRh$qdLit>L zeAXwU&`K#V8aT%`8pA@@-F!S+ydD*xd+S>~=Hb)5u)rsID>SDd-GI}pcB?!GCspv3 z?W2X@Lso!k=1G45;Qsm{aUFQZIbu)vG?{*&WE*#Qao;c`1_Y>^l3T3{JHcvR0gHG1 zzd9kkek?e*uuce~H~LjyJXlr}dtawtIt2=|^B5BM)|{MaQ2Gl?UfRwsbP#bN9m21D^0UUIe4~LOBug)6 z4<@0ts|(G_mxA6b0bN44feE#3HboBNUgV8PZ^ujPXqU16N~?-^3#mvvf+& zR(Pp2Aa!b7B<2pejlZ3THq8PH4(U*R!}^}dE5+AM*DxFp{nD^e zOg$yF6Mj$SRKwI%WpZ(1r(0?SQ9@WNxATm%?*R(ZOBHgb9iB9~@=Td4G|n1(RK^aX zK6|Nxa;I~cR@7klgY(P15Ba?xPjyD`#_i8tlNEAr8*vMzN@T=3K8N7M3Mz%g9_gE< z@y%fOxgNwD=9zxA1H0fOro5D!CM@Nx6u+d8dn#kr&YoF1Rg?4d0*Si5Z01%D5B`0hnNifQOhL6|fu?=kv{HleiZ2`tQ>S z>x^Miuo`-FE^RLIhZDh5m2PQgDU1clYgG)@(bYm-^1IcSntAGV*3;!og0{k%HlI1R zQz-*$Ry6k;=RLc-E;1W+xNOSZ{fpwNUKT$X@o`)t9C#k_Vbt|l4(tkOcow`oo8l-P z*zeIUfvq8|t?x*_^XMOLt{7;7%^@pq)1wE}??%vg=9Y8Q!hs$KlX861}xno0t_GUHt>!fBjy9n8)SSZGo2ut#WHr zNI!6}pdv#k5cmw7#H3k@wWP$Q8jdJX)TGKKAQ73xouFl*?*u3)7%J5+-J@X`B=MPM zTie9t^(7>PnC(ya<6t&EK)LDSj|K(XfpwSqx~R1LL%@K*{s;dDlxDD!kJEW5H7XB@ zpokk}!whYE_KN-Yqf+k_7g|ll@3bc=DKrl`LKgp^QfQU(xt}H`6lem4o@yq%Q#_Tk zxDH3?87uxOVXH5cqvQxUoO-Iqlp|;IIII!kmvH7!eYO0n(xKFE@;rM&sA#2n3K5_M7%1FR> z@qDx8ZVXOTnym=m)s20zQwByfHQKh%K zRaqYj;#nvA*K4rXl$wvh*zPL!C?>5CScC&W0SK9k1)O&A6st==BvpW*{Tr`J zZ$@9rTWFW&QnbIDvm8~g_BiCXx|FjIR-GM82I>$aW^0eOk6F&#jg~v|_I-?^U)*~T z4f?$o_7!Cpu`B0kG>vgNR7*)tmn)u#kn~0nIuOXa5zXCmFI=XD^U`YG{Z_7tx?4fe zU*Y=MzQ!)7Z|{S@Z9)V{;4)y};{K8CJf$_$)hOFfldaWB@;0S;Qku~;$X(}f^!)ho z#IgK0#i(N2w7!+LH(PsSzhR+(O>6CAb$$2j}z3kN#+P$&D&7H^X(|-;0$^w+I9|8ZYNG=*^nu8Noh_4+s z(`Ir2Dd+nDy#2Pl^z+-z4hup-yqksSBY)+E7wq#8hR@QDAN6ACefk0RD$nwz1amjk zv%R0UW&^bG0QB9`Gq;;ZeT*$n+=D_33oGtf1u~_VJkQ^6xQ)&?Sj-wM&u3#nIGLAT zSud?}M*;D^(|K#xZ)Acg+=#54xr@#Cf<1lJ%7oyN}1wnv&^s>kT(Qrnqu;ez* z_O_P(6B@2PUp+NruqK6z5tjk3{#eU12R@#o0ufC@LT>^$tCYDtFS$?cS|nB^y8pJP zJPW_m8*AQ2#iT|aS4fRK{ekR~j3WG)42w1TeT+>J<*D^!>M|m0dNQ`v$Rax3tkW6> zN}84Z>*yr$UVs-w`Jc*6nlouw#R&XFc+N0|sbs+sJ1?SU6O>2q01+WbL=$o$c$I;L zDHD4(EUQg5@%2SJ)??Xx`NyvX*5xH5P#6?V)d_K zFs=4qAHvTAW&LJ6hqIBU{^K8j)P3l#p?f;TUt?sFGWH9Q_IB3hl7#C_Vub4i?BnW+UNfdl>tEc$suEE7rzHuH!r!H&1*TdZ?itP3??@HE>Kt$IMM z@?-)sQdn^rN)9OwQTSt!x_|X}hoSe#tJZ(|*lUSYO?^AqfppHuvU=&X`pl1vqoK)bGE>J?%;FYaISI6ht*nnJjuuY6efG7yFQAxpRVl1 zUmUBf^#>WcXT$fA>lw{nf(m#1YHnB>^asLn)H`Ta%btIDAI6_*gy zj6|PeBy%Hn`+&zIJc0?_`7cA&ujF*W#-&)kg-G`j{2F3q8x;5A(5DtUM8&`}aVTN} zGI7tBxU)DXy!hX0k9l3+s`Q|Brs{R7VyTC~>2PVjd_IQ*rFq|#)?mWWLMZ6MF&^>d z$&moNxRDc5^N^844TTce8bjih!FrXUlB%dv)F+;aE($K$8)l?TnD=Lda+IDYo$ z?bG2+-T`(1kSYtzFJ9)D9u`)+r{?qHHSH3a3c>czq2SiBH^B8`SnQIuYs0Y>| z#zttPAFmyJA1s#{H}8~N4ZCk0L9!k~&HG8j3FoHt7XZkFb1#cA$`_-2`Ur&IlrNC@ z?PI&zW@<(9I4d=~WXnJC063?G`7>Tt%ltf7_z6T0174lR1Rv!-N!GUY2GKfF;CPCN zxJAY+m4Yi9z5)lb$(z)I;ithtT|*>t&LIoS%qgUlEK?3nMa%GsDYh(pn*V`-5(~W$ zMTJBgcn)Uqa_aF`Xx-9eb^-j7l>fwyf0v)J&QruUt#|nS@xm7iYF$hk+d&JZ%v$&q zZqsHO#id^p*=+w8?w7`=2q>R+;*E~50Z%${M%&mNPWa09HSn|tJJDtCpsQ(Bg@aGw zHB<^ehldQ&r*zdNmGRN08h_Q;V?Q5AIoP(Ztjeqy%c>J7OIw$^zWo{qI<}sT2u*95 z&!bUJaOmkd&mzEzc)!z-z8kzEomkVn+eT#{9a`bq6p|%5)U(o0CjdhNC;y8d%N2AP zeH*pz3oQ|=RwaJ6CuTEOSaSc=D)~QRX@Tn}kHoZ0EiRr~{qlb@iTM%8^H}6dOkAsziF)Zu1x!Cn-kGi2iJ!22@*fT4g$%a zjK96(CVw0r1oA&MBz+K^8UJ@Zk&=TDC%ofw6B=QCbUuV?14))d6Ot~QQR>cC3Ye2s zc7C%xd-J~uLD7cq4!;=qr`z=#txhOctG?I&8s=N*W%JB%(S~O{qTr8E+4u6GodNHi zo8%h~w-9=J@Xg@-+sGSSGLZFjvWgT$>~ihw>gRAdf^sc==?dUp?r`mmJPXA;p|214 z^KF^qy9lMB#nwklm&%6udsU2vg2LP)2M*2ek}EvLkO?-J@_~ig+dAg1!Rd}E^IOHy zRXcFp77lT$;|TR1z1Ie`P2Dy}^Nh^VKmM?QVX%BG&?yLinE#=s^VgkUw813i#j3go z=aO4~0hxmd450#Wo7zDY%DB7MFRQ1-4AZn`R4akKv}b=!jH@JY_r#nZ7M8>Ax_F{ zPXh09*~8*lm;Bns+mJ0M5d#SS9f@N^+<}o<)aN0HPH2{}$sLzRLZn~fPA~@W+5?Mh zc=f@yy8?J$mWNay1(8AtO+FhK-ht^vl#buFR{}kdj)VGFJUvjCgT9SKTM^h-khQ;1 zO|ku;Nrz|~36_3WT;cnnKt6uyv*<{lbgpA+s|~$NgcBWv1v;jZPtvR)JvG9#|9MNd zZzK*dgJVxOW_%bADJ5N%vkQuAgy)eIu?wziR0>aSA5!5+-O$sb>In0gB@qylJ*Hx` zi!sG748Bn6+HRL1Y4wL-+?CXUF?I?Nmi5SKC-pWalWaHKFdpiOL7(^C$7mfKMfT%@?xEgckSw(cy9o^lm^%^|0Qs!}p!UP3K3LWH8k?Si+S7 zNcuzsWv5_5JuwAqnBlW;p*&(6D0?1g9ig4X!xv-@WB9Z9-4HjPY=Ln9i3qrEanEB& zkeJHRUlp+DZAAY>qB$AT-i8StLSTe%mm|>_T<1O6gD|v+7am7vI*h9ci^Y%`uz&20 z)agTB_w+Gwrlv67HM{m(6GT&aYf=%`-ZvZChl*S!lI8)p zLAXoPi9f%KgGc_L>kyXYM7V)clKEiW2{rmVFOj;2>A$QCGxfRl}OYDWa6?%9jQVXFaHYxvzrZpgY#qRf| zCfLZfXjxArbcP(lSd69DkNN-Tjm!#k4moN2?i-v>{~1tH8?3U+`AGET3dRrqBS}-vc!>9k z*$-}85-lLeKnL;6MEGEUXIFj=MHF7!#WpE>LyIqEUEKE=g19KfX)QlZvmI3WQ-A7( zy2qHIr2R*&oR^75OGlRsQ~N{LXs-R#>ZfqCStsb4xu^F7wn5+-f*HXdyr90L=g%J% z^g|ulnCDwQtdE2I>g{(s(_Gh01Ye)kN}-tDiD>ioE&$^*{q zmkI8BkUjlaETNOTj>GI|4tsCYzb_5On1y&Hj`;smnF>3njY%QWoj!E{SHCCm>z4ae z5Yy48Ii>{9gXoB-`iJGR(V#Q^K1=BGj{9TKwbo!0%R4&gYPRV5+;laO;-C*J<~mT7 zaS`iQQSNXh`^Ns)^+U2u8SiCHbLDJem#n_$>#G!ShUATiuuJ@nKF*!&ctEo}$l>W!Sug9^=wq>sWf~WlhLyzPIb33Ty zPh~ae(VwhtcpHAc-I*8Y?QrK^Z5Q~osrHMHGY{|PEmFq|OfTd)J+_B}W4eZK8P0i8 zjK1R@c!MQIEw|=AZEIvtQ=LzC2Pt!_Mx?hcm~gJW-gP{;`e`3f^pT|kgB3{FqL)4! z%!Wz-yJDPED}~!ODD$U@c&Mh{$2IEFaP8jSQ6naJYv7}VMx^&Qab3vnlKVPlJW{o+ z@epEr6qzyL9HKWj`+g)WsUkm180dce)zX(E`8Q=|P^p$o1OaCkvP1J@G^y@;%+*@^ z$)oKK>8kYCBgQ%{z{k8@Z285uC~y14KC;FM-WtjAUeg+qlZ|~7#=7{XK6z=QSJF9k){n*PowWb#(wVy`2*F@&2W*MJF<7|C_eNs>JJz>CQ7()B ziQIy-wEz?b7)YH0eY4>l(U1p-Td>nm(N|Lx2-Xo(#gKS2Q-smwz>T8#mk0kKq)QAW z-~S+{SmJ&8KAwm)F{Eos1ALLO!Z3GKc^baQZmQQRotxSXiC7#kzNfX`n`SXRP)0VE z4bS#P<7t-t5xR+G<}t`q|8%6 z;*Y~`f6FCe;8o`9Bny}4T2`BAv>4zLk`-T&eaF>9w(9Jg3(1^K&`Pvi8A~ z6_aapi{+TM;Tg8$Vp`k4zi&n7u!_D#t!T=-onGb`3oDU7A<6rlplR85MUyn!e`Jrb zv&FjSYF_+W^bPqaSV@8!*zNblRRG8C5E34bXyk+Zr!Z!LB#;7FL}NcnFkvjhf8X+J z4ibNHtB0~>Q}-@_d9xx8cn0`w0zPDm@1uMT-S134(t8<)jc>Pju}0sp?rD>DYl1pw z+gc|txI#(J1-uCFQBd>CKZcLUD*60hSc-#&V_ZM7D19v6Y-NPfZzac`9Jfd}toz!c z)tZo0xeY7^lU2ij*&r*D9P7UNXt(cBnXF*CC8L`aEW17@URT?k>ek-<51B3#Y#IlW z+G-Ei?9-9lPL||YOep)KanAmBY8Y2H^~@&P#A^#hS2fP*Jim;5Pk`V-nFy$|V{^;H zi8{!6-U4w$#0MqdfsO6@=!Qz(W5@{gyI=u5O9)on3p*5)&M1k`wqtHooV-AbMV8{d zkh&*G(|OaUc7j^xO>JbymPl#ZqouAl9)g<&aV^4q0@^arn)aNN>RHLq6?uV7o2-kn zxhPYKg5jVsL z=mB9fXjM@8PYX;~;AUMrJXrq|eaaWSkZw4}9FDV4h@XOPkX{#zJfJ8)<pyAB>3#fcs7^0w)fXq)Kc8+T{C)Wvc>haok`bp?Nf|Ge!NufJEp z!9^1@fyYHnA;;MbU0C09Si#6e6E*Qi0&)djKOR%a@%ukP&B^BZfZn3~>z3%8t?=tV zkx}xj`ks>tXSTA8>3>SG^^eEoa_s)CP;=6GHlWTZfJ}jZ!J1ohs#^v0(|*nta+$=S zlWRk6q>+2hOA8th{0yIP#B{b6w2*A3ZJynKKW_Ld%y{H{iKqQjZziKJ4(kt)$ z3zQHcNljnc{B8Shp@2o7y!CHTdNX9Ilh(|*g_T1-K8A&TK01UGE~5|oe1Q$!@xtG9 z3@9(GifQFK{y!9okz9>{f2IQV>@7$j=Bw*+N;GnbB22@3vUtx^yA&3ljVo5Om*<`R zS+-~op-lrJTD#rOS_ts{Ahw9~Ai@{m%+~$>CE6xxh{<=3!YUtAD}vru63n6wQv|nH zd^be%J1a5f<8~{*WXJK%Ic0hY+Y*E2H+Vqmjm7loyC4Z6_!liyC3!g!K{RmXzeO35 z3~OI$2**5P3HG*Ueg#1H3R7t!OD_MqAL7%&f?pmlD6ai4E(q zP6Tki(C1FN@{(B&{lY$zk;`PQn7HL}CW1bp)bgFFDh>HnMbu_FbcS8m29%Hd$84-d zx^T;?LU;3V-ha!N>a&O_T^gvQ6}J~x$qu=UNiw^m8qDDDk7k*%zRC}(!QTfMG8MAK zMK>v*M91Hn(k2M_^awv<)DkCl_ z8!Dy#FVZQtz!P=7@DN|*p0ZVJnm6K1{$I07kWBxvz@eWKm4W@fpalgrJ@8ayW~)6K z z-e3yLnT47dctvXP0uS@6*wT=z&33a$NagBdk>*fSFbBGz)HgK*xl(LTt?X<$u+JkJ zB10V!c(_yHy6@h`MGmz*-);im?84`g1?zhDlFLqfTE=f7r%1G7?XyUGtA+(+?Z)@h z`t9LsLR}vH(PnRP<&vxVwS2=JZ}=9=y>y^$83!C5Gf#vDbir~*gsLWgI!=H;ys(NH zIH1|t0PFGwe5nFy_ig$N_sYW^RYFsQ_pPhI9-G`|2rpbt*C$i!f!7G5);4!HHv4-z zlqc(x!$N1OdRXlg<^2~X%958<{$>3Djo>n6fX7GW`+N(iGW5b@A|*P}d4st*`FeQP z6S+EgvfqT}DCrdeF^eTuhZUeK~inC_D@ZfG65k_PGwFdR7F z&+=k1vCn`TkXO5#`=c~z2QDfjTeveb%0Acc@iRx-PHqotB$)|^i;4n-p~8`G$DNg9 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

uM0$r&AD(O}bkWhY-hVq}bc(95;mI3G|l zQrXqGMxmT7gIyyL)ywJ@rJwK9w=-^ z8CCH4K7QBp<;hv+8*D-$n|da8B@l&;v8dXb$@;6)3(9vC_?d>Qd<$F#UbtH(rv;tR5%9<))V!5vL|Xq@EFU6_AwS7DJdZNT8TI(Ai|E^tQ^jqV1bj8`s+^J zlcVu()Gaj)(@T%OQ+`^6o?h zEh71{$y*R8eWbRjruN@Y;;(H$S!r@p<`{Azjno3*F?P=68$6o+dKO@a$S)wMMu3@4 zfX~QzsY%r=uSTpwLq$UhAHz02GxVY zBZ_M8fUPB(`i-)kQM_6w-^2{Zh%ws-i(e_sPue_xwOcdao4Mc`xYbtpHtOx$**&5} z>r^eLvAh-M#WZ&2o#RP45Za&9hL8#U!}fj~+M>UtT|`?4I49@kSKoexFHwCo-?(av z8A1$5SN4PV$sfOV2W6Rp(w76Y9_~k;p2pUiavF*4DZbdgwA|afq}XyQ;+#zq%@-b; zk?&a|O)h-1XY{JfObj-!f6J_}b1$3_@R{u0^q)OX(VjZPyXKTQnlG0rnx+UR5KkmU z|2N#w-xW6$_DkHi=qaSn$Vq10R!|2WmV#F*W#rnzA2e@J-1}-E3%6ps7ti`b6HYK| zk+dDqe6-^|U6{4&0{!B&m#m4q>tG$?n~J5ksW5wfj+Y`sgX-E;-u8(u{g^W-5sYc& zyob9qwAuX=H}7nJ=^}{cTO@r-hvlZXT@jC$6)Pudn6ONtI}5w>b0Zi0ZK*?kN&OlV z1=*#Lsp~BRnqPJIz!$%e#Z+GsjNKYuJR=Wu>VvYkJ?c6;KMMOe)Mb+Pp6DqFUQK62_4DqtxrI22HF4{c3g+u3d3<651ehdkNa6$4HlQY7=1K(6yojH;?Zp89z_sZ@+f zpVZmXgX=nwy%P+lA307r9~=F#jv=&}QM~lE#b9op*f|QgVkoK+>NQl>7b_`9 z)7@20?R~tGAe{Ac@UY(&ywER9T_@rnrhd}^T~e!;sUIEx)P!`~BeBQgCVMajiywEl zW%5pb>sR>X3VX==>|tT<9T~NU;J`{;t3&)fUbSiNWTi%oKv3jv`u52q|3X*MR<&9( zHFEX~=a^be=5$-WkZ@f%U7B2%4t~PtfyU-1!DtB|(mP7`aKU#!hc5ivLjTRJ{eMNy zzf1H2{f(_%^#85>|HQXLkFuHHGFJbMtsVOBbQAz2r=wa#djL=k0EUvkSx(MGfQay4 zS)d5)FP94VZ@F-~4w^6kyV$elzaO%uOBqxb#;MFkMG*?LiV_21-B``G17fWb^7v0* z)T!{Zf!`UpHqqzMBWWi~zx$0KF-1*D1-^IooPRnG=lRZynk(3=F;Lqs8sr!~JYdT6?s2+y{Oj}_Tb zr9R7p^~EbIylN42ea&!MMolV|p}p_ezH+s#(XEc<-C}_|5_7hmI*mkNcEhQCGY!pg zm(sY~$f1k$iE3CSqw@+|q7aUiJ(Fyk-mKMvCn!3wrNzyMSLz;fum5-^)_Pxab)dPm zUSHp1o6-19`(UzE{&V&*bmhry+6yj4y(Z#1UJpJBR;$kMJ9bsSkH< zspEcdn!w{FJCk?`(ls$m^BE*@sVzcaK;|IlTU>~teixIgb((kg*T)JqanP0U-7v|q z(`-pKT2(r(k9VI8;L~~>(|sZpynv+RmuUSC&T^o@+IjqoFLvX*CxQ%K&LG&EWtd{$ z#GO#+>+F~cI#6HI;b#^fp&|ypX*lDn&o!i9%BbkRh)e`t$|FS<34EpK8Nbo4rZgA& zy5e$Br`{X1saO4@Cw+6XN`-wnnkN0O9-nd{qyAIsrHE&qK2~(@af`(2qNESbCr=0$ z$}>;c^hDQ4Y>Tey(GHp=H$H01N_78n+~2wKq@&=JgYw}pD#^l9EVShCBF8HD`eI9X z@$0a#_=Y;QrP^q|wc;>6mWDZ~)AvrHkHyPz!`0WKv(Vfp`??q(qq>GPVVgZy?aLb< zZNqMT7#KK-qM*Mz7>uFnr)E!oXqqDZ`9@P7V|_DH(1cj`)*W_b6_^ zvw?3JWjSUsUZc=B`(P3hKs!5SUy_*fG+cL3ju6eA>aB_pJ($|IOhWdvS_apVj_nGJ zxc)RugZ^9V008whad@B}8VnEwK#YM%2Me4#8U%nsjsH~Bphxfbk*xKPcNzGnyhRq? z{?OfI33e{_4$c5!vaE!&ur?d28Mtjzz7+Ll!ORKP)HgoD=iC_m6ZkyfPeKY=mR2&g-DSru09t?xBj`@5F58Z6O zH@ETW7YU)y_msFvF(Oi})~8P&liFl0`YCN1DrX|biRkWx!_!cSLdY`>)r}kSC Date: Mon, 15 Feb 2016 14:46:41 +0100 Subject: [PATCH 3/3] Move the `getFileName` helper function to the core This is required to be able to use it in the annotation display code, where we now apply it to sanitize the filename of the FileAttachment annotation. The PDF file from https://bugzilla.mozilla.org/show_bug.cgi?id=1230933 has shown that some PDF generators include the path of the file rather than the filename, which causes filenames with weird initial characters. PDF viewers handle this differently (for example Foxit Reader just replaces forward slashes with spaces), but we think it's better to only show the filename as intended. Additionally we add unit tests for the `getFilenameFromUrl` helper function. --- extensions/b2g/viewer.js | 2 +- src/display/annotation_layer.js | 3 ++- src/shared/util.js | 12 ++++++++++++ test/unit/util_spec.js | 17 ++++++++++++++++- web/pdf_attachment_view.js | 4 ++-- web/pdf_viewer.component.js | 4 +--- web/ui_utils.js | 9 --------- web/viewer.js | 20 ++++++++++---------- 8 files changed, 44 insertions(+), 27 deletions(-) diff --git a/extensions/b2g/viewer.js b/extensions/b2g/viewer.js index 94bb77caa..e93d503b5 100644 --- a/extensions/b2g/viewer.js +++ b/extensions/b2g/viewer.js @@ -88,7 +88,7 @@ var PDFViewerApplication = { setTitleUsingUrl: function pdfViewSetTitleUsingUrl(url) { this.url = url; - var title = PDFJS.getFileName(url) || url; + var title = PDFJS.getFilenameFromUrl(url) || url; try { title = decodeURIComponent(title); } catch (e) { diff --git a/src/display/annotation_layer.js b/src/display/annotation_layer.js index 7eef28360..f64c438cf 100644 --- a/src/display/annotation_layer.js +++ b/src/display/annotation_layer.js @@ -32,6 +32,7 @@ var AnnotationBorderStyleType = sharedUtil.AnnotationBorderStyleType; var AnnotationType = sharedUtil.AnnotationType; var Util = sharedUtil.Util; var addLinkAttributes = sharedUtil.addLinkAttributes; +var getFilenameFromUrl = sharedUtil.getFilenameFromUrl; var warn = sharedUtil.warn; var CustomStyle = displayDOMUtils.CustomStyle; @@ -731,7 +732,7 @@ var FileAttachmentAnnotationElement = ( function FileAttachmentAnnotationElement(parameters) { AnnotationElement.call(this, parameters, true); - this.filename = parameters.data.file.filename; + this.filename = getFilenameFromUrl(parameters.data.file.filename); this.content = parameters.data.file.content; } diff --git a/src/shared/util.js b/src/shared/util.js index 3a6b4f2c6..2c5f96ea3 100644 --- a/src/shared/util.js +++ b/src/shared/util.js @@ -284,6 +284,17 @@ var UNSUPPORTED_FEATURES = PDFJS.UNSUPPORTED_FEATURES = { font: 'font' }; +// Gets the file name from a given URL. +function getFilenameFromUrl(url) { + var anchor = url.indexOf('#'); + var query = url.indexOf('?'); + var end = Math.min( + anchor > 0 ? anchor : url.length, + query > 0 ? query : url.length); + return url.substring(url.lastIndexOf('/', end) + 1, end); +} +PDFJS.getFilenameFromUrl = getFilenameFromUrl; + // Combines two URLs. The baseUrl shall be absolute URL. If the url is an // absolute URL, it will be returned as is. function combineUrl(baseUrl, url) { @@ -2367,6 +2378,7 @@ exports.combineUrl = combineUrl; exports.createPromiseCapability = createPromiseCapability; exports.deprecated = deprecated; exports.error = error; +exports.getFilenameFromUrl = getFilenameFromUrl; exports.getLookupTableFactory = getLookupTableFactory; exports.info = info; exports.isArray = isArray; diff --git a/test/unit/util_spec.js b/test/unit/util_spec.js index bf9cedf93..bd4a0f2a4 100644 --- a/test/unit/util_spec.js +++ b/test/unit/util_spec.js @@ -1,10 +1,25 @@ /* globals expect, it, describe, combineUrl, Dict, isDict, Name, PDFJS, stringToPDFString, isExternalLinkTargetSet, LinkTarget, - removeNullCharacters */ + removeNullCharacters, getFilenameFromUrl */ 'use strict'; describe('util', function() { + describe('getFilenameFromUrl', function() { + it('should get the filename from an absolute URL', function() { + var url = 'http://server.org/filename.pdf'; + var result = getFilenameFromUrl(url); + var expected = 'filename.pdf'; + expect(result).toEqual(expected); + }); + + it('should get the filename from a relative URL', function() { + var url = '../../filename.pdf'; + var result = getFilenameFromUrl(url); + var expected = 'filename.pdf'; + expect(result).toEqual(expected); + }); + }); describe('combineUrl', function() { it('absolute url with protocol stays as is', function() { diff --git a/web/pdf_attachment_view.js b/web/pdf_attachment_view.js index 9ac37d441..a2757c637 100644 --- a/web/pdf_attachment_view.js +++ b/web/pdf_attachment_view.js @@ -12,7 +12,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -/* globals getFileName, PDFJS */ +/* globals PDFJS */ 'use strict'; @@ -84,7 +84,7 @@ var PDFAttachmentView = (function PDFAttachmentViewClosure() { for (var i = 0; i < attachmentsCount; i++) { var item = attachments[names[i]]; - var filename = getFileName(item.filename); + var filename = PDFJS.getFilenameFromUrl(item.filename); var div = document.createElement('div'); div.className = 'attachmentsItem'; var button = document.createElement('button'); diff --git a/web/pdf_viewer.component.js b/web/pdf_viewer.component.js index 9980b7ebf..22af0e5f7 100644 --- a/web/pdf_viewer.component.js +++ b/web/pdf_viewer.component.js @@ -15,8 +15,7 @@ /*jshint globalstrict: false */ /* globals PDFJS, PDFViewer, PDFPageView, TextLayerBuilder, PDFLinkService, DefaultTextLayerFactory, AnnotationLayerBuilder, PDFHistory, - DefaultAnnotationLayerFactory, getFileName, DownloadManager, - ProgressBar */ + DefaultAnnotationLayerFactory, DownloadManager, ProgressBar */ // Initializing PDFJS global object (if still undefined) if (typeof PDFJS === 'undefined') { @@ -41,7 +40,6 @@ if (typeof PDFJS === 'undefined') { PDFJS.DefaultAnnotationLayerFactory = DefaultAnnotationLayerFactory; PDFJS.PDFHistory = PDFHistory; - PDFJS.getFileName = getFileName; PDFJS.DownloadManager = DownloadManager; PDFJS.ProgressBar = ProgressBar; }).call((typeof window === 'undefined') ? this : window); diff --git a/web/ui_utils.js b/web/ui_utils.js index 9b681ba9f..5bb0592ad 100644 --- a/web/ui_utils.js +++ b/web/ui_utils.js @@ -23,15 +23,6 @@ var MAX_AUTO_SCALE = 1.25; var SCROLLBAR_PADDING = 40; var VERTICAL_PADDING = 5; -function getFileName(url) { - var anchor = url.indexOf('#'); - var query = url.indexOf('?'); - var end = Math.min( - anchor > 0 ? anchor : url.length, - query > 0 ? query : url.length); - return url.substring(url.lastIndexOf('/', end) + 1, end); -} - /** * Returns scale factor for the canvas. It makes sense for the HiDPI displays. * @return {Object} The object with horizontal (sx) and vertical (sy) diff --git a/web/viewer.js b/web/viewer.js index 8e4441f2e..764c0af09 100644 --- a/web/viewer.js +++ b/web/viewer.js @@ -12,15 +12,15 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -/* globals PDFJS, PDFBug, FirefoxCom, Stats, ProgressBar, - DownloadManager, getFileName, getPDFFileNameFromURL, - PDFHistory, Preferences, SidebarView, ViewHistory, Stats, - PDFThumbnailViewer, URL, noContextMenuHandler, SecondaryToolbar, - PasswordPrompt, PDFPresentationMode, PDFDocumentProperties, HandTool, - Promise, PDFLinkService, PDFOutlineView, PDFAttachmentView, - OverlayManager, PDFFindController, PDFFindBar, PDFViewer, - PDFRenderingQueue, PresentationModeState, parseQueryString, - RenderingStates, UNKNOWN_SCALE, DEFAULT_SCALE_VALUE, +/* globals PDFJS, PDFBug, FirefoxCom, Stats, ProgressBar, DownloadManager, + getPDFFileNameFromURL, PDFHistory, Preferences, SidebarView, + ViewHistory, Stats, PDFThumbnailViewer, URL, noContextMenuHandler, + SecondaryToolbar, PasswordPrompt, PDFPresentationMode, + PDFDocumentProperties, HandTool, Promise, PDFLinkService, + PDFOutlineView, PDFAttachmentView, OverlayManager, + PDFFindController, PDFFindBar, PDFViewer, PDFRenderingQueue, + PresentationModeState, parseQueryString, RenderingStates, + UNKNOWN_SCALE, DEFAULT_SCALE_VALUE, IGNORE_CURRENT_POSITION_ON_ZOOM: true */ 'use strict'; @@ -486,7 +486,7 @@ var PDFViewerApplication = { setTitleUsingUrl: function pdfViewSetTitleUsingUrl(url) { this.url = url; try { - this.setTitle(decodeURIComponent(getFileName(url)) || url); + this.setTitle(decodeURIComponent(PDFJS.getFilenameFromUrl(url)) || url); } catch (e) { // decodeURIComponent may throw URIError, // fall back to using the unprocessed url in that case