Thumbnails.tsx 1.2 KB

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