回答編集履歴

2

コード修正

2024/03/25 15:09

投稿

Refrain
Refrain

スコア537

test 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

コメント整備

2024/03/25 14:23

投稿

Refrain
Refrain

スコア537

test 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({ scale: 1.0 });
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
  ```