mirror of
https://github.com/Frooodle/Stirling-PDF.git
synced 2025-12-18 20:04:17 +01:00
fix page count issue
This commit is contained in:
parent
1edd133e09
commit
d8d6197008
@ -17,7 +17,7 @@ const Sign = (props: BaseToolProps) => {
|
||||
const { setWorkbench } = useNavigation();
|
||||
const { setSignatureConfig, activateDrawMode, activateSignaturePlacementMode, deactivateDrawMode, updateDrawSettings, undo, redo, signatureApiRef, getImageData, setSignaturesApplied } = useSignature();
|
||||
const { consumeFiles, selectors } = useFileContext();
|
||||
const { exportActions } = useViewer();
|
||||
const { exportActions, getScrollState } = useViewer();
|
||||
|
||||
// Track which signature mode was active for reactivation after save
|
||||
const activeModeRef = useRef<'draw' | 'placement' | null>(null);
|
||||
@ -76,7 +76,8 @@ const Sign = (props: BaseToolProps) => {
|
||||
exportActions,
|
||||
selectors,
|
||||
consumeFiles,
|
||||
originalFile
|
||||
originalFile,
|
||||
getScrollState
|
||||
});
|
||||
|
||||
if (success) {
|
||||
|
||||
@ -19,10 +19,11 @@ interface SignatureFlatteningOptions {
|
||||
selectors: MinimalFileContextSelectors;
|
||||
consumeFiles: (inputFileIds: FileId[], outputStirlingFiles: StirlingFile[], outputStirlingFileStubs: StirlingFileStub[]) => Promise<FileId[]>;
|
||||
originalFile?: StirlingFile;
|
||||
getScrollState: () => { currentPage: number; totalPages: number };
|
||||
}
|
||||
|
||||
export async function flattenSignatures(options: SignatureFlatteningOptions): Promise<boolean> {
|
||||
const { signatureApiRef, getImageData, exportActions, selectors, consumeFiles, originalFile } = options;
|
||||
const { signatureApiRef, getImageData, exportActions, selectors, consumeFiles, originalFile, getScrollState } = options;
|
||||
|
||||
try {
|
||||
// Step 1: Extract all annotations from EmbedPDF before export
|
||||
@ -31,12 +32,13 @@ export async function flattenSignatures(options: SignatureFlatteningOptions): Pr
|
||||
if (signatureApiRef?.current) {
|
||||
console.log('Extracting annotations from all pages...');
|
||||
|
||||
// Dynamically check all pages until we encounter consecutive errors
|
||||
let pageIndex = 0;
|
||||
let consecutiveErrors = 0;
|
||||
const maxConsecutiveErrors = 3; // Stop after 3 consecutive page access failures
|
||||
// Get actual page count from viewer
|
||||
const scrollState = getScrollState();
|
||||
const totalPages = scrollState.totalPages;
|
||||
console.log(`Document has ${totalPages} pages`);
|
||||
|
||||
while (consecutiveErrors < maxConsecutiveErrors) {
|
||||
// Check only actual pages that exist in the document
|
||||
for (let pageIndex = 0; pageIndex < totalPages; pageIndex++) {
|
||||
try {
|
||||
const pageAnnotations = await signatureApiRef.current.getPageAnnotations(pageIndex);
|
||||
if (pageAnnotations && pageAnnotations.length > 0) {
|
||||
@ -66,15 +68,9 @@ export async function flattenSignatures(options: SignatureFlatteningOptions): Pr
|
||||
console.log(`Found ${sessionAnnotations.length} session annotations on page ${pageIndex + 1} (out of ${pageAnnotations.length} total)`);
|
||||
}
|
||||
}
|
||||
|
||||
// Reset consecutive error count on successful page access
|
||||
consecutiveErrors = 0;
|
||||
} catch (pageError) {
|
||||
consecutiveErrors++;
|
||||
console.warn(`Error extracting annotations from page ${pageIndex + 1} (error ${consecutiveErrors}/${maxConsecutiveErrors}):`, pageError);
|
||||
console.warn(`Error extracting annotations from page ${pageIndex + 1}:`, pageError);
|
||||
}
|
||||
|
||||
pageIndex++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user