从文本区域创建PDF



我正在尝试导出文本区域的值

let text = document.getElementById("textarea").value

作为PDF。我正在使用jsPDF。我的第一次尝试是:

function createPDF(){
let text = document.getElementById("textarea").value;
var doc = new jsPDF();
doc.text(20, 20, text);
doc.save('document.pdf');
}

然而,即使用这种方法创建pdf,pdf也不是用";滚动条视图";,它基本上只打印1行。

我的第二次尝试是:

function createPdf() {
let text = document.getElementById("textarea").value;
// let titolo = document.getElementById("input-fileName").value;
var doc = new jsPDF();
var splitText = doc.splitTextToSize(text, 250);
var pageHight = doc.internal.pageSize.hight;
doc.setFontSize(11);
var y = 20;
for(var i = 0; i < splitText.length; i++){
if (y > 275){
y = 20;
doc.addPage();
}
doc.text(20, y, splitText[i]);
y = y + 5
}
doc.save(title + '.pdf');
}

然而,使用这种方法,甚至不会创建pdf:(

所以我试着使用html2pdf如下:

function createPdf(){
var element = document.getElementById('textarea');
element.style.width = '800px';
element.style.height = '1000px';
html2PDF().from(element).toPdf().save('ilmiopdf.pdf');
}

这种方法也不会产生pdf。有人有什么建议吗?

我设法找到了一种方法:

//download pdf //
function creaPdf() {
// Long text
var titolo = document.querySelector('#input-fileName').value;
var text = document.querySelector('#textarea').value;
var repeat = parseInt(document.querySelector('#repeat').value) || 0;
for (var i=0; i<repeat; i++) 
text += text;

// Create doc
var ori = document.querySelector('#ori').checked ? "portrait":"landscape";
var doc = new jsPDF(ori, 'mm', 'a4');
doc.setFontSize(parseInt(document.querySelector('#fontsize').value) || 20)

// Page size
var pageSize = { h: doc.internal.pageSize.height, w: doc.internal.pageSize.width };
var margin = {top:20,left:15,bottom:15,right:15};
var lineHeight = doc.getTextDimensions("M").h / 2.54;// in to mm
console.log("SIZE: ", pageSize, lineHeight);

// Pages handler
var linePos=0, nbPage=0;
function addPage(doc) {
if (nbPage) doc.addPage();
else nbPage = 0;
nbPage++;
linePos = margin.top;
// Header
// var title = document.querySelector('#input-fileName').value;
// var twidth = doc.getTextDimensions(title).w / 2.54;
// doc.text(pageSize.w/2 -twidth/2, margin.top, title);
// doc.rect(margin.left, margin.top -lineHeight, 
//          pageSize.w -margin.left - margin.right, 
//          1.5*lineHeight)
// Footer
var title = document.querySelector('#input-fileName').value;
var numPage = 'page '+nbPage;
var nwidth = doc.getTextDimensions(numPage).w / 2.54;
doc.text(pageSize.w -margin.right -nwidth, 
pageSize.h -margin.bottom -lineHeight, 
numPage);
doc.line(margin.left, pageSize.h -margin.bottom -2*lineHeight, 
pageSize.w - margin.right, 
pageSize.h -margin.bottom -2*lineHeight)
//
linePos = margin.top + 2*lineHeight;
return nbPage;
}
function addLine(doc, text) {
doc.text(margin.left, linePos, text);
linePos += lineHeight;  
if (linePos > pageSize.h-2*margin.bottom) {
addPage(doc);
}
}

// Split text to page width
text = doc.splitTextToSize(text,pageSize.w-margin.left-margin.right);

addPage(doc);
for (var i=0; i<text.length; i++){  
addLine(doc, text[i]);
}
doc.save(titolo + '.pdf')
}

相关内容

  • 没有找到相关文章

最新更新