Using PDFjs directly from Obsidian
This commit is contained in:
@@ -37,8 +37,7 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@vanakat/plugin-api": "^0.1.0",
|
"@vanakat/plugin-api": "^0.1.0",
|
||||||
"minisearch": "^5.0.0",
|
"minisearch": "^5.0.0"
|
||||||
"pdfjs-dist": "^2.16.105"
|
|
||||||
},
|
},
|
||||||
"pnpm": {
|
"pnpm": {
|
||||||
"overrides": {
|
"overrides": {
|
||||||
|
|||||||
23
pnpm-lock.yaml
generated
23
pnpm-lock.yaml
generated
@@ -19,7 +19,6 @@ specifiers:
|
|||||||
jest: ^27.5.1
|
jest: ^27.5.1
|
||||||
minisearch: ^5.0.0
|
minisearch: ^5.0.0
|
||||||
obsidian: latest
|
obsidian: latest
|
||||||
pdfjs-dist: ^2.16.105
|
|
||||||
prettier: ^2.7.1
|
prettier: ^2.7.1
|
||||||
prettier-plugin-svelte: ^2.7.0
|
prettier-plugin-svelte: ^2.7.0
|
||||||
svelte: ^3.50.1
|
svelte: ^3.50.1
|
||||||
@@ -31,7 +30,6 @@ specifiers:
|
|||||||
dependencies:
|
dependencies:
|
||||||
'@vanakat/plugin-api': 0.1.0
|
'@vanakat/plugin-api': 0.1.0
|
||||||
minisearch: 5.0.0
|
minisearch: 5.0.0
|
||||||
pdfjs-dist: 2.16.105
|
|
||||||
|
|
||||||
devDependencies:
|
devDependencies:
|
||||||
'@babel/preset-env': 7.19.0
|
'@babel/preset-env': 7.19.0
|
||||||
@@ -2438,10 +2436,6 @@ packages:
|
|||||||
webidl-conversions: 5.0.0
|
webidl-conversions: 5.0.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/dommatrix/1.0.3:
|
|
||||||
resolution: {integrity: sha512-l32Xp/TLgWb8ReqbVJAFIvXmY7go4nTxxlWiAFyhoQw9RKEOHBZNnyGvJWqDVSPmq3Y9HlM4npqF/T6VMOXhww==}
|
|
||||||
dev: false
|
|
||||||
|
|
||||||
/electron-to-chromium/1.4.247:
|
/electron-to-chromium/1.4.247:
|
||||||
resolution: {integrity: sha512-FLs6R4FQE+1JHM0hh3sfdxnYjKvJpHZyhQDjc2qFq/xFvmmRt/TATNToZhrcGUFzpF2XjeiuozrA8lI0PZmYYw==}
|
resolution: {integrity: sha512-FLs6R4FQE+1JHM0hh3sfdxnYjKvJpHZyhQDjc2qFq/xFvmmRt/TATNToZhrcGUFzpF2XjeiuozrA8lI0PZmYYw==}
|
||||||
dev: true
|
dev: true
|
||||||
@@ -3926,18 +3920,6 @@ packages:
|
|||||||
resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
|
resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
|
|
||||||
/pdfjs-dist/2.16.105:
|
|
||||||
resolution: {integrity: sha512-J4dn41spsAwUxCpEoVf6GVoz908IAA3mYiLmNxg8J9kfRXc2jxpbUepcP0ocp0alVNLFthTAM8DZ1RaHh8sU0A==}
|
|
||||||
peerDependencies:
|
|
||||||
worker-loader: ^3.0.8
|
|
||||||
peerDependenciesMeta:
|
|
||||||
worker-loader:
|
|
||||||
optional: true
|
|
||||||
dependencies:
|
|
||||||
dommatrix: 1.0.3
|
|
||||||
web-streams-polyfill: 3.2.1
|
|
||||||
dev: false
|
|
||||||
|
|
||||||
/picocolors/1.0.0:
|
/picocolors/1.0.0:
|
||||||
resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
|
resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
|
||||||
dev: true
|
dev: true
|
||||||
@@ -4577,11 +4559,6 @@ packages:
|
|||||||
makeerror: 1.0.12
|
makeerror: 1.0.12
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/web-streams-polyfill/3.2.1:
|
|
||||||
resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==}
|
|
||||||
engines: {node: '>= 8'}
|
|
||||||
dev: false
|
|
||||||
|
|
||||||
/webidl-conversions/5.0.0:
|
/webidl-conversions/5.0.0:
|
||||||
resolution: {integrity: sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==}
|
resolution: {integrity: sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
|
|||||||
@@ -1,12 +1,14 @@
|
|||||||
import PDFJs from 'pdfjs-dist'
|
// import PDFJs from 'pdfjs-dist'
|
||||||
import pdfjsWorker from 'pdfjs-dist/build/pdf.worker.entry'
|
// import pdfjsWorker from 'pdfjs-dist/build/pdf.worker.entry'
|
||||||
import type { TextItem } from 'pdfjs-dist/types/src/display/api'
|
import type { TextItem } from 'pdfjs-dist/types/src/display/api'
|
||||||
import type { TFile } from 'obsidian'
|
import type { TFile } from 'obsidian'
|
||||||
|
import {loadPdfJs} from "obsidian";
|
||||||
|
|
||||||
PDFJs.GlobalWorkerOptions.workerSrc = pdfjsWorker
|
let PDFJs: any = null
|
||||||
|
|
||||||
// https://stackoverflow.com/a/59929946
|
// https://stackoverflow.com/a/59929946
|
||||||
export async function getPdfText(file: TFile): Promise<string> {
|
export async function getPdfText(file: TFile): Promise<string> {
|
||||||
|
PDFJs = PDFJs ?? await loadPdfJs()
|
||||||
const data = await app.vault.readBinary(file)
|
const data = await app.vault.readBinary(file)
|
||||||
const doc = await PDFJs.getDocument(data).promise
|
const doc = await PDFJs.getDocument(data).promise
|
||||||
const pageTexts = Array.from({ length: doc.numPages }, async (v, i) => {
|
const pageTexts = Array.from({ length: doc.numPages }, async (v, i) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user