HTML表格导出为具有适当列宽和字体的pdf
HTML table export to pdf with proper column width and Fonts
我正在使用以下方法导出数据:
<a href="#" class="nonPdf" onclick ="$('#whole').tableExport({type:'pdf', escape:'false'});">Direct PDF</a>
而tableExport.js中的pdf代码是:
else if(defaults.type=='pdf'){
var doc = new jsPDF('p', 'pt', 'a4', false);
doc.setFontSize(defaults.pdfFontSize);
// Header
var startColPosition = defaults.pdfLeftMargin;
$(el).find('thead').find('tr').each(function() {
console.log(12);
$(this).filter(':visible').find('th').each(function(index, data) {
if ($(this).css('display') != 'none') {
if (defaults.ignoreColumn.indexOf(index) == -1) {
console.log(1);
var colPosition = startColPosition + (index * 50);
doc.text(colPosition, 20, parseString($(this)));
}
}
});
});
// Row Vs Column
var startRowPosition = 20;
var page = 1;
var rowPosition = 0;
$(el).find('tbody').find('tr').each(function(index, data) {
rowCalc = index + 1;
//if (rowCalc % 26 == 0) {
//doc.addPage(); disable new page
//page++;
// startRowPosition = startRowPosition + 30;
//}
rowPosition = (startRowPosition + (rowCalc * 10)) - ((page - 1) * 280);
$(this).filter(':visible').find('td').each(function(index, data) {
console.log(index);
console.log(data);
if ($(this).css('display') != 'none') {
if (defaults.ignoreColumn.indexOf(index) == -1) {
//console.log($(this))
//console.log($(this))
var colPosition = startColPosition + (index * 190);
//var colPosition = startColPosition + (index * $(this)[0].clientWidth);
//console.log(colPosition);
doc.setLineWidth(2)
doc.text(colPosition, rowPosition, parseString($(this)));
//console.log(doc)
}
}
});
});
// Output as Data URI
doc.output('datauri');
}
但是问题是pdf格式不正确吗?该怎么办?
如何将我的html表格正确格式化为pdf。
我在html5中使用以下代码将html表生成为pdf:-
<a href="#" onClick ="$('#tableID').tableExport({type:'pdf',pdfFontSize:'7',escape:'false'});">PDF</a>
然后我发现,在pdf生成时,单词会相互塌陷。
然后,更改tableExport.js的库代码对我来说解决了同样的问题。
我为pdf部分修改的表Export.js代码如下所示:-
else if(defaults.type == 'pdf'){
var doc = new jsPDF('p','pt', 'a4', true);
doc.setFontSize(defaults.pdfFontSize);
// Header
var startColPosition=defaults.pdfLeftMargin;
$(el).find('thead').find('tr').each(function() {
$(this).filter(':visible').find('th').each(function(index,data) {
if ($(this).css('display') != 'none'){
if(defaults.ignoreColumn.indexOf(index) == -1){
var colPosition = startColPosition+ (index * 70);
doc.text(colPosition,20, parseString($(this)));
}
}
});
});
// Row Vs Column
var startRowPosition = 20; var page =1;var rowPosition=0;
$(el).find('tbody').find('tr').each(function(index,data) {
rowCalc = index+1;
if (rowCalc % 26 == 0){
doc.addPage();
page++;
startRowPosition=startRowPosition+10;
}
rowPosition=(startRowPosition + (rowCalc * 10)) - ((page -1) * 280);
$(this).filter(':visible').find('td').each(function(index,data) {
if ($(this).css('display') != 'none'){
if(defaults.ignoreColumn.indexOf(index) == -1){
var colPosition = startColPosition+ (index * 70);
doc.text(colPosition,rowPosition, parseString($(this)));
}
}
});
});
// Output as Data URI
doc.output('datauri');
}
在这里,我换了两个位置:-下//标题行---
var colPosition = startColPosition+ (index * 70);
Previously it was 50,based on words length content in table u change.
之后,您需要在另一个位置更改相同的值:行下//列线-
var colPosition = startColPosition+ (index * 70);
这里也从50变为70,
默认情况下,tableEXport.js的代码如下:
else if(defaults.type == 'pdf'){
var doc = new jsPDF('p','pt', 'a4', true);
doc.setFontSize(defaults.pdfFontSize);
// Header
var startColPosition=defaults.pdfLeftMargin;
$(el).find('thead').find('tr').each(function() {
$(this).filter(':visible').find('th').each(function(index,data) {
if ($(this).css('display') != 'none'){
if(defaults.ignoreColumn.indexOf(index) == -1){
var colPosition = startColPosition+ (index * 50);
doc.text(colPosition,20, parseString($(this)));
}
}
});
});
// Row Vs Column
var startRowPosition = 20; var page =1;var rowPosition=0;
$(el).find('tbody').find('tr').each(function(index,data) {
rowCalc = index+1;
if (rowCalc % 26 == 0){
doc.addPage();
page++;
startRowPosition=startRowPosition+10;
}
rowPosition=(startRowPosition + (rowCalc * 10)) - ((page -1) * 280);
$(this).filter(':visible').find('td').each(function(index,data) {
if ($(this).css('display') != 'none'){
if(defaults.ignoreColumn.indexOf(index) == -1){
var colPosition = startColPosition+ (index * 50);
doc.text(colPosition,rowPosition, parseString($(this)));
}
}
});
});
// Output as Data URI
doc.output('datauri');
}
注意:-1)这个值u应该根据每个列单词的单词长度任意更改。2) 但是两者都应该以相同的值来改变。
相关文章:
- 内部分区字体大小获胜'调整浏览器窗口大小时不会随媒体查询而更改
- 如何使用javascript或html下载PDF格式的填写表单
- 用Javascript更改我网站上的字体大小
- 如何将PDF作为二进制文件传递到window.open()
- 不同字体的字母间距不同
- 如何在谷歌字体加载时显示加载图像
- javascript.点击显示嵌入的pdf
- Javascript/Jquery Blob not showing Chrome PDF
- 在提交时打开thankyou.html+下载PDF
- 生成pdf或其他非html文件时的错误处理
- PhoneGap选项卡栏自定义字体,背景图案
- how to convert html <div> to pdf
- 每个选择器的Jquery css颜色都在变化,但字体大小却没有变化
- 如何保护节点webkit应用程序上的字体
- 将画布转换为pdf:黑色背景
- HTML表格导出为具有适当列宽和字体的pdf
- PDF 和.indd文件的字体列表
- PDF.js字体加载错误
- 控制HTML5中显示的PDF字体
- 在jspdf.debug.js中更改默认pdf页面宽度和字体大小的位置