Добрый день.
Для отображения PDF использую библиотеку PDFJS. У отображаемого документа смазываются шрифты и портится масштаб, т.к. если выгрузить его в файл, то он будет меньше исходного.
Сначала загружаю PDF из временного файла в двоичные данные. Потом преобразовываю в строку Base64.
Код использую следующий:
СтрокаPDFФайла = ПолучитьBase64СтрокуИзДвоичныхДанных(ДанныеДД);
HTMLТекст = "<!DO CTYPE html>
|<ht ml>
| <head>
| <met a http-equiv=""Content-Type"" content=""text/html; charset=UTF-8"" />
| <met a name=""viewport"" content=""width=device-width, initial-scale = 1.0, maximum-scale = 1.0, user-scalable=yes"">
| <sc ript src=""https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.4.456/pdf.min.js""></sc ript>
| <sc ript src=""https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.4.456/pdf.worker.min.js""></sc ript>
| <st yle>
|
| </style>
| <body>
| <sc ript>
| var currPage = 1; //Pages are 1-based not 0-based
| var numPages = 0;
| var thePDF = null;
|
| var loadingTask = pdfjsLib.getDocument({data: atob(`" + СтрокаPDFФайла + "`)});
| loadingTask.promise.then(function(pdf) {
|
| thePDF = pdf;
| numPages = pdf.numPages;
|
| pdf.getPage(1).then(handlePages);
|
| function handlePages(page) {
| var scale = 1;
|
| var viewport = page.getViewport({scale: scale});
|
| var canvas = document.createElement( ""canvas"" );
| canvas.style.display = ""block"";
| canvas.height = viewport.height;
| canvas.width = viewport.width;
| var context = canvas.getContext('2d');
|
| var renderContext = {
| canvasContext: context,
| viewport: viewport
| };
| var renderTask = page.render(renderContext);
|
| document.body.appendChild( canvas );
|
| currPage++;
| if ( thePDF !== null && currPage <= numPages )
| {
| thePDF.getPage( currPage ).then( handlePages );
| }
| };
|
| });
| </sc ript>
| </body>
|</html>";
Показать