回答編集履歴
2
コード修正
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
コメント整備
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({
|
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
|
```
|