Pobieram dokument PDF z zewnętrznego serwisu i koduje do base64. Dokument jest pobrany i zakodowany.

public String viewerShowImage(
			@RequestParam(value = "dmsId", required = false) Long dmsId,
			Locale locale)
	{
		List<Long> ids = new ArrayList<Long>();
		ids.add(dmsId);
		InputStream fileContent = null;

		try {
			List<DmsDTO> dmsRequests = download(ids);
			DmsDTO result = dmsRequests.get(0);
			fileContent = result.getContent().getContent().getInputStream();
			byte[] bytes = IOUtils.toByteArray(fileContent);
			
			return new String(Base64.encodeBase64String(bytes));
			
		} catch (Exception ioe) {
			log.error("Error downloading files from DMS", ioe);
		}
	}

Następnie chcę skorzystać mozilla pdf.js https://mozilla.github.io/pdf.js/ i wyświetlić ten dokument.

function renderPDF(dmsId, canvasContainer) {
		
		$.ajax({
			type: "POST", 
			url: '${viewerShowImage}',
        	async: false, 
        	data : {
		  		dmsId : dmsId
        	},
             success:function (message) {
            	var pdfAsArray = window.btoa(unescape(encodeURIComponent(message)));
            	function renderPage(page) {
        	        var viewport = page.getViewport(scale, rotate);
        	        var canvas = document.createElement('canvas');
        	        var ctx = canvas.getContext('2d');
        	        var renderContext = {
        	          canvasContext: ctx,
        	          viewport: viewport
        	        };
        	        
        	        canvas.height = viewport.height;
        	        canvas.width = viewport.width;
        	
        	        canvasContainer.appendChild(canvas);
        	        
        	        $("canvas").css("display","block");
        	        
        	        page.render(renderContext);
        	    }
        	    
        	             function renderPages(pdfDoc) {
        	                 for(var num = 1; num <= pdfDoc.numPages; num++)
        	                     pdfDoc.getPage(num).then(renderPage);
        	             }
        	
        	    
        	    PDFJS.disableWorker = true;
        	    PDFJS.getDocument("data:application/pdf;base64,"+pdfAsArray).then(renderPages);
       	      	
             },
             error: function() {
                    addMessage({ type: 'ERROR', messageText: 'Wystąpił błąd podczas wyświetlania dokumentu.'});
                } 
         });

	} 
	

Niestety otrzymuję błąd:

GET http://127.0.0.1:8080//viewer/54172272/0/PD94bWwgdmVyc2lvbj0iM…QgbWFnbmlzPC9hPjwvbGk+PC91bD48L2Rpdj48L2Rpdj48L2Rpdj48L2JvZHk+PC9odG1sPg== 404 (Not Found)

Oczywiście pod tym adresem nie ma pliku, ale jak wczytać base64, aby wyświetlił mi się PDF?

Próbowałem zastosować:

http://stackoverflow.com/questions/12092633/pdf-js-rendering-a-pdf-file-using-a-base64-file-source-instead-of-url

Ale otrzymywałem błąd:

Failed to execute 'btoa' on 'Window': The string to be encoded contains characters outside of the Latin1 range.

Obecnie próbuję to wdrożyć:
http://stackoverflow.com/questions/23223718/failed-to-execute-btoa-on-window-the-string-to-be-encoded-contains-characte