導航:首頁 > 文檔加密 > divpdf

divpdf

發布時間:2023-07-26 09:56:40

pdf.js實現文字可復制並且選取文字背景不一致,修改選取文字背景

一、安裝和引入pdf.js包。(這里不再做過多的贅述)

二、渲染pdf,同事添加div,進行用來存儲文字,保證文字可以被選取復制。

通過input標簽獲取到數據文件,然後通過getPDF()方法進行渲染。

renderPDF()方法

至此,其實已經實現了pdf文字可復制的要求。但是,由於各個div里的文字寬度和高度的不同,導致選取文字的時候,選取的背景顏色不同統一,需要進行統一背景樣式。

思路:渲染完成pdf以後,監聽頁面的滑鼠按下事件和滑鼠彈起事件。當用戶選取文字完成以後,獲取選取文字的長度和寬度,獲取選取文字距離上邊框和右邊框的值。通過獲取的值來創建div並設置長度寬度以及瞎拍背景顏色,對文字腔信進行遮罩,最後取消用戶選擇的文字。

1、首先確認滑鼠點擊相對文檔的開始位置:

2、確認用戶選取的文字是從哪開始,在哪結束。

3、最後通過applyColours()進行渲染。

applyColours()判斷了很多種情況,當用戶值選擇了一行的情況,當渲染的文字有還行遞歸調用回來的等多種情況。同事判斷是否換行是通過第一個節點與第二個節點的top值絕對值是否大於10,大於10就表示換行。同時,節點後面兩個節點如果就調用另外一個渲染方法。

otherMothodload()方法:

至此,任務完成。

效果入下圖:

未優化前:

優化後:

這種方法雖然實現背景的渲染,但是存在幾個問題:

1、渲染第一行文字的位置是通過滑鼠按下的位置來確定的,但磨圓羨是當用戶滑鼠按下的位置與選取的文字的位置偏差較大,會導致渲染的div與選取的文字位置有偏差。如下圖:

2、選取文字的長度和寬度是通過獲取文字的內容,文字的size,以及文字的字體。再頁面中創建一個span標簽,然後把文字帶進document里,獲取到寬度和高度。這種方法有些文字渲染出來的長度太長。如下圖:

附上獲取長度和寬度的方法:

以上兩個問題,希望有大神給我一點思路和解決方案。歡迎小夥伴跟我一起討論。

附上項目github:https://github.com/caohelen/pdfjs

⑵ js將網頁導出成pdf(js 列印指定div內容)2020-09-02

<input type="button"  id="button" value="點擊列印"/>

<div id="div_print">

<p>列印此處內容</p>

</div>

<script type="text/javascript">

function printdiv(printpage){

  var newstr=document.getElementById(printpage).innerHTML;

  var oldstr=document.body.innerHTML;

  document.body.innerHTML=newstr;

  window.print();

  document.body.innerHTML=oldstr;

  return false;

}

window.onload=function(){

  var bt=document.getElementById("button");

  bt.onclick=function(){printdiv('div_print');}

}

</script>

html, body{

 overflow:visible;  

}

列印時另存為pdf模式列印後的內容可復制 默認為Microsoft Print to PDF 模式

⑶ 如何在網頁中顯示PDF文件

使用js插件
其中實現閱讀pdf文件的js插件很多,比如:pdf.js:是一個技術原型主要用於在 HTML5 平台上展示 PDF 文檔,無需任何本地技術支持;jsPDF:是一個使用Javascript語言生成PDF的開源庫

這個 PDFObject.js,是一個 JavaScript 庫用來在HTML中動態嵌入 PDF 文檔。
js代碼:
<script type="text/javascript">
window.onload = function (){
var success = new PDFObject({ url: "sample.pdf" }).embed();
};
</script>

OK,這樣就可以了。只要把地址寫對即可。
若我在某一個div中載入pdf咋辦呢?看官網,發現embed()方法可以有參數的,無參數是指body,有參數是具體的某一個位置。
<script type="text/javascript">
window.onload = function (){
var success = new PDFObject({ url: "sample.pdf" }).embed(「div的id」);
};
</script>

當然,其中還可以進一步設置參數,比如你想以多少秒的速度預覽,有css,無css等
具體的官網如下:http$://$www.$pdfobject$.com/
請去掉$這個符號

閱讀全文

與divpdf相關的資料

熱點內容
android滑動進度條 瀏覽:833
javagmt轉換 瀏覽:824
linux查看snmp 瀏覽:22
ug80車床編程 瀏覽:514
怎麼加速python計算素數 瀏覽:238
腰椎第五節壓縮性骨折 瀏覽:89
程序員開會的句子 瀏覽:990
用哪個app寫編程 瀏覽:643
android通訊錄增刪改查 瀏覽:727
車貸解壓過戶可以同時進行嗎 瀏覽:917
java面向對象編程題目 瀏覽:876
二次元壓縮包 瀏覽:698
stc模擬器編程器 瀏覽:155
伺服器銷售怎麼做好 瀏覽:87
什麼是com編程 瀏覽:848
演算法工程師最新資訊 瀏覽:608
郵政銀行卡怎麼在app簽約綁定 瀏覽:49
壓縮卷一直轉 瀏覽:978
初一編程小程序怎麼做 瀏覽:828
bt軟體文件夾名稱 瀏覽:159