使用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
        })
     })

  }
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!