moving to pdf.js completely

This commit is contained in:
Kilian Schuettler 2025-02-25 18:10:23 +01:00
parent 692bba7c8f
commit 1c12c61893
9 changed files with 31 additions and 67 deletions

View File

@ -24,7 +24,7 @@
"flowbite-svelte-icons": "^2.0.2", "flowbite-svelte-icons": "^2.0.2",
"monaco-editor": "^0.52.2", "monaco-editor": "^0.52.2",
"paths": "^0.1.1", "paths": "^0.1.1",
"pdfjs-dist": "^4.10.38", "pdfjs-dist": "link:/home/kschuettler/javascript/pdf.js/build/dist",
"svelte-split-pane": "^0.1.2", "svelte-split-pane": "^0.1.2",
"svelte-splitpanes": "^8.0.9", "svelte-splitpanes": "^8.0.9",
"vite-plugin-monaco-editor": "^1.1.0" "vite-plugin-monaco-editor": "^1.1.0"
@ -35,6 +35,7 @@
"@sveltejs/vite-plugin-svelte": "^5.0.0", "@sveltejs/vite-plugin-svelte": "^5.0.0",
"@tailwindcss/typography": "^0.5.14", "@tailwindcss/typography": "^0.5.14",
"@tauri-apps/cli": "^2", "@tauri-apps/cli": "^2",
"@types/node": "^22.13.5",
"autoprefixer": "^10.4.20", "autoprefixer": "^10.4.20",
"postcss": "^8.5.1", "postcss": "^8.5.1",
"sass-embedded": "^1.83.4", "sass-embedded": "^1.83.4",

View File

@ -13,7 +13,6 @@
fState.pageViewState = state; fState.pageViewState = state;
function render() { function render() {
console.log("render", display)
state.loadImage(display); state.loadImage(display);
} }

View File

@ -1,13 +1,14 @@
import {getDocument, GlobalWorkerOptions, type PDFDocumentProxy} from "pdfjs-dist"; import {getDocument, type PDFDocumentProxy, GlobalWorkerOptions} from "pdfjs-dist";
import type {RenderParameters} from "pdfjs-dist/types/src/display/api";
export default class Document { export default class Document {
doc: Promise<PDFDocumentProxy>; doc: Promise<PDFDocumentProxy>;
constructor(bytesB64: string) { constructor(bytesB64: string) {
GlobalWorkerOptions.workerSrc = new URL('/pdf.worker.min.mjs', import.meta.url).toString(); console.log("Initializing pdf worker")
GlobalWorkerOptions.workerSrc = '/dist/build/pdf.worker.min.mjs';
let loadingTask = getDocument({ data: atob(bytesB64) }); let loadingTask = getDocument({ data: atob(bytesB64) });
this.doc = loadingTask.promise this.doc = loadingTask.promise;
this.doc.then(d => d.getPrimitiveByPath("Trailer").then(a => console.log(a)))
} }
public async render_page(num: number, canvas: HTMLCanvasElement) { public async render_page(num: number, canvas: HTMLCanvasElement) {
@ -25,7 +26,7 @@ export default class Document {
const transform = [1, 0, 0, 1, 0, 0]; const transform = [1, 0, 0, 1, 0, 0];
// viewport = page.getViewport({ scale: 0.7, offsetX: canvas.width / 4, offsetY: canvas.height / 4}); // viewport = page.getViewport({ scale: 0.7, offsetX: canvas.width / 4, offsetY: canvas.height / 4});
const renderContext: RenderParameters = { const renderContext = {
canvasContext: context, canvasContext: context,
transform: transform, transform: transform,
viewport: viewport, viewport: viewport,

View File

@ -47,7 +47,6 @@ export class PageViewState {
} }
} }
) )
this.display_lock.release();
} }
public handleSave(newData: string) { public handleSave(newData: string) {

View File

@ -1,3 +0,0 @@
<svg id="Flat" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
<path d="M231.99512,87.99805V200.88867a15.13062,15.13062,0,0,1-15.10938,15.10938H39.99512a16.01582,16.01582,0,0,1-16-16v-136a16.01581,16.01581,0,0,1,16-16H93.33887a16.07363,16.07363,0,0,1,9.57812,3.19531l27.75,20.80469h85.32813A16.01582,16.01582,0,0,1,231.99512,87.99805Z"/>
</svg>

Before

Width:  |  Height:  |  Size: 357 B

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,7 +1,7 @@
import path from "path";
import { defineConfig } from "vite"; import { defineConfig } from "vite";
import { sveltekit } from "@sveltejs/kit/vite"; import { sveltekit } from "@sveltejs/kit/vite";
// import monacoEditorPlugin from 'vite-plugin-monaco-editor'; // import monacoEditorPlugin from 'vite-plugin-monaco-editor';
// @ts-expect-error process is a nodejs global
const host = process.env.TAURI_DEV_HOST; const host = process.env.TAURI_DEV_HOST;
// https://vitejs.dev/config/ // https://vitejs.dev/config/
export default defineConfig(async () => ({ export default defineConfig(async () => ({
@ -30,7 +30,7 @@ export default defineConfig(async () => ({
: undefined, : undefined,
watch: { watch: {
// 3. tell vite to ignore watching `src-tauri` // 3. tell vite to ignore watching `src-tauri`
ignored: ["**/src-tauri/**"], ignored: ["**/src-tauri/**", "**/src-pdfrs/**"],
}, },
}, },
})); }));

View File

@ -216,7 +216,7 @@
"@monaco-editor/loader@^1.4.0": "@monaco-editor/loader@^1.4.0":
version "1.4.0" version "1.4.0"
resolved "https://registry.yarnpkg.com/@monaco-editor/loader/-/loader-1.4.0.tgz#f08227057331ec890fa1e903912a5b711a2ad558" resolved "https://registry.npmjs.org/@monaco-editor/loader/-/loader-1.4.0.tgz"
integrity sha512-00ioBig0x642hytVspPl7DbQyaSWRaolYie/UFNjoTdvoKPzo6xrXLhTk9ixgIKcLH5b5vDOjVNiGyY+uDCUlg== integrity sha512-00ioBig0x642hytVspPl7DbQyaSWRaolYie/UFNjoTdvoKPzo6xrXLhTk9ixgIKcLH5b5vDOjVNiGyY+uDCUlg==
dependencies: dependencies:
state-local "^1.0.6" state-local "^1.0.6"
@ -271,7 +271,7 @@
resolved "https://registry.yarnpkg.com/@napi-rs/canvas-win32-x64-msvc/-/canvas-win32-x64-msvc-0.1.67.tgz#ee608ad9fe751c897c2ad8a1d81798732753ab41" resolved "https://registry.yarnpkg.com/@napi-rs/canvas-win32-x64-msvc/-/canvas-win32-x64-msvc-0.1.67.tgz#ee608ad9fe751c897c2ad8a1d81798732753ab41"
integrity sha512-K/JmkOFbc4iRZYUqJhj0jwqfHA/wNQEmTiGNsgZ6d59yF/IBNp5T0D5eg3B8ghjI8GxDYCiSJ6DNX8mC3Oh2EQ== integrity sha512-K/JmkOFbc4iRZYUqJhj0jwqfHA/wNQEmTiGNsgZ6d59yF/IBNp5T0D5eg3B8ghjI8GxDYCiSJ6DNX8mC3Oh2EQ==
"@napi-rs/canvas@^0.1.65": "@napi-rs/canvas@^0.1.67":
version "0.1.67" version "0.1.67"
resolved "https://registry.yarnpkg.com/@napi-rs/canvas/-/canvas-0.1.67.tgz#8b6993910d7865ddcab0e6d9b1b199707d3945b7" resolved "https://registry.yarnpkg.com/@napi-rs/canvas/-/canvas-0.1.67.tgz#8b6993910d7865ddcab0e6d9b1b199707d3945b7"
integrity sha512-VA4Khm/5Kg2bQGx3jXotTC4MloOG8b1Ung80exafUK0k5u6yJmIz3Q2iXeeWZs5weV+LQOEB+CPKsYwEYaGAjw== integrity sha512-VA4Khm/5Kg2bQGx3jXotTC4MloOG8b1Ung80exafUK0k5u6yJmIz3Q2iXeeWZs5weV+LQOEB+CPKsYwEYaGAjw==
@ -591,6 +591,13 @@
resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz" resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz"
integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw== integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==
"@types/node@^22.13.5":
version "22.13.5"
resolved "https://registry.npmjs.org/@types/node/-/node-22.13.5.tgz"
integrity sha512-+lTU0PxZXn0Dr1NBtC7Y8cR21AJr87dLLU953CWA6pMxxv/UDc7jYAY90upcrie1nRcD6XNG5HOYEDtgW5TxAg==
dependencies:
undici-types "~6.20.0"
"@types/resolve@1.20.2": "@types/resolve@1.20.2":
version "1.20.2" version "1.20.2"
resolved "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz" resolved "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz"
@ -671,7 +678,7 @@ aria-query@^5.3.1:
async-mutex@^0.5.0: async-mutex@^0.5.0:
version "0.5.0" version "0.5.0"
resolved "https://registry.yarnpkg.com/async-mutex/-/async-mutex-0.5.0.tgz#353c69a0b9e75250971a64ac203b0ebfddd75482" resolved "https://registry.npmjs.org/async-mutex/-/async-mutex-0.5.0.tgz"
integrity sha512-1A94B18jkJ3DYq284ohPxoXbfTA5HsQ7/Mf4DEhcyLx3Bz27Rh59iScbB6EPiP+B+joue6YCxcMXSbFC1tZKwA== integrity sha512-1A94B18jkJ3DYq284ohPxoXbfTA5HsQ7/Mf4DEhcyLx3Bz27Rh59iScbB6EPiP+B+joue6YCxcMXSbFC1tZKwA==
dependencies: dependencies:
tslib "^2.4.0" tslib "^2.4.0"
@ -1284,12 +1291,9 @@ paths@^0.1.1:
resolved "https://registry.npmjs.org/paths/-/paths-0.1.1.tgz" resolved "https://registry.npmjs.org/paths/-/paths-0.1.1.tgz"
integrity sha512-MO2qBeKTXfH+qlZjo2+R5GmjCo/1r9CIWwtA7JUzafClhzWH9x/nDrJiaTXsWekNrHMlbSSI+Mc4654INuvbrQ== integrity sha512-MO2qBeKTXfH+qlZjo2+R5GmjCo/1r9CIWwtA7JUzafClhzWH9x/nDrJiaTXsWekNrHMlbSSI+Mc4654INuvbrQ==
pdfjs-dist@^4.10.38: "pdfjs-dist@link:/home/kschuettler/javascript/pdf.js/build/dist":
version "4.10.38" version "0.0.0"
resolved "https://registry.yarnpkg.com/pdfjs-dist/-/pdfjs-dist-4.10.38.tgz#3ee698003790dc266cc8b55c0e662ccb9ae18f53" uid ""
integrity sha512-/Y3fcFrXEAsMjJXeL9J8+ZG9U01LbuWaYypvDW2ycW1jL269L3js3DVBjDJ0Up9Np1uqDXsDrRihHANhZOlwdQ==
optionalDependencies:
"@napi-rs/canvas" "^0.1.65"
picocolors@^1.0.0, picocolors@^1.0.1, picocolors@^1.1.1: picocolors@^1.0.0, picocolors@^1.0.1, picocolors@^1.1.1:
version "1.1.1" version "1.1.1"
@ -1637,7 +1641,7 @@ source-map-js@^1.2.1:
state-local@^1.0.6: state-local@^1.0.6:
version "1.0.7" version "1.0.7"
resolved "https://registry.yarnpkg.com/state-local/-/state-local-1.0.7.tgz#da50211d07f05748d53009bee46307a37db386d5" resolved "https://registry.npmjs.org/state-local/-/state-local-1.0.7.tgz"
integrity sha512-HTEHMNieakEnoe33shBYcZ7NX83ACUjCu8c40iOGEZsngj9zRnkqS9j1pqQPXwobB0ZcVTk27REb7COQ0UR59w== integrity sha512-HTEHMNieakEnoe33shBYcZ7NX83ACUjCu8c40iOGEZsngj9zRnkqS9j1pqQPXwobB0ZcVTk27REb7COQ0UR59w==
"string-width-cjs@npm:string-width@^4.2.0": "string-width-cjs@npm:string-width@^4.2.0":
@ -1902,6 +1906,11 @@ typescript@~5.6.2:
resolved "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz" resolved "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz"
integrity sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw== integrity sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==
undici-types@~6.20.0:
version "6.20.0"
resolved "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz"
integrity sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==
update-browserslist-db@^1.1.1: update-browserslist-db@^1.1.1:
version "1.1.2" version "1.1.2"
resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.2.tgz" resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.2.tgz"
@ -1922,12 +1931,12 @@ varint@^6.0.0:
vite-plugin-monaco-editor@^1.1.0: vite-plugin-monaco-editor@^1.1.0:
version "1.1.0" version "1.1.0"
resolved "https://registry.yarnpkg.com/vite-plugin-monaco-editor/-/vite-plugin-monaco-editor-1.1.0.tgz#a6238c2e13d5e98dd54a1bc51f6f189325219de3" resolved "https://registry.npmjs.org/vite-plugin-monaco-editor/-/vite-plugin-monaco-editor-1.1.0.tgz"
integrity sha512-IvtUqZotrRoVqwT0PBBDIZPNraya3BxN/bfcNfnxZ5rkJiGcNtO5eAOWWSgT7zullIAEqQwxMU83yL9J5k7gww== integrity sha512-IvtUqZotrRoVqwT0PBBDIZPNraya3BxN/bfcNfnxZ5rkJiGcNtO5eAOWWSgT7zullIAEqQwxMU83yL9J5k7gww==
vite@^6.0.11: vite@^6.0.11:
version "6.0.11" version "6.0.11"
resolved "https://registry.yarnpkg.com/vite/-/vite-6.0.11.tgz#224497e93e940b34c3357c9ebf2ec20803091ed8" resolved "https://registry.npmjs.org/vite/-/vite-6.0.11.tgz"
integrity sha512-4VL9mQPKoHy4+FE0NnRE/kbY51TOfaknxAjt3fJbGJxhIpBZiqVzlZDEesWWsuREXHwNdAoOFZ9MkPEVXczHwg== integrity sha512-4VL9mQPKoHy4+FE0NnRE/kbY51TOfaknxAjt3fJbGJxhIpBZiqVzlZDEesWWsuREXHwNdAoOFZ9MkPEVXczHwg==
dependencies: dependencies:
esbuild "^0.24.2" esbuild "^0.24.2"