2017-05-09 4 views
1

Ich habe ein Rastersteuerelement, in das ich den Inhalt exportieren möchte. Nach der Initialisierung wird das Attribut pageSize auf 10 Elemente festgelegt. Ich möchte jedoch die Anzahl der Elemente pro Seite während exportToPDF erhöhen.In PDF exportieren Anzahl der Elemente pro Seite erhöhen

Ich habe versucht, die pageSize der dataSource vor der Durchführung des Exports zu ändern, aber das scheint keine Auswirkungen auf das Endprodukt zu haben.

Gibt es etwas, das ich vermisse, damit ich mehr Elemente auf jeder Seite des PDF-Exports anzeigen kann?

EDIT

Einschließlich meiner Raster Definition mit der pdfExport Funktion durch die unten Antwort vorgeschlagen (die nie aufgerufen werden):

var grid = $("#reportGrid").kendoGrid({       
    pdf: { 
     allPages: true, 
     avoidLinks: true, 
     repeatHeaders: true,    
     template: kendo.template($("#page-template").html()), 
     scale: 0.7, 
     margin: { top: "2.5cm", right: "1cm", bottom: "1.5cm", left: "1cm" }, 
     paperSize: "A4", 
     landscape: true 
    }, 
    // *this function is not getting called* 
    pdfExport: function(e) { 
     e.sender.dataSource.pageSize(10); 
     e.promise.done(function() { 
      e.sender.dataSource.pageSize(20); 
     }); 
    }, 
    toolbar: kendo.template($("#template").html()), 
    ... 
});  

Hinweis: Eine Vorlage verwendet wird, eine Kopf-/Fußzeile schließen auf jeder Seite des PDF-Exports.

Noch ein Hinweis: ‚Manuelle Manipulation von dataURI‘ schließt an den Server gehen, um eine Fusion mit einer anderen PDF-Datei auszuführen, so kann ich den Standard-Export über das Netz nicht nutzen :(

EDIT 2

Ich habe das Dojo Beispiel von @ RKSaini's Antwort erweitert, um die Methode zu verwenden, mit der ich den PDF-Export generieren muss (gemäß Originalbeitrag) Das Snippet protokolliert den URI des zu exportierenden Gitters und wenn die Funktion ist Wie Sie sehen werden, wenn Sie das eingebaute Raster 'Export to PDF' verwenden, die pdfExport Funktion wird ausgelöst, aber wenn die zusätzliche Schaltfläche unter dem Raster verwendet wird, ist es nicht.

Antwort

2

Sie können das pdfExport-Ereignis verwenden, um die Seitengröße Ihrer Rasterdatenquelle zu ändern, bevor der PDF-Export gestartet wurde, und wenn der Export abgeschlossen ist, müssen Sie nur die vorherige Seitengröße wiederherstellen.

Die Rückruffunktion dieses Ereignisses empfängt die Rasterinstanz als e.sender und ein Versprechen als e.promise, mit dem die Seitengröße beim Exportieren zurückgesetzt werden kann.

Für weitere Informationen überprüfen http://docs.telerik.com/kendo-ui/api/javascript/ui/grid#events-pdfExport

$("#grid").kendoGrid({ 
    dataSource: dataSource, 
    pdf: { 
     allPages: true 
    }, 
    pdfExport: function(e) { 
     e.sender.dataSource.pageSize(10); 
     e.promise.done(function() { 
      e.sender.dataSource.pageSize(20); 
     }); 
    }, 
    ... 
    //Other configguration 
}); 

Hier ist ein funktionierendes Demo http://dojo.telerik.com/UzOXO

bearbeiten

Sie können auch Gitter Seitengröße in Ihrer benutzerdefinierten Exportfunktion ändern, nur grid Seitengröße ändern vor dem Aufruf der Funktion _drawPdf() und ändern Sie es zurück, wenn Sie fertig sind.

$("#btnPdfExport").kendoButton({ 
    click: function() { 
     var grid = $("#grid").data("kendoGrid");          

     var progress = $.Deferred(); 
     // Change grid datasource pagesize before calling _drawPDF 
     grid.dataSource.pageSize(20); 
     grid._drawPDF(progress) 
      .then(function (root) { 
       return kendo.drawing.exportPDF(root, { forcePageBreak: ".page-break", multiPage: true }); 
      }) 
      .done(function (dataURI) { 
       console.log("Exporting " + dataURI); 
       kendo.saveAs({ 
        dataURI: dataURI, 
        fileName: "export.pdf" 
       }); 
       progress.resolve(); 
       // Change grid datasource pagesize when done 
       grid.dataSource.pageSize(10); 
      });    
    } 
}); 

prüfen Update-DOJO hier http://dojo.telerik.com/UzOXO/8

+0

Ihr Beispiel funktioniert, aber wenn sie mit meinem Code kombiniert (die den Export zu PDF löst manuell mit 'exportPDF'), die' pdfExport' Funktion wird nie aufgerufen. – Sandman

+0

Rufen Sie nicht saveAsPDF() Funktion auf Raster?Es wird pdfExport-Ereignis auslösen. Siehe Dokumentation http://docs.telerik.com/kendo-ui/api/javascript/ui/grid#methods-saveAsPDF –

+0

Nein, laut Originalfrage (mit aktualisierter Antwort, um weitere Details hinzuzufügen) I Verwenden Sie eine Kombination von 'exportPDF', um den URI des Grid-Exports zu erhalten, gehen Sie zum Server, um" merge "mit einem anderen PDF zu machen, das den kompletten URI zurückgibt und schließlich' kendo.saveAs (finalURI) ' – Sandman

Verwandte Themen