page.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. let pdfDoc = null;
  2. let currentPage = 1;
  3. const scale = 1.5;
  4. const canvas = document.getElementById('pdf-canvas');
  5. const context = canvas.getContext('2d');
  6. async function loadPDF(url) {
  7. const loadingTask = pdfjsLib.getDocument(url);
  8. pdfDoc = await loadingTask.promise;
  9. renderPage(currentPage);
  10. }
  11. async function renderPage(pageNum) {
  12. const page = await pdfDoc.getPage(pageNum);
  13. const viewport = page.getViewport({ scale: scale });
  14. canvas.width = viewport.width;
  15. canvas.height = viewport.height;
  16. const renderContext = {
  17. canvasContext: context,
  18. viewport: viewport,
  19. };
  20. await page.render(renderContext).promise;
  21. // 在这里调用提取文本的函数
  22. extractTextFromPage(page);
  23. }
  24. // 新增提取文本功能的函数
  25. async function extractTextFromPage(page) {
  26. const textContent = await page.getTextContent();
  27. const textItems = textContent.items;
  28. let text = '';
  29. textItems.forEach(item => {
  30. text += item.str + ' ';
  31. });
  32. // 显示提取的文本
  33. console.log(text); // 或您可以将其输出到某个 DOM 元素中
  34. }
  35. // 添加提取文本按钮的事件监听
  36. document.getElementById('extract-text-button').addEventListener('click', async () => {
  37. if (pdfDoc) {
  38. const page = await pdfDoc.getPage(currentPage);
  39. const textContent = await page.getTextContent();
  40. const textItems = textContent.items;
  41. let text = '';
  42. textItems.forEach(item => {
  43. text += item.str + ' ';
  44. });
  45. // 您可以将文本内容显示在页面的某个位置
  46. alert(text); // 这里用 alert 显示,您可以使用其他方法,例如展示在一个 div 元素内
  47. } else {
  48. alert('请先加载 PDF 文件!');
  49. }
  50. });