• 界面控件DevExtreme——轻松将TreeList数据导出为PDF格式


    DevExtreme拥有高性能的HTML5 / JavaScript小部件集合,使您可以利用现代Web开发堆栈(包括React,Angular,ASP.NET Core,jQuery,Knockout等)构建交互式的Web应用程序,该套件附带功能齐全的数据网格、交互式图表小部件、数据编辑器等。

    DevExtreme v22.1正式版下载(q技术交流:600715373)

    导出为PDF

    要启用Data Grid的PDF导出选项,请导入jsPDF库。在组件中,设置export.enabled属性为true然后指定导出格式。接下来的操作显示DataGrid中的Export按钮,单击此按钮时,将触发dataGrid.onExporting函数(其中开发者应该调用pdfExporter.exportDataGrid(options)方法)。

    1. <dx-data-grid ...
    2. (onExporting)="onExporting($event)"
    3. >
    4. <dxo-export
    5. [enabled]="true"
    6. [formats]="['pdf']"
    7. >dxo-export>
    8. dx-data-grid>
    1. import { Component } from '@angular/core';
    2. import { exportDataGrid } from 'devextreme/pdf_exporter';
    3. import { jsPDF } from 'jspdf';
    4. // ...
    5. export class AppComponent {
    6. onExporting(e) {
    7. const doc = new jsPDF();
    8. exportDataGrid({
    9. jsPDFDocument: doc,
    10. component: e.component,
    11. }).then(() => {
    12. doc.save('DataGrid.pdf');
    13. });
    14. }
    15. }

    单元格自定义

    开发人员可以自定义单元格内容并在PDF文档中绘制自定义单元格。

    customizeCell函数允许开发者为导出的PDF文档自定义单个DataGrid单元格的外观(例如,可以更改单元格使用的字体样式)。

    1. onExporting(e) {
    2. const doc = new jsPDF();
    3. exportDataGrid({
    4. jsPDFDocument: doc,
    5. component: e.component,
    6. customizeCell({ gridCell, pdfCell }) {
    7. //...
    8. }
    9. }).then(() => {
    10. doc.save('DataGrid.pdf');
    11. });
    12. }

    如果希望在绘制单元格时覆盖默认绘制逻辑并应用自己的绘制逻辑,请使用customDrawCell函数。在下面的例子中,这个函数在PDF文档中为" Website "列绘制并自定义一个单元格:

    1. onExporting(e) {
    2. const doc = new jsPDF();
    3. exportDataGrid({
    4. jsPDFDocument: doc,
    5. component: e.component,
    6. customDrawCell({ gridCell, pdfCell }) {
    7. //...
    8. }
    9. }).then(() => {
    10. doc.save('DataGrid.pdf');
    11. });
    12. }

    页眉和页脚

    开发人员可以轻松地向导出的DataGrid添加页眉和页脚。

    DataGrid组件位于PdfExportDataGridProps中指定点的PdfExportDataGridProps.topLeft 属性的页眉之前。

    对于页脚位置,使用customDrawCell函数,这个函数允许开发者计算组件最右边单元格的坐标。

    导出图片

    jsPDF库API还允许将自定义内容导出为PDF(如图像),对于图像导出,可以调用jsPDF.addImage方法,然后处理onRowExporting事件为导出的DataGrid定制行。

    1. onExporting(e) {
    2. const doc = new jsPDF();
    3. exportDataGrid({
    4. jsPDFDocument: doc,
    5. component: e.component,
    6. onRowExporting: (e) => {
    7. // Customize rows
    8. },
    9. customDrawCell: (e) => {
    10. // Detect picture cell
    11. doc.addImage(e.gridCell.value, 'PNG', e.rect.x, e.rect.y, e.rect.w, e.rect.h);
    12. e.cancel = true;
    13. }
    14. }).then(() => {
    15. doc.save('DataGrid.pdf');
    16. });
    17. }

    导出多个网格

    要将多个DataGrid组件导出到一个文件中,并在PDF文档的不同页面上排列它们,请在Promises链中使用pdfExporter.exportDataGrid(options)方法。

    1. exportGrids() {
    2. const doc = new jsPDF();
    3. DevExpress.pdfExporter.exportDataGrid({
    4. jsPDFDocument: doc,
    5. component: gridOneInstance,
    6. }).then(() => {
    7. doc.addPage();
    8. DevExpress.pdfExporter.exportDataGrid({
    9. jsPDFDocument: doc,
    10. component: gridTwoInstance,
    11. }).then(() => {
    12. doc.save('MultipleGrids.pdf');
    13. });
    14. });
    15. }

  • 相关阅读:
    基于循环队列和信号量的生产和消费者模型
    【 java 面向对象】java 设计模式之单例模式
    java计算机毕业设计冠军体育用品购物网站MyBatis+系统+LW文档+源码+调试部署
    SQL面试题练习 —— 截止目前登陆用户数及登陆用户列表
    eslint prettier husky代码规范配置
    10.20作业
    利用图解法求卷积在某一个点处的值
    Kyligence 当选 Gartner 2022 中国数据管理 Cool Vendor
    嵌入式系统开发中的DevOps自动化: 工具、益处和挑战
    Selenium获取网页数据(1)——环境配置及入门
  • 原文地址:https://blog.csdn.net/AABBbaby/article/details/128143456