Abhi1 Kanobi Ответов: 1

Как разделить pdf на несколько страниц в jspdf


Привет ,
Я пытаюсь захватить содержимое моего div в pdf-файл с помощью JSPDF.
Не все содержимое моего div попадает в pdf-файл дальше одной страницы .
Div может содержать данные для более чем одного pdf-файла .
Ниже приведен мой код ---

$(document).ready(function () {
        createPDF();
        $('.mydiv').css('display', 'none');

    });
    function createPDF() {
        var
               form = $('.mydiv'),
               cache_width = form.width(),
               a4 = [595.28, 841.89];
        getCanvas().then(function (canvas) {
            var
            img = canvas.toDataURL("image/png"),
            doc = new jsPDF({
                unit: 'px',
                format: 'a4'
                
            });
            doc.addImage(img, 'JPEG', 20, 20);
            doc.save('spmepdf.pdf');
            form.width(cache_width);
            window.location.href = '@Url.Action("Landing")';
        });
    };

    // create canvas object
    function getCanvas() {
        var
               form = $('.mydiv'),
               cache_width = form.width(),
               a4 = [595.28, 841.89];
        debugger
        form.width((a4[0] * 1.33333) - 80).css('max-width', 'none');
        return html2canvas(form, {
            imageTimeout: 2000,
            removeContainer: true
        });
    };


Что я уже пробовал:

Я попытался использовать опцию pagesplit, но безуспешно . Пожалуйста, помогите мне

David_Wimbley

Есть ли у вас жесткое требование делать это в javascript? Это можно легко сделать с помощью itextsharp, вот почему я спрашиваю.

Abhi1 Kanobi

Пока-да . Мне нужно достичь этого только с помощью javascript

1 Ответов

Рейтинг:
5

Sheila Pontes

Привет.

Для решения этой проблемы я предлагаю вам использовать функцию "fromHTML".

Ниже приведен код на javascript для печати html-страницы.

Код, который я нашел в github GitHub-MrRio/jsPDF: Клиентская генерация JavaScript PDF для всех.

Там есть много примеров, которые могут помочь вам в вашей задаче.

Надеюсь, это поможет.
С уважением!
Шейла

function printHtmldiv()
        {
            var pdf = new jsPDF('p', 'pt', 'letter')

            // source can be HTML-formatted string, or a reference
            // to an actual DOM element from which the text will be scraped.
            , source = $('#mydiv')[0]

            // we support special element handlers. Register them with jQuery-style
            // ID selector for either ID or node name. ("#iAmID", "div", "span" etc.)
            // There is no support for any other type of selectors
            // (class, of compound) at this time.
            , specialElementHandlers = {
                 // element with id of "bypass" - jQuery style selector
                '#bypassme': function(element, renderer)
                {
                    // true = "handled elsewhere, bypass text extraction"
                    return true
                }
            }

            margins = {
                top: 80,
                bottom: 60,
                left: 40,
                width: 522
            };
            // all coords and widths are in jsPDF instance's declared units
            // 'inches' in this case
            pdf.fromHTML
            (
                source // HTML string or DOM elem ref.
              , margins.left // x coord
              , margins.top // y coord
              , {'width': margins.width // max width of content on PDF
                 , 'elementHandlers': specialElementHandlers
                }
              , function (dispose) 
                {
                   // dispose: object with X, Y of the last line add to the PDF
                   // this allow the insertion of new lines after html
                   pdf.save('Mypdf.pdf');
                }
              , margins
            )
        }