使用mupdf.js显示pdf页面
难免会用到pdf,但是又记不住pdf的内容,只能想办法搜索pdf目录并显示指定页面了
async function fetch_file(file:string){
//@ts-ignore
let pdf_files_data:any = window.pdf_files_data
if(pdf_files_data && pdf_files_data[file]){
return pdf_files_data[file]
}
let url = file
if(file.startsWith('/home/chong/books')){
url = 'http://192.168.10.231:8080/books/'+file.substr(17)
}
console.log(url)
let resp = await fetch(url);
let buffer = await resp.arrayBuffer()
const u8_array = new Uint8Array(buffer);
if(!pdf_files_data){
//@ts-ignore
window.pdf_files_data = {[file]:u8_array}
}else{
//@ts-ignore
window.pdf_files_data[file] = u8_array
}
return u8_array;
}
async function get_instance(){
//@ts-ignore
let inst = window.pdf_instance
if(inst){
return inst;
}
const instance = await createMuPdf();
//@ts-ignore
window.pdf_instance = instance
return instance
}
async function get_doc(file:string){
//@ts-ignore
let pdf_files_doc:any = window.pdf_files_doc
if(pdf_files_doc && pdf_files_doc[file]){
return pdf_files_doc[file]
}
let instance = await get_instance()
let u8_array = await fetch_file(file)
const doc = instance.load(u8_array);
if(!pdf_files_doc){
//@ts-ignore
window.pdf_files_doc = {[file]:doc}
}else{
//@ts-ignore
window.pdf_files_doc[file] = doc
}
return doc;
}
function fetch_one(file:string,codes:{code:string,title:string}[]){
let html_str = ''
get_doc(file).then(function(doc){
get_instance().then(function(instance){
for(var i in codes){
let info = codes[i]
let code = info.code
let title = info.title
let draw = instance.drawPageAsSVG(doc ,parseInt(code)+1)
html_str = html_str +'<h4>'+title+'</h4>'+ change_width(draw)
}
html.value = html_str
})
})
}