2017-02-15 7 views
1

Я использую следующий код, чтобы сохранить представление webContents в файл PDF.printToPDF не распечатывает все webContent view

saveReport() { 
     const remote = require('electron').remote; 
     const webContents = remote.getCurrentWebContents(); 

     webContents.printToPDF({ 
      pageSize: 'A3', 
      landscape: false 
     }, (err, data) => { 
      remote.require('fs') 
       .writeFile(TEMP_URL, data); 
     }); 
    }, 

Представление представляет собой отчет и содержит очень длинный контент внутри него (см. Ниже).

enter image description here

Вместо того чтобы показывать полное представление, я вижу, частичный вид внутри одной странице с полосой прокрутки. Ниже приведен скриншот для созданного PDF,

enter image description here

Ожидаемое поведение

Так же, как и настоящий браузер, сгенерированный PDF должен содержать все представление, если одна страница не обеспечивает достаточно места, необходимо создать несколько страниц.

Я думаю, что, возможно, что-то не так с моим css.

ответ

1

У меня было аналогичное требование для моего текущего проекта, и я заметил, что когда вы используете этот api, вы можете настроить способ рендеринга pdf, добавив файл css в свой основной html с запросом на печать, установленным для печати media="print".

Эта таблица стилей CSS будет применяться только в том случае, если вы что-то напечатаете или экспортируете в pdf через метод api printToPdf().

Если вы используете какой-либо набор ui, например фотон или бутстрап, попробуйте отключить его и посмотреть, помогает ли он.

последнего совет: попробуйте использовать свойство CSS page-break-before: always;

Надеется, что это помогает