如何使用Javascript在pdf上打印表格?

如何使用Javascript在pdf上打印表格?,javascript,pdf,html-table,jspdf,Javascript,Pdf,Html Table,Jspdf,使用JavaScript以PDF格式打印表格的最佳方法是什么 例如,我有下一个代码,如果单击“ShowPDF”,表格将以PDF格式显示在新窗口中。 可以用jsPDF库实现这一点吗 <body> <table> <tr> <th>example</th> <th>example2</th> </tr>

使用JavaScript以PDF格式打印表格的最佳方法是什么

例如,我有下一个代码,如果单击“ShowPDF”,表格将以PDF格式显示在新窗口中。 可以用jsPDF库实现这一点吗

<body>
    <table>
        <tr>
            <th>example</th>
            <th>example2</th>
        </tr>
        <tr>
            <td>value1</td>
            <td>value2</td>
        </tr>
    </table>
    <br>
    <input type="button" value="Show PDF">
</body>

例子
例2
价值1
价值2


您应该使用DOMPDF,:
DOMPDF是一个HTML到PDF的转换器。dompdf的核心是(主要是)兼容CSS 2.1的HTML布局和呈现引擎,用PHP编写。它是一个样式驱动的渲染器:它将下载和读取外部样式表、内联样式标记以及单个HTML元素的样式属性。它还支持大多数表示性HTML属性

下载PDF


您应该使用DOMPDF,:
DOMPDF是一个HTML到PDF的转换器。dompdf的核心是(主要是)兼容CSS 2.1的HTML布局和呈现引擎,用PHP编写。它是一个样式驱动的渲染器:它将下载和读取外部样式表、内联样式标记以及单个HTML元素的样式属性。它还支持大多数表示性HTML属性

下载PDF


Bytescout推出了新的javascript产品“PDF Generator SDK for javascript”,它能够在客户端100%生成PDF文件,您可能会生成包含文本、图像和图形的PDF。不支持完整的HTML格式,但您可以在文本中使用HTML标记来使用丰富的格式(新版本将包括对文本中的HTML和HTML标记的支持)


已生成徽标和表格的发票演示:

Bytescout有新的javascript产品“PDF Generator SDK for javascript”,它能够在客户端100%生成PDF文件,您可能会生成包含文本、图像和图形的PDF。不支持完整的HTML格式,但您可以在文本中使用HTML标记来使用丰富的格式(新版本将包括对文本中的HTML和HTML标记的支持)


生成带有徽标和表格的发票演示:

我也遇到了同样的问题,这就是我解决问题的方法

//inputs starts here

var T_X =20 //Starting X of Table
var T_Y =25 //Starting Y of Table
var T_W =170 //Width of Table
var T_H =10 //Height of each cell
var Px  =7 // Scale of width in each columns
var Fs  =17 //Font size
var Tp  =7 //Y of all cells text, must change with `Fs`

var c = new Array() //Input Each Row by Adding new c[i]
c[0] = new Array("1","2","3","4","5","6","7");
c[1] = new Array("a","b","c","d","e","f","g");
c[2] = new Array("A","B","C","D","E","F","G");
//c[3] = new Array("Alpha","Beta","Gamma","Delta","Epsilon","Zeta","Eta");

//inputs ends here
//From This Part to bottom, there is no more inputs, no need to read them.

//i found this function here "http://stackoverflow.com/questions/118241/calculate-text-width-with-javascript"
String.prototype.width = function() {
  var f = Px+'px arial',
      o = $('<div>' + this + '</div>')
            .css({'position': 'absolute', 'float': 'left', 'white-space': 'nowrap', 'visibility': 'hidden', 'font': f})
            .appendTo($('body')),
      w = o.width();

  o.remove();

  return w;
}


var doc = new jsPDF();
doc.text(85, 15, "Table example");

doc.setDrawColor(50,215,50);
doc.setLineWidth(0.5);

var i
var rows = c[0].length
var cols = c.length
var max = new Array()

for(i=0;i<cols;i++)
    max[i]=0

doc.setFontSize(Fs);

for(i=0;i<rows;i+=1)
{
    doc.line(T_X, T_Y+T_H*i,T_W + T_X, T_Y+T_H*i);

    for(var j=0;j<cols;j+=1)
        if(c[j][i].width()>max[j])
            max[j]=c[j][i].width(); 

}
    doc.line(T_X, T_Y+T_H*rows,T_W + T_X, T_Y+T_H*i);

var m = 0
for(i=0;i<cols;i+=1)
{
    for(var j=0;j<rows;j+=1)
        doc.text(T_X + 0.5 + m, Tp+T_Y+T_H*j,c[i][j]);
    doc.line(T_X + m, T_Y ,T_X + m, T_Y + rows * T_H);

    m += max[i];   
}
doc.line(T_X + T_W, T_Y ,T_X + T_W, T_Y + rows * T_H);
//输入从这里开始
var T_X=20//表的起始X
var T_Y=25//表的起始Y
var T_W=170//表格宽度
var T_H=10//每个单元的高度
var Px=7//每列的宽度比例
var Fs=17//字体大小
var Tp=7//Y的所有单元格文本,必须用'Fs'更改`
var c=new Array()//通过添加新的c[i]来输入每一行
c[0]=新数组(“1”、“2”、“3”、“4”、“5”、“6”、“7”);
c[1]=新数组(“a”、“b”、“c”、“d”、“e”、“f”、“g”);
c[2]=新数组(“A”、“B”、“c”、“D”、“E”、“F”、“G”);
//c[3]=新阵列(“α”、“β”、“γ”、“δ”、“ε”、“Zeta”、“Eta”);
//输入到此结束
//从这个部分到底部,没有更多的输入,不需要读取它们。
//我在这里找到了这个函数“http://stackoverflow.com/questions/118241/calculate-text-width-with-javascript"
String.prototype.width=函数(){
var f=Px+'Px arial',
o=$(''+此+'')
.css({'position':'absolute','float':'left','white space':'nowrap','visibility':'hidden','font':f})
.appendTo($(“body”),
w=o.宽度();
o、 删除();
返回w;
}
var doc=new jsPDF();
文件文本(85、15,“表格示例”);
setDrawColor文件(50215,50);
文件设置线宽(0.5);
变量i
var rows=c[0]。长度
var cols=c.长度
var max=新数组()

对于(i=0;i我有同样的问题,这是我解决它的方法

//inputs starts here

var T_X =20 //Starting X of Table
var T_Y =25 //Starting Y of Table
var T_W =170 //Width of Table
var T_H =10 //Height of each cell
var Px  =7 // Scale of width in each columns
var Fs  =17 //Font size
var Tp  =7 //Y of all cells text, must change with `Fs`

var c = new Array() //Input Each Row by Adding new c[i]
c[0] = new Array("1","2","3","4","5","6","7");
c[1] = new Array("a","b","c","d","e","f","g");
c[2] = new Array("A","B","C","D","E","F","G");
//c[3] = new Array("Alpha","Beta","Gamma","Delta","Epsilon","Zeta","Eta");

//inputs ends here
//From This Part to bottom, there is no more inputs, no need to read them.

//i found this function here "http://stackoverflow.com/questions/118241/calculate-text-width-with-javascript"
String.prototype.width = function() {
  var f = Px+'px arial',
      o = $('<div>' + this + '</div>')
            .css({'position': 'absolute', 'float': 'left', 'white-space': 'nowrap', 'visibility': 'hidden', 'font': f})
            .appendTo($('body')),
      w = o.width();

  o.remove();

  return w;
}


var doc = new jsPDF();
doc.text(85, 15, "Table example");

doc.setDrawColor(50,215,50);
doc.setLineWidth(0.5);

var i
var rows = c[0].length
var cols = c.length
var max = new Array()

for(i=0;i<cols;i++)
    max[i]=0

doc.setFontSize(Fs);

for(i=0;i<rows;i+=1)
{
    doc.line(T_X, T_Y+T_H*i,T_W + T_X, T_Y+T_H*i);

    for(var j=0;j<cols;j+=1)
        if(c[j][i].width()>max[j])
            max[j]=c[j][i].width(); 

}
    doc.line(T_X, T_Y+T_H*rows,T_W + T_X, T_Y+T_H*i);

var m = 0
for(i=0;i<cols;i+=1)
{
    for(var j=0;j<rows;j+=1)
        doc.text(T_X + 0.5 + m, Tp+T_Y+T_H*j,c[i][j]);
    doc.line(T_X + m, T_Y ,T_X + m, T_Y + rows * T_H);

    m += max[i];   
}
doc.line(T_X + T_W, T_Y ,T_X + T_W, T_Y + rows * T_H);
//输入从这里开始
var T_X=20//表的起始X
var T_Y=25//表的起始Y
var T_W=170//表格宽度
var T_H=10//每个单元的高度
var Px=7//每列的宽度比例
var Fs=17//字体大小
var Tp=7//Y的所有单元格文本,必须用'Fs'更改`
var c=new Array()//通过添加新的c[i]来输入每一行
c[0]=新数组(“1”、“2”、“3”、“4”、“5”、“6”、“7”);
c[1]=新数组(“a”、“b”、“c”、“d”、“e”、“f”、“g”);
c[2]=新数组(“A”、“B”、“c”、“D”、“E”、“F”、“G”);
//c[3]=新阵列(“α”、“β”、“γ”、“δ”、“ε”、“Zeta”、“Eta”);
//输入到此结束
//从这个部分到底部,没有更多的输入,不需要读取它们。
//我在这里找到了这个函数“http://stackoverflow.com/questions/118241/calculate-text-width-with-javascript"
String.prototype.width=函数(){
var f=Px+'Px arial',
o=$(''+此+'')
.css({'position':'absolute','float':'left','white space':'nowrap','visibility':'hidden','font':f})
.appendTo($(“body”),
w=o.宽度();
o、 删除();
返回w;
}
var doc=new jsPDF();
文件文本(85、15,“表格示例”);
setDrawColor文件(50215,50);
文件设置线宽(0.5);
变量i
var rows=c[0]。长度
var cols=c.长度
var max=新数组()
对于(i=0;i尝试TCPDF
TCPDF是一个PHP类,用于在不需要外部扩展的情况下动态生成PDF文件。该库还包括一个用于从现有PDF文档中提取数据的类,以及一个用于生成各种格式的一维和二维条形码的类。

Twitch TCPDF

TCPDF是一个PHP类,用于在不需要外部扩展的情况下动态生成PDF文件。该库还包括一个用于从现有PDF文档中提取数据的类,以及用于生成各种格式的一维和二维条形码的类。

jsPDF的AutoTable插件自动化了制作表格或列表所需的大量任务。唯一的您的示例需要先将表转换为json,然后将其传递给
autoTable()
方法。有关更高级的示例,请查看或

function generatePdf() {
    var doc = new jsPDF('p', 'pt');
    var json = doc.autoTableHtmlToJson(document.getElementById("table"));
    doc.autoTable(false, json);
    doc.save('table.pdf');
}
函数generatePdf(){
var doc=新的jsPDF('p','pt');
var json=doc.autoTableHtmlToJson(document.getElementById(“表”));
文档自动表(false,json);
doc.save('table.pdf');
}

例子
例2
价值1
价值2


jsPDF的AutoTable插件自动化了制作表格或列表所需的许多任务。您的示例只需要firs