test
This commit is contained in:
@ -1,20 +1,24 @@
|
||||
import * as pdfjsLib from 'pdfjs-dist';
|
||||
import PdfWorkerCtor from 'pdfjs-dist/build/pdf.worker.min.mjs?worker';
|
||||
|
||||
// Явно указываем путь к worker'у, чтобы избежать проблем с ?worker в PWA/Chromium
|
||||
pdfjsLib.GlobalWorkerOptions.workerSrc = new URL(
|
||||
'pdfjs-dist/build/pdf.worker.min.mjs',
|
||||
import.meta.url
|
||||
).toString();
|
||||
|
||||
/**
|
||||
* Загрузка PDF документа
|
||||
* @param {File} file
|
||||
*/
|
||||
export async function loadPdfDocument(file) {
|
||||
try {
|
||||
const arrayBuffer = await file.arrayBuffer();
|
||||
const worker = new pdfjsLib.PDFWorker({ port: new PdfWorkerCtor() });
|
||||
const loadingTask = pdfjsLib.getDocument({ data: arrayBuffer, worker });
|
||||
return await loadingTask.promise;
|
||||
} catch (err) {
|
||||
console.error('PDF load error:', err);
|
||||
return null;
|
||||
}
|
||||
try {
|
||||
const arrayBuffer = await file.arrayBuffer();
|
||||
const loadingTask = pdfjsLib.getDocument({ data: arrayBuffer });
|
||||
return await loadingTask.promise;
|
||||
} catch (err) {
|
||||
console.error('PDF load error:', err);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -24,19 +28,18 @@ export async function loadPdfDocument(file) {
|
||||
* @param {number} scale
|
||||
*/
|
||||
export async function renderPageToImage(pdfDoc, pageNum, scale = 1.0) {
|
||||
const page = await pdfDoc.getPage(pageNum);
|
||||
const viewport = page.getViewport({ scale });
|
||||
const canvas = document.createElement('canvas');
|
||||
const context = canvas.getContext('2d');
|
||||
const outputScale = window.devicePixelRatio || 1;
|
||||
const page = await pdfDoc.getPage(pageNum);
|
||||
const viewport = page.getViewport({ scale });
|
||||
const canvas = document.createElement('canvas');
|
||||
const context = canvas.getContext('2d');
|
||||
const outputScale = window.devicePixelRatio || 1;
|
||||
|
||||
canvas.width = Math.floor(viewport.width * outputScale);
|
||||
canvas.height = Math.floor(viewport.height * outputScale);
|
||||
canvas.style.width = `${Math.floor(viewport.width)}px`;
|
||||
canvas.style.height = `${Math.floor(viewport.height)}px`;
|
||||
canvas.width = Math.floor(viewport.width * outputScale);
|
||||
canvas.height = Math.floor(viewport.height * outputScale);
|
||||
canvas.style.width = `${Math.floor(viewport.width)}px`;
|
||||
canvas.style.height = `${Math.floor(viewport.height)}px`;
|
||||
|
||||
const transform = outputScale !== 1 ? [outputScale, 0, 0, outputScale, 0, 0] : undefined;
|
||||
|
||||
await page.render({ canvasContext: context, viewport, transform }).promise;
|
||||
return canvas.toDataURL('image/jpeg', 0.85);
|
||||
const transform = outputScale !== 1 ? [outputScale, 0, 0, outputScale, 0, 0] : undefined;
|
||||
await page.render({ canvasContext: context, viewport, transform }).promise;
|
||||
return canvas.toDataURL('image/jpeg', 0.85);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user