mirror of
https://github.com/Stirling-Tools/Stirling-PDF.git
synced 2025-09-18 09:29:24 +00:00
Tidy
This commit is contained in:
parent
cef61d3733
commit
e31e6461e4
@ -1,5 +1,5 @@
|
||||
import { useState, useEffect, useRef } from "react";
|
||||
import { PDFMetadataService } from "../../../services/pdfMetadataService";
|
||||
import { extractPDFMetadata } from "../../../services/pdfMetadataService";
|
||||
import { useSelectedFiles } from "../../../contexts/file/fileHooks";
|
||||
import { ChangeMetadataParameters } from "./useChangeMetadataParameters";
|
||||
|
||||
@ -34,8 +34,8 @@ export const useMetadataExtraction = (params: MetadataExtractionParams) => {
|
||||
}
|
||||
|
||||
setIsExtractingMetadata(true);
|
||||
try {
|
||||
const result = await PDFMetadataService.extractMetadata(firstFile);
|
||||
|
||||
const result = await extractPDFMetadata(firstFile);
|
||||
|
||||
if (result.success) {
|
||||
const metadata = result.metadata;
|
||||
@ -53,12 +53,11 @@ export const useMetadataExtraction = (params: MetadataExtractionParams) => {
|
||||
params.updateParameter('customMetadata', metadata.customMetadata);
|
||||
|
||||
setHasExtractedMetadata(true);
|
||||
} else {
|
||||
console.warn('Failed to extract metadata:', result.error);
|
||||
}
|
||||
} catch (error) {
|
||||
console.warn('Failed to extract metadata:', error);
|
||||
} finally {
|
||||
|
||||
setIsExtractingMetadata(false);
|
||||
}
|
||||
};
|
||||
|
||||
extractMetadata();
|
||||
|
@ -105,14 +105,23 @@ function extractCustomMetadata(info: Record<string, unknown>): CustomMetadataEnt
|
||||
}
|
||||
|
||||
/**
|
||||
* Service to extract metadata from PDF files using PDF.js
|
||||
* Safely cleanup PDF document with error handling
|
||||
*/
|
||||
export class PDFMetadataService {
|
||||
function cleanupPdfDocument(pdfDoc: any): void {
|
||||
if (pdfDoc) {
|
||||
try {
|
||||
pdfWorkerManager.destroyDocument(pdfDoc);
|
||||
} catch (cleanupError) {
|
||||
console.warn('Failed to cleanup PDF document:', cleanupError);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Extract all metadata from a PDF file
|
||||
* Returns a result object with success/error state
|
||||
*/
|
||||
static async extractMetadata(file: File): Promise<MetadataExtractionResponse> {
|
||||
export async function extractPDFMetadata(file: File): Promise<MetadataExtractionResponse> {
|
||||
// Use existing PDF validation
|
||||
const isValidPDF = await FileAnalyzer.isValidPDF(file);
|
||||
if (!isValidPDF) {
|
||||
@ -123,15 +132,25 @@ export class PDFMetadataService {
|
||||
}
|
||||
|
||||
let pdfDoc: any = null;
|
||||
let arrayBuffer: ArrayBuffer;
|
||||
let metadata: any;
|
||||
|
||||
try {
|
||||
const arrayBuffer = await file.arrayBuffer();
|
||||
arrayBuffer = await file.arrayBuffer();
|
||||
pdfDoc = await pdfWorkerManager.createDocument(arrayBuffer, {
|
||||
disableAutoFetch: true,
|
||||
disableStream: true
|
||||
});
|
||||
metadata = await pdfDoc.getMetadata();
|
||||
} catch (error) {
|
||||
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
|
||||
cleanupPdfDocument(pdfDoc);
|
||||
return {
|
||||
success: false,
|
||||
error: `Failed to read PDF: ${errorMessage}`
|
||||
};
|
||||
}
|
||||
|
||||
const metadata = await pdfDoc.getMetadata();
|
||||
const info = metadata.info || {};
|
||||
|
||||
// Safely extract metadata with proper type checking
|
||||
@ -148,28 +167,10 @@ export class PDFMetadataService {
|
||||
customMetadata: extractCustomMetadata(info)
|
||||
};
|
||||
|
||||
cleanupPdfDocument(pdfDoc);
|
||||
|
||||
return {
|
||||
success: true,
|
||||
metadata: extractedMetadata
|
||||
};
|
||||
|
||||
} catch (error) {
|
||||
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
|
||||
|
||||
return {
|
||||
success: false,
|
||||
error: `Failed to extract PDF metadata: ${errorMessage}`
|
||||
};
|
||||
|
||||
} finally {
|
||||
// Ensure cleanup even if extraction fails
|
||||
if (pdfDoc) {
|
||||
try {
|
||||
pdfWorkerManager.destroyDocument(pdfDoc);
|
||||
} catch (cleanupError) {
|
||||
console.warn('Failed to cleanup PDF document:', cleanupError);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user