pdftiff.html 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>PDF & TIFF</title>
  6. </head>
  7. <body>
  8. <script type="text/javascript" src="../build/escher.js"></script>
  9. <script type="text/javascript" src="./lib/pdf.js"></script>
  10. <script type="text/javascript" src="./lib/tiff.min.js"></script>
  11. <script type="text/javascript">
  12. // Division
  13. var division = document.createElement("div");
  14. division.style.position = "absolute";
  15. division.style.width = "100%";
  16. division.style.height = "100%";
  17. division.style.top = "0px";
  18. division.style.left = "0px";
  19. division.style.overflow = "hidden";
  20. document.body.appendChild(division);
  21. // Canvas
  22. var canvas = document.createElement("canvas");
  23. canvas.style.position = "absolute";
  24. canvas.style.width = "100%";
  25. canvas.style.height = "100%";
  26. canvas.style.top = "0px";
  27. canvas.style.left = "0px";
  28. canvas.width = window.innerWidth;
  29. canvas.height = window.innerHeight;
  30. division.appendChild(canvas);
  31. // Prevent context menu events
  32. document.body.oncontextmenu = function(event)
  33. {
  34. event.preventDefault();
  35. return false;
  36. };
  37. // Resize canvas on window resize
  38. window.onresize = function()
  39. {
  40. canvas.width = window.innerWidth;
  41. canvas.height = window.innerHeight;
  42. };
  43. var group = new Escher.Object2D();
  44. //Draw TIFF image example
  45. var xhr = new XMLHttpRequest();
  46. xhr.responseType = "arraybuffer";
  47. xhr.open("GET", "images/kofax.tif");
  48. xhr.onload = function (e)
  49. {
  50. var tiff = new Tiff({buffer: xhr.response});
  51. var width = tiff.width();
  52. var height = tiff.height();
  53. var tiffCanvas = tiff.toCanvas();
  54. if(tiffCanvas)
  55. {
  56. var tiffObject = new Escher.Object2D();
  57. tiffObject.layer = -1;
  58. tiffObject.draw = function(context, viewport, canvas)
  59. {
  60. context.drawImage(tiffCanvas, 0, 0);
  61. };
  62. group.add(tiffObject);
  63. }
  64. };
  65. xhr.send();
  66. //Draw PDF example
  67. var task = pdfjsLib.getDocument("./images/vrml.pdf");
  68. task.promise.then(function(pdf)
  69. {
  70. var numPages = pdf._pdfInfo.numPages;
  71. //console.log(pdf);
  72. if(numPages > 0)
  73. {
  74. var positionY = 0;
  75. for(var p = 1; p <= numPages; p++)
  76. {
  77. pdf.getPage(p).then(function(page)
  78. {
  79. //console.log(page);
  80. var scale = 5.0;
  81. var pdfViewport = page.getViewport(scale);
  82. //console.log(pdfViewport);
  83. var offCanvas = document.createElement("canvas");
  84. offCanvas.width = pdfViewport.width;
  85. offCanvas.height = pdfViewport.height;
  86. var offContext = offCanvas.getContext("2d");
  87. page.render(
  88. {
  89. canvasContext: offContext,
  90. viewport: pdfViewport,
  91. intent: "display",
  92. renderInteractiveForms: false,
  93. enableWebGL: false,
  94. background: "rgba(255,255,255,0)"
  95. }).promise.then(function()
  96. {
  97. var pdfObject = new Escher.Box();
  98. pdfObject.box.min.set(pdfViewport.offsetX, pdfViewport.offsetY);
  99. pdfObject.box.max.set(pdfViewport.width + pdfViewport.offsetX, pdfViewport.height + pdfViewport.offsetY);
  100. pdfObject.draggable = true;
  101. pdfObject.scale.set(1 / scale, 1 / scale);
  102. pdfObject.position.y = positionY;
  103. pdfObject.draw = function(context, viewport, canvas)
  104. {
  105. context.drawImage(offCanvas, 0, 0, pdfViewport.width, pdfViewport.height, this.box.min.x, this.box.min.y, this.box.max.x - this.box.min.x, this.box.max.y - this.box.min.y);
  106. };
  107. group.add(pdfObject);
  108. Escher.Helpers.boxResizeTool(pdfObject);
  109. // Move bellow other pages
  110. positionY += pdfViewport.height / scale;
  111. });
  112. });
  113. }
  114. }
  115. });
  116. // Viewport
  117. var viewport = new Escher.Viewport(canvas);
  118. // Renderer
  119. var renderer = new Escher.Renderer(canvas);
  120. renderer.createRenderLoop(group, viewport);
  121. </script>
  122. </body>
  123. </html>