0 / 0 / 0
Регистрация: 28.04.2018
Сообщений: 4
1

Вывод PDF документов

25.01.2023, 03:10. Показов 808. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
камрады, приветствую!
есть вот такой код, выводящий в хтмл страницу пдф документ:
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<!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>
где СтрокаPDFФайла - это строка формата Base64, полученная из двоичных данных файла пдф.
код рабочий, и один документ пдф выводит без проблем, даже из нескольких страниц.
но если выводить 2 многостраничных документов, то от первого выводит только первую страницу.

можно ли преобразовать код, чтобы выводить произвольное количество многостраничных пдф, один за другим, подскажите пжл?)
спасибо)
п.з. и еще при выводе страницы над первым документом остается пустое пространство, которое при печати считается как отдельная страница, это как то можно убрать?)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.01.2023, 03:10
Ответы с готовыми решениями:

Серверное преобразование нескольких документов (txt, doc, pdf, png, xls) в pdf
Я пытаюсь создать службу, которая преобразует массив загруженных данных: файлы с кодировкой data:...

Совместный вывод вывод Word и PDF документов
Доброго вечера Всем. В предыдущих темах Уважаемый Flasher помог мне с выводом Ворд и ПДФ...

Вывод нескольких документов PDF
Доброго вечера Всем. В соседней теме, участником форума FlasherX был предложен способ вывода...

Пакетная конвертация PDF в DOC и печать любых документов на PDF-принтере
В первую очередь извините, если создал тему в неположенном разделе, но к сожалению найти близкий по...

6
1757 / 912 / 373
Регистрация: 26.11.2014
Сообщений: 1,867
Записей в блоге: 1
26.01.2023, 00:33 2
Цитата Сообщение от ras82 Посмотреть сообщение
п.з. и еще при выводе страницы над первым документом остается пустое пространство, которое при печати считается как отдельная страница, это как то можно убрать?)
Уберите канвас со страницы. Ваш код сам создаёт канвасы.
А остальное проверьте, пожалуйста, как работает...
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
var documents = [str1, str2];
documents.forEach(el => {
  setTimeout(() => {
    var loadingTask1 = pdfjsLib.getDocument({
      data: atob(el),
    });
    console.log(loadingTask1);
 
    loadingTask1.promise.then(function (pdf) {
      let thePDF = pdf;
      console.log(`thePDF: ${thePDF}`);
      let numPages = pdf.numPages;
      let currPage = 1;
      console.log(numPages);
      pdf.getPage(1).then(handlePages);
 
      function handlePages(page) {
        var scale = 1.5;
        var viewport = page.getViewport({ scale: scale });
        let 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);
        }
      }
    });
  });
});
0
0 / 0 / 0
Регистрация: 28.04.2018
Сообщений: 4
26.01.2023, 04:18  [ТС] 3
Цитата Сообщение от NTHing Посмотреть сообщение
Уберите канвас со страницы. Ваш код сам создаёт канвасы.
А остальное проверьте, пожалуйста, как работает...
спасибо)
а как мне передать в переменную el файл(ы) пдф?
0
1757 / 912 / 373
Регистрация: 26.11.2014
Сообщений: 1,867
Записей в блоге: 1
26.01.2023, 09:45 4
Переменные str1, str2 и т.д. в массиве documents это и есть способ передачи файлов. Например:
Javascript
1
var str1 = 'СтрокаPDFФайла'
0
0 / 0 / 0
Регистрация: 28.04.2018
Сообщений: 4
26.01.2023, 09:56  [ТС] 5
Цитата Сообщение от NTHing Посмотреть сообщение
Переменные str1, str2 и т.д. в массиве documents это и есть способ передачи файлов. Например:
выводит:
1 страница 1 документа
1 страница 2 документа
2 страница 1 документа
2 страница 2 документа

я нашел, что метод getDocument() - асинхронный, может в этом дело...
0
1757 / 912 / 373
Регистрация: 26.11.2014
Сообщений: 1,867
Записей в блоге: 1
26.01.2023, 10:05 6
метод getDocument() - асинхронный, может в этом дело...
Да. Скиньте код.
0
0 / 0 / 0
Регистрация: 28.04.2018
Сообщений: 4
26.01.2023, 12:33  [ТС] 7
Цитата Сообщение от NTHing Посмотреть сообщение
Да. Скиньте код.
код чего?
0
26.01.2023, 12:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.01.2023, 12:33
Помогаю со студенческими работами здесь

Слияние PDF документов
Добрый вечер! У меня есть 2 PDF документа: один с текстовым слоем после распознавая и один без, но...

преобразование документов Word в PDF
Доброго вам времени суток. Я сталкнулся с 1й проблемой и мнебы хотелось услышать ваши коментарии...

Сортировка PDF сканов документов
Добрый день! Появилась такая потребность: отсканированные документы в формате PDF рассортировать...

Проблемы с печатью PDF-документов
Доброго времени суток, Форумчане! Столкнулся с следующей проблемой. При попытке распечатать...

Конвертация Excel документов в PDF
Вечер добрый. Перечитал уже много материала. Подскажите в какую сторону смотреть. Необходимо...

Объединение PDF документов с помощью iTextSharp
Всем привет! Есть такая задача: Имеется два PDF документа. Оба состоят из 197 страниц. В первом...

Автоматизация подписания документов PDF Криптопро
Здравствуйте. Подскажите пожалуйста, какие есть способы автоматизации подписания документов...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru