回答編集履歴
2
コード修正
    
        answer	
    CHANGED
    
    | 
         @@ -28,7 +28,7 @@ 
     | 
|
| 
       28 
28 
     | 
    
         
             
            ```javascript
         
     | 
| 
       29 
29 
     | 
    
         
             
            'use strict';
         
     | 
| 
       30 
30 
     | 
    
         
             
            const pdfInput = document.getElementById('pdfInput');
         
     | 
| 
       31 
     | 
    
         
            -
            const dpiInput = document.getElementById('dpiInput') 
     | 
| 
      
 31 
     | 
    
         
            +
            const dpiInput = document.getElementById('dpiInput');
         
     | 
| 
       32 
32 
     | 
    
         
             
            async function convertToJpeg () {
         
     | 
| 
       33 
33 
     | 
    
         
             
              // FileReaderオブジェクト生成
         
     | 
| 
       34 
34 
     | 
    
         
             
              const reader = new FileReader();
         
     | 
1
コメント整備
    
        answer	
    CHANGED
    
    | 
         @@ -28,20 +28,24 @@ 
     | 
|
| 
       28 
28 
     | 
    
         
             
            ```javascript
         
     | 
| 
       29 
29 
     | 
    
         
             
            'use strict';
         
     | 
| 
       30 
30 
     | 
    
         
             
            const pdfInput = document.getElementById('pdfInput');
         
     | 
| 
      
 31 
     | 
    
         
            +
            const dpiInput = document.getElementById('dpiInput'):
         
     | 
| 
       31 
32 
     | 
    
         
             
            async function convertToJpeg () {
         
     | 
| 
      
 33 
     | 
    
         
            +
              // FileReaderオブジェクト生成
         
     | 
| 
       32 
34 
     | 
    
         
             
              const reader = new FileReader();
         
     | 
| 
      
 35 
     | 
    
         
            +
              // loadイベント登録
         
     | 
| 
       33 
36 
     | 
    
         
             
              reader.addEventListener('load', async function onLoad (event) {
         
     | 
| 
      
 37 
     | 
    
         
            +
                const dpi = parseInt(dpiInput.value);
         
     | 
| 
      
 38 
     | 
    
         
            +
                // FileReaderで読み取ったデータを取得
         
     | 
| 
       34 
39 
     | 
    
         
             
                const url = reader.result;
         
     | 
| 
       35 
     | 
    
         
            -
                const dpi = parseInt(document.getElementById('dpiInput').value);
         
     | 
| 
       36 
40 
     | 
    
         
             
                const loadingTask = pdfjsLib.getDocument(url);
         
     | 
| 
       37 
41 
     | 
    
         
             
                const pdf = await loadingTask.promise;
         
     | 
| 
       38 
42 
     | 
    
         
             
                const pageCount = pdf.numPages;
         
     | 
| 
       39 
43 
     | 
    
         
             
                const canvas = document.createElement('canvas');
         
     | 
| 
       40 
44 
     | 
    
         
             
                const ctx = canvas.getContext('2d');
         
     | 
| 
       41 
45 
     | 
    
         
             
                let page, viewport, scale, renderContext, imageData, link;
         
     | 
| 
       42 
     | 
    
         
            -
                for (let pageNumber = 1; pageNumber <= pageCount; pageNumber++) {
         
     | 
| 
      
 46 
     | 
    
         
            +
                for (let pageNumber = 1; pageNumber <= pageCount; pageNumber ++) {
         
     | 
| 
       43 
47 
     | 
    
         
             
                  page = await pdf.getPage(pageNumber);
         
     | 
| 
       44 
     | 
    
         
            -
                  viewport = page.getViewport({ 
     | 
| 
      
 48 
     | 
    
         
            +
                  viewport = page.getViewport({scale: 1.0});
         
     | 
| 
       45 
49 
     | 
    
         
             
                  scale = dpi / 72; // Convert DPI to scale factor
         
     | 
| 
       46 
50 
     | 
    
         
             
                  canvas.width = Math.floor(viewport.width * scale);
         
     | 
| 
       47 
51 
     | 
    
         
             
                  canvas.height = Math.floor(viewport.height * scale);
         
     | 
| 
         @@ -51,12 +55,14 @@ 
     | 
|
| 
       51 
55 
     | 
    
         
             
                  };
         
     | 
| 
       52 
56 
     | 
    
         
             
                  await page.render(renderContext).promise;
         
     | 
| 
       53 
57 
     | 
    
         
             
                  imageData = canvas.toDataURL('image/jpeg', 1.0);
         
     | 
| 
      
 58 
     | 
    
         
            +
                  // appendChild無しでも行けたはずです
         
     | 
| 
       54 
59 
     | 
    
         
             
                  link = document.createElement('a');
         
     | 
| 
       55 
60 
     | 
    
         
             
                  link.href = imageData;
         
     | 
| 
       56 
61 
     | 
    
         
             
                  link.download = `page_${pageNumber}.jpg`;
         
     | 
| 
       57 
62 
     | 
    
         
             
                  link.click();
         
     | 
| 
       58 
63 
     | 
    
         
             
                }
         
     | 
| 
       59 
64 
     | 
    
         
             
              }, false);
         
     | 
| 
      
 65 
     | 
    
         
            +
              // DataURLとして読み込み(files.lengthなどで異常判定はした方が良いかもです)
         
     | 
| 
       60 
66 
     | 
    
         
             
              reader.readAsDataURL(pdfInput.files[0]);
         
     | 
| 
       61 
67 
     | 
    
         
             
            }
         
     | 
| 
       62 
68 
     | 
    
         
             
            ```
         
     |