2015-12-21 67 views
6

是否可以使用JSPDF保存包含邊框爲PDF的段落<p>,合併格式並將元素保留在頁面中央?將段落保存爲PDF動態?

以下代碼允許在將文本粘貼到textarea時生成段落。正如在Fiddle中所演示的,似乎可以將表格保存爲PDF。


但是,是否可以將以下動態段落和邊界動態保存爲PDF?

如果可以提供更新的小提琴,那將非常感謝,因爲我仍然是編碼新手。

JSFiddle

謝謝!

HTML:

<div align="center"> 
    <h4 align="center"> 
     <u>Paste text in the field below to divide text into paragraphs.</u> 
    </h4> 
    <textarea placeholder="Type text here, then press the button below." cols="50" id="textarea1" rows="10"> 
    </textarea> 
    <br><br> 
    <button id="Go">Divide Text into Paragraphs!</button> 
</div> 
<hr> <h2 align="center">Dynamic Paragraphs will appear below: <br>[Paragraphs below for saving as PDF]</h2> <div> <div align="center" id="text_land" style="font-family: monospace"> </div></div> 

JQuery的:

$(function(){$("#Go").on("click",function(){for(var t=$("textarea").val(),e=300;t.length;){for(;t.length>e&&" "!==t.charAt(e);)e++;$("#text_land").append("<br></br><p>"+t.substring(0,e)+"</p><br></br>"),t=t.substring(e),e=300,$("p").attr("contenteditable","true"),$("p").addClass("text")}})}),$("select").on("change",function(){var t=$("#text_land p"),e=this.dataset.property;t.css(e,this.value)}).prop("selectedIndex",0),end; 

CSS:

@media print{p{page-break-inside:avoid}}p{position:relative}@media print{.no-print,.no-print *{display:none !important}}p{border-style:solid}p{color:#000}p{display:block;text-align:justify;border-width:5px;font-size:19px}p{overflow:hidden;height:300px;width:460px;word-wrap:break-word} 

回答

7

我編輯了自己的代碼。請see your sample here (edited)

我用:

background-color: white; 

的 「text_land」

編輯:

我檢查html2canvas.js它解析HTML元素樹,並提請根據自己的風格。

渲染樹的最頂部html元素「text_land」的寬度被視爲生成圖像的寬度。在頁面縮放之後超出「text_land」div的所有內容都未呈現。

這個想法是有獨立的打印樣式。

+0

然而,調整窗口大小或縮放時,實際的段落元素不是保存爲PDF時指定的大小改變大小。此外,PDF文檔將該段落分割爲兩個單獨的頁面,而不是允許該段落通過頁邊距移動到下一頁。因此,是否有可能解決這些問題? – Dave

+0

@Dave將'pagesplit:true'更改爲'pagesplit:false',因爲沒有分頁符,並且您的'p'的寬度固定不變,窗口的寬度無關緊要。如果你想'p'來跟隨窗口,把'p'的規則改成像'width:80%; min-width:460px;' – LGSon

+0

這樣的百分比。另外,當保存爲PDF時,文本看起來很模糊。這是一個可以解決的問題,因爲它似乎是來自html2canvas的問題。 – Dave

3

我沒有返工的兩個小提琴,並與一些工作來了,請看看這個小提琴

$(document).on('click','#Go',function(){         
var value = $('#textarea1').val(); 


a=value.replace(/\r?\n/g,'<br/>'); 
$('#text_land p').html(a); 
console.log(a); 
}); 

$(document).on('click','#print',function(){ 


var pdf = new jsPDF('p', 'pt', 'letter'); 
pdf.addHTML($('#text_land')[0], function() { 
pdf.save('Test.pdf'); 
}); 

}); 

我用html2canvas庫。

Here's a link to fiddle


UPDATED FIDDLE


updated fiddle where resizing windows does not affect the oucome

+0

但是,生成爲PDF格式的段落框似乎與小提琴相比顯示的大小不同。此外,背景顏色不再像以前的小提琴那樣是白色的。是否有可能要修正這些問題時,保存爲比前擺弄PDF是清晰的,因爲我已經注意到盒子的模糊? – Dave

+0

編輯答案 – Siddharth

+0

調整JSFiddle窗口大小時,段落標記的PDF大小會發生變化,而不是原始大小。有沒有可能解決這些問題? – Dave