Thumbnails.tsx 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import React from 'react';
  2. import ThumbnailsComponent from '../components/ThumbnailViewer';
  3. import useActions from '../actions';
  4. import useStore from '../store';
  5. const Thumbnails: React.FunctionComponent = () => {
  6. const [{
  7. pdf, totalPage, currentPage, navbarState, viewport,
  8. }, dispatch] = useStore();
  9. const { switchNavbar } = useActions(dispatch);
  10. const getPdfImage = async (pageNum: number): Promise<any> => {
  11. let dataUrl = '';
  12. const page = await pdf.getPage(pageNum);
  13. const canvas = document.createElement('canvas');
  14. const context: CanvasRenderingContext2D = canvas.getContext('2d') as CanvasRenderingContext2D;
  15. canvas.height = viewport.height;
  16. canvas.width = viewport.width;
  17. const renderContext = {
  18. canvasContext: context,
  19. viewport,
  20. };
  21. const renderTask = page.render(renderContext);
  22. await renderTask.promise;
  23. dataUrl = canvas.toDataURL();
  24. canvas.remove();
  25. return dataUrl;
  26. };
  27. return (
  28. pdf && (
  29. <ThumbnailsComponent
  30. getPdfImage={getPdfImage}
  31. totalPage={totalPage}
  32. currentPage={currentPage}
  33. isActive={navbarState === 'thumbnails'}
  34. close={(): void => { switchNavbar(''); }}
  35. />
  36. )
  37. );
  38. };
  39. export default Thumbnails;