laravel - 在vue js中将ag网格表转换为PDF文件
问题描述
我想将 ag-grid 表转换为 pdf 文件并导出。出于这个原因,我使用“jspdf”库。但是现在我无法将 ag-grid 表格内容放入我的 pdf 中。
这是我的 ag-grid 表格部分
<button @click="createPDF">Download PDF</button>
<div ref="content" id="pdfTable" >
<ag-grid-vue
ref="agGridTable"
:components="components"
:gridOptions="gridOptions"
class="ag-theme-material w-100 my-4 ag-grid-table"
:columnDefs="columnDefs"
:defaultColDef="defaultColDef"
:rowData="usersData"
rowSelection="multiple"
colResizeDefault="shift"
:animateRows="true"
:floatingFilter="true"
:pagination="true"
:paginationPageSize="paginationPageSize"
:suppressPaginationPanel="true"
:enableRtl="$vs.rtl">
</ag-grid-vue>
</div>
在方法中:部分
createPDF (){
const doc = new jsPDF();
doc.html(this.$refs.content.innerHTML, {
callback: function (doc) {
doc.save('classroom report.pdf');
},
x: 10,
y: 10
});
},
我可以使用 jspdf 打印静态文本,但无法打印 ag-grid 表数据。还有其他简单的库可以用来将 ag-grid 表导出为 pdf 吗?
解决方案
pdfMake 与 ag-Grid 很好地集成。
您可以利用 ag-Grid API 生成包含要导出的列和行的二维数组:
function getColumnsToExport() {
let columnsToExport = [];
agGridColumnApi.getAllDisplayedColumns().forEach(col => {
let pdfExportOptions = getPdfExportOptions(col.getColId());
if (pdfExportOptions && pdfExportOptions.skipColumn) {
return;
}
let headerCell = createHeaderCell(col);
columnsToExport.push(headerCell);
});
return columnsToExport;
}
function getRowsToExport(columnsToExport) {
let rowsToExport = [];
agGridApi.forEachNodeAfterFilterAndSort(node => {
if (PDF_SELECTED_ROWS_ONLY && !node.isSelected()) {
return;
}
let rowToExport = columnsToExport.map(({ colId }) => {
let cellValue = agGridApi.getValue(colId, node);
let tableCell = createTableCell(cellValue, colId);
return tableCell;
});
rowsToExport.push(rowToExport);
});
return rowsToExport;
}
请参阅 vue.js 中的此示例:
https://stackblitz.com/edit/vue-ag-grid-pdf-make?file=index.js
推荐阅读
- javascript - 当我在 Heroku 中启动我的 Discord Bot 时,npm-clipboardy 不起作用
- c# - 如何使用 IIS 进程内托管获取 ASP.NET Core 中的关闭原因?
- powershell - 使用 powershell 解码单个 kubernetes 机密
- fetch - 从控制台显示一个js对象到html页面
- python - 未找到 cog 下的命令
- react-native - 为什么 Google Places API 在第二次提取后继续停止工作?
- azure-devops - 如何从 azure devops 导出用户访问级别和用户项目名称?
- php - 如何在 PHP 中的数组中放置变量
- jira - JIRA 服务台 - 暂停后继续 SLA 计时器
- python - Python dict - 一些具有相同值的键