免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
使用pdf2htmlEX實(shí)現(xiàn)將pdf轉(zhuǎn)html
首先要感謝pdf2htmlEX的作者Lu Wang,該軟件是一個(gè)pdf轉(zhuǎn)html的開源軟件,效果非常理想。下面兩張圖片是html和pdf視圖下的截圖:
windows下載地址pdf2htmlEX-v1.0-win32-static
本人開發(fā)的一個(gè)功能:文檔在線閱讀,要求能夠支持移動(dòng)終端瀏覽器在線閱讀。考慮過將文檔先轉(zhuǎn)pdf,然后在將pdf轉(zhuǎn)swf,利用flexpaper在前端瀏覽器訪問。但是由于safari瀏覽器不支持flash,所以這種方式不太適合。也測(cè)試過火狐的pdf.js,但是這個(gè)框架在safari中出現(xiàn)中文亂碼,同樣不行。最后,經(jīng)過測(cè)試,只有使用pdf2htmlEX轉(zhuǎn)的html在各個(gè)瀏覽器上展示效果均不錯(cuò),所以選擇該軟件。
第一步:下載pdf2html。
第二步:修改pdf2html自帶的js文件pdf2htmlEX.min.js。原因:移動(dòng)終端瀏覽器對(duì)CSS定位absolute的支持有問題(不會(huì)出現(xiàn)滾動(dòng)條),所以需要為所有頁面的容器設(shè)置高度,這樣,手機(jī)瀏覽器就可以出現(xiàn)滾動(dòng)條了。修改和添加的js代碼如下:
1
2
3
4
5
6
7
8
9
10
文件最后加上:
window.onload=function(){
var eles = document.getElementsByClassName('pf w0 h0');
var height = 0;
for(var i=0,len=eles.length;i<len;i++){
height +=eles[i].scrollHeight+20;
}
if(height>0)
document.getElementById('page-container').style.height=height+'px';
}
1
2
3
4
5
6
7
8
9
10
/*注釋下面這段代碼,因?yàn)槭謾C(jī)瀏覽器無法觸發(fā)滾動(dòng)事件
this.container.addEventListener('scroll', function() {
self.update_page_idx();
self.schedule_render(true);
}, false);
*/
/*新增,使用document對(duì)象上滾動(dòng)加載頁面數(shù)據(jù),這樣可以兼容手機(jī)瀏覽器*/    document.addEventListener('scroll', function() {
self.update_page_idx();
self.schedule_render(true);
}, false);
第三步:編寫java處理類
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
public class Pdf2htmlEXUtil {
/**
* 調(diào)用pdf2htmlEX將pdf文件轉(zhuǎn)換為html文件
* @param command 調(diào)用exe的字符串
* @param pdfName 需要轉(zhuǎn)換的pdf文件名稱
* @param htmlName 生成的html文件名稱
* @return
*/
public static boolean pdf2html(String command,String pdfName,String htmlName){
Runtime rt = Runtime.getRuntime();
try {
Process p = rt.exec(command);
StreamGobbler errorGobbler = new StreamGobbler(p.getErrorStream(), "ERROR");
// kick off stderr
errorGobbler.start();
StreamGobbler outGobbler = new StreamGobbler(p.getInputStream(), "STDOUT");
// kick off stdout
outGobbler.start();
int w = p.waitFor();
System.out.println(w);
int v = p.exitValue();
System.out.println(v);
return true;
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
public static void main(String[] args) {
pdf2html("D:\\pdf2htmlEX-v1.0\\pdf2htmlEX.exe D:\\v.pdf hello.html","v.pdf","v2.html");
}
}
處理Runtime.exec()一直阻塞的類:如果沒有這個(gè)類,p.waitFor()將會(huì)一直等待,這是從這里找到的解決方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
/**
* 用于處理Runtime.getRuntime().exec產(chǎn)生的錯(cuò)誤流及輸出流
* @author shaojing
*
*/
public class StreamGobbler extends Thread {
InputStream is;
String type;
OutputStream os;
StreamGobbler(InputStream is, String type) {
this(is, type, null);
}
StreamGobbler(InputStream is, String type, OutputStream redirect) {
this.is = is;
this.type = type;
this.os = redirect;
}
public void run() {
InputStreamReader isr = null;
BufferedReader br = null;
PrintWriter pw = null;
try {
if (os != null)
pw = new PrintWriter(os);
isr = new InputStreamReader(is);
br = new BufferedReader(isr);
String line=null;
while ( (line = br.readLine()) != null) {
if (pw != null)
pw.println(line);
System.out.println(type + ">" + line);
}
if (pw != null)
pw.flush();
} catch (IOException ioe) {
ioe.printStackTrace();
} finally{
try {
if(pw!=null)
pw.close();
if(br!=null)
br.close();
if(isr!=null)
isr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
一個(gè)完整的高保真pdf轉(zhuǎn)html例子就完成了。使用pdf2html,本人摸索了2天,終于在今天搞定,特此記錄一下。pdf2html命令用法:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
用法: pdf2htmlEX [options] <input.pdf> [<output.html>]
-f,--first-page <int>         需要轉(zhuǎn)換的起始頁 (默認(rèn): 1)
-l,--last-page <int>          需要轉(zhuǎn)換的最后一頁 (默認(rèn): 2147483647)
--zoom <fp>                   縮放比例
--fit-width <fp>              適合寬度 <fp> 像素
--fit-height <fp>             適合高度 <fp> 像素
--use-cropbox <int>           使用剪切框 (default: 1)
--hdpi <fp>                   圖像水平分辨率 (default: 144)
--vdpi <fp>                   圖像垂直分辨率 (default: 144)
--embed <string>              指定哪些元素應(yīng)該被嵌入到輸出
--embed-css <int>             將CSS文件嵌入到輸出中 (default: 1)
--embed-font <int>            將字體文件嵌入到輸出中 (default: 1)
--embed-image <int>           將圖片文件嵌入到輸出中 (default: 1)
--embed-javascript <int>      將javascript文件嵌入到輸出中 (default: 1)
--embed-outline <int>         將鏈接嵌入到輸出中 (default: 1)
--split-pages <int>           將頁面分割為單獨(dú)的文件 (default: 0)
--dest-dir <string>           指定目標(biāo)目錄 (default: ".")
--css-filename <string>       生成的css文件的文件名 (default: "")
--page-filename <string>      分割的網(wǎng)頁名稱  (default:"")
--outline-filename <string>   生成的鏈接文件名稱 (default:"")
--process-nontext <int>       渲染圖行,文字除外 (default: 1)
--process-outline <int>       在html中顯示鏈接 (default: 1)
--printing <int>              支持打印 (default: 1)
--fallback <int>              在備用模式下輸出 (default: 0)
--embed-external-font <int>   嵌入局部匹配的外部字體 (default: 1)
--font-format <string>        嵌入的字體文件后綴 (ttf,otf,woff,svg) (default: "woff")
--decompose-ligature <int>    分解連字-> fi (default:0)
--auto-hint <int>             使用fontforge的autohint上的字體時(shí)不提示 (default: 0)
--external-hint-tool <string> 字體外部提示工具 (overrides --auto-hint) (default: "")
--stretch-narrow-glyph <int>  伸展狹窄的字形,而不是填充 (default: 0)
--squeeze-wide-glyph <int>    收縮較寬的字形,而不是截?cái)?(default: 1)
--override-fstype <int>       clear the fstype bits in TTF/OTF fonts (default:0)
--process-type3 <int>         convert Type 3 fonts for web (experimental) (default: 0)
--heps <fp>                   合并文本的水平臨界值,單位:像素(default: 1)
--veps <fp>                   vertical threshold for merging text, in pixels (default: 1)
--space-threshold <fp>        斷字臨界值 (臨界值 * em) (default:0.125)
--font-size-multiplier <fp>   一個(gè)大于1的值增加渲染精度 (default: 4)
--space-as-offset <int>       把空格字符作為偏移量 (default: 0)
--tounicode <int>             如何處理ToUnicode的CMap (0=auto, 1=force,-1=ignore) (default: 0)
--optimize-text <int>         盡量減少用于文本的HTML元素的數(shù)目 (default: 0)
--bg-format <string>          指定背景圖像格式 (default: "png")
-o,--owner-password <string>  所有者密碼 (為了加密文件)
-u,--user-password <string>   用戶密碼 (為了加密文件)
--no-drm <int>                覆蓋文檔的 DRM 設(shè)置 (default: 0)
--clean-tmp <int>             轉(zhuǎn)換后刪除臨時(shí)文件 (default: 1)
--data-dir <string>           指定的數(shù)據(jù)目錄 (default: ".\share\pdf2htmlEX")
--debug <int>                 打印調(diào)試信息 (default: 0)
-v,--version                  打印版權(quán)和版本信息
-h,--help                     打印使用幫助信息
本人使用的版本時(shí)v0.11的和v1的版本有一些區(qū)別,主要是作者重新編寫了pdftohtmlEX.js所以需要對(duì)照上面的js做相應(yīng)修改
1
2
3
4
5
6
7
8
9
10
11
window.onload=function(){
var eles = document.getElementsByClassName('pd w0 h0');
var height = 0;
for(var i=0,len=eles.length;i<len;i++){
height +=eles[i].scrollHeight+20;
}
if(height>0){
document.getElementById('page-container').style.height=height+'px';
document.getElementById('page-container').style.overflow='hidden';
}
}
1
2
//this.$container.scroll(function(){ _.schedule_render(); });
$(document).scroll(function(){_.schedule_render();});
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
pdf2htmlEX:效果相當(dāng)好的一個(gè)PDF轉(zhuǎn)HTML程序,和原始PDF幾乎一模一樣。
數(shù)據(jù)挖掘 FP-tree算法C 實(shí)現(xiàn)及源碼
GetBuffer與ReleaseBuffer的用法
進(jìn)程間通信--管道
Python使用Tabula提取PDF表格數(shù)據(jù)
ASP.NET生成HTML靜態(tài)頁的一個(gè)類
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服