scalaJs對pdfJS的封裝

封裝代碼安疗,如下:

import scala.scalajs.js
import scala.scalajs.js.annotation._
package object pdfJS {

import org.scalajs.dom.CanvasRenderingContext2D

@JSGlobal("PDFJS")
@js.native
object PDFJS extends js.Object {
var workerSrc: String = js.native

def getDocument(url: String): PDFDocumentLoadingTask = js.native
}

@js.native
class PageViewport extends js.Object {
  val height: Double= js.native

  val width: Double = js.native
}


@js.native
class PDFPageProxy extends js.Object {
  def getViewport(scale: Double): PageViewport = js.native

  def render(params: js.Object): js.Promise[RenderTask] = js.native
}

@ScalaJSDefined
trait RenderContext extends js.Object {
  val canvasContext: CanvasRenderingContext2D
  val viewport: PageViewport
}


 @js.native
class RenderTask extends js.Object {

}

@js.native
class PDFDocumentProxy extends js.Object {
  def getPage(pageNumber: Int ): js.Promise[PDFPageProxy] = js.native

  val numPages: Int = js.native
}

@js.native
class PDFDocumentLoadingTask extends js.Object {
  def promise: js.Promise[PDFDocumentProxy] = js.native
  def onProgress:js.Object=js.native
}
}

這只是封裝了一部分代碼澳厢,還有好多東西由于沒有用到就沒有封裝進(jìn)去驼抹。目前PDFDocumentLoadingTask 中的onProgress的值一直為null 還沒有理解毙驯,別的都可以正常使用柱锹。
下面是使用的代碼:

object DrawPDF {

def draw(area: HTMLElement, url: String) = {

//1.8.618
PDFJS.workerSrc = "/zhishiku/static/js/pdf.worker.min.js"
val loadingTask = PDFJS.getDocument(url)

println(JSON.stringify(loadingTask))

println(loadingTask.onProgress)

loadingTask.promise.toFuture.map {
  rsp =>

    area.textContent = ""
    println(url + "PDF loaded")

    for (i <- 1 to rsp.numPages) {

      rsp.getPage(i).toFuture.onComplete {
        case Success(rsp1) =>
          println("Page loaded")


          val viewportDiv = rsp1.getViewport(1.5)

          val pdfArea = canvas("Your browser does not support the canvas element.").render

          area.appendChild(pdfArea)
          val context = pdfArea.getContext("2d").asInstanceOf[CanvasRenderingContext2D]


          pdfArea.height = viewportDiv.height.toInt+1
          pdfArea.width = viewportDiv.width.toInt+1

          val renderContext = new RenderContext {
            override val canvasContext = context
            override val viewport = viewportDiv
          }

          println(renderContext)
          println("2")

          val renderTask =
            try {
              rsp1.render(renderContext)
            }
            catch {
              case error: Exception =>
                error.printStackTrace()
                throw error
            }
          renderTask.toFuture.onComplete {
            case Success(rsp2) =>
              println("Page rendered")
            case Failure(error) =>
              println("rsp.render" + error)
          }
        case Failure(error) =>
          println("rsp.getPage()" + error)
        }
      }
    }
  }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末哪自,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子禁熏,更是在濱河造成了極大的恐慌壤巷,老刑警劉巖,帶你破解...
    沈念sama閱讀 223,126評論 6 520
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瞧毙,死亡現(xiàn)場離奇詭異胧华,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)宙彪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,421評論 3 400
  • 文/潘曉璐 我一進(jìn)店門矩动,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人释漆,你說我怎么就攤上這事悲没。” “怎么了男图?”我有些...
    開封第一講書人閱讀 169,941評論 0 366
  • 文/不壞的土叔 我叫張陵示姿,是天一觀的道長甜橱。 經(jīng)常有香客問我,道長栈戳,這世上最難降的妖魔是什么岂傲? 我笑而不...
    開封第一講書人閱讀 60,294評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮子檀,結(jié)果婚禮上镊掖,老公的妹妹穿的比我還像新娘。我一直安慰自己命锄,他們只是感情好堰乔,可當(dāng)我...
    茶點故事閱讀 69,295評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著脐恩,像睡著了一般镐侯。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上驶冒,一...
    開封第一講書人閱讀 52,874評論 1 314
  • 那天苟翻,我揣著相機(jī)與錄音,去河邊找鬼骗污。 笑死崇猫,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的需忿。 我是一名探鬼主播诅炉,決...
    沈念sama閱讀 41,285評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼屋厘!你這毒婦竟也來了涕烧?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,249評論 0 277
  • 序言:老撾萬榮一對情侶失蹤汗洒,失蹤者是張志新(化名)和其女友劉穎议纯,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體溢谤,經(jīng)...
    沈念sama閱讀 46,760評論 1 321
  • 正文 獨居荒郊野嶺守林人離奇死亡瞻凤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,840評論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了世杀。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片阀参。...
    茶點故事閱讀 40,973評論 1 354
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖瞻坝,靈堂內(nèi)的尸體忽然破棺而出蛛壳,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 36,631評論 5 351
  • 正文 年R本政府宣布炕吸,位于F島的核電站,受9級特大地震影響勉痴,放射性物質(zhì)發(fā)生泄漏赫模。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,315評論 3 336
  • 文/蒙蒙 一蒸矛、第九天 我趴在偏房一處隱蔽的房頂上張望瀑罗。 院中可真熱鬧,春花似錦雏掠、人聲如沸斩祭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,797評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽摧玫。三九已至,卻和暖如春绑青,著一層夾襖步出監(jiān)牢的瞬間诬像,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,926評論 1 275
  • 我被黑心中介騙來泰國打工闸婴, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留坏挠,地道東北人。 一個月前我還...
    沈念sama閱讀 49,431評論 3 379
  • 正文 我出身青樓邪乍,卻偏偏與公主長得像降狠,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子庇楞,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,982評論 2 361

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,351評論 25 707
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法榜配,類相關(guān)的語法,內(nèi)部類的語法姐刁,繼承相關(guān)的語法芥牌,異常的語法,線程的語...
    子非魚_t_閱讀 31,669評論 18 399
  • 一 如果不是有人推薦聂使,我永遠(yuǎn)不會去看這本《奇門遁甲》壁拉,甚至不會知道這個作家。周德東的書柏靶,不用說看了弃理,聽都沒聽說過。...
    丁若柯閱讀 1,718評論 2 1
  • 君立河西牧屎蜓, 妾坐河?xùn)|織痘昌。 君常托鵲兒, 問我何不思? 非我不相思辆苔, 徹夜難入眠算灸。 只為早相見, 披星弄機(jī)梭驻啤。
    帝都奇妙物語閱讀 673評論 0 2
  • 母親是一位被歲月搪塞了大半輩子的女人菲驴,這些年活得艱難,過得樸素骑冗,沒什么事業(yè)赊瞬,若非要說有,那大概就是養(yǎng)育了我兄弟倆贼涩。...
    一顆浮萍閱讀 1,892評論 18 57