1С 8.3 Отобразить PDF в HTML - Программист 1С Минск. Автоматизация бизнеса.

Перейти к контенту

1С 8.3 Отобразить PDF в HTML

Перейти в раздел примеры кода 1С 8.3:
Процедура через WebKit отображает PDF документ на форме в поле HTML.
Отобразить PDF в HTML через WebKit из 1С 8.3:
Процедура Отобразить_PDF_в_HTML(HTMLДок, Данные) Экспорт

   // Параметры:
   // HTMLДок - Поле HTML документа - поле, в которое надо вывести pdf.
   // Данные - Двоичные данные - pdf документ.

  // Внимание! При копировании в 1С могут некорректно вставиться данные(метатеги)
   PDFФайлСтрока = ПолучитьBase64СтрокуИзДвоичныхДанных(Данные);
   HTMLДок = "<!DOCTYPE html>
                   |<html>
                   |    <head>
                   |       <meta http-equiv=""Content-Type"" content=""text/html; charset=UTF-8"" />
                   |       <meta name=""viewport"" content=""width=device-width, initial-scale = 1.0, maximum-scale = 1.0, user-scalable=no"">
                   |       <script src=""https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.4.456/pdf.min.js""></script>
                   |       <script src=""https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.4.456/pdf.worker.min.js""></script>
                   |       <canvas id=""the-canvas""></canvas>
                   |       <script>
                   |             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.5;
                   |
                   |             var viewport = page.getViewport({scale: scale});
                   |
                   |             var canvas = document.createElement( ""canvas"" );
                   |             canvas.style.display = ""block"";
                   |             var context = canvas.getContext('2d');
                   |             canvas.height = viewport.height;
                   |             canvas.width = viewport.width;
                   |
                   |             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 );
                   |             }
                   |             };
                   |
                   |             });
                   |       </script>
                   |   </body>
                   |</html>";

КонецПроцедуры
2
комментарии
Андрей
22 май 2023
При выводе пдф на форму нет возможности выделять текст, как это можно поправить?
Олег
17 апр 2023
А для отображения, нужна публикация на веб-сервере ?
____________________
Copyright©, «Программист 1С в г.Минске», 27.05.2021
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник
Яндекс.Метрика
Защищенное соединение ssl
visa
mastercard
Maestro
Яндекс деньги
Назад к содержимому