feat: split pdf

This commit is contained in:
Ibrahima G. Coulibaly
2025-03-26 05:55:53 +00:00
parent e6f54a3f2b
commit ca778284b9
6 changed files with 128 additions and 87 deletions

View File

@@ -9,6 +9,7 @@ import { parsePageRanges, splitPdf } from './service';
import { CardExampleType } from '@components/examples/ToolExamples';
import { PDFDocument } from 'pdf-lib';
import { FormikProps } from 'formik';
import ToolPdfInput from '@components/input/ToolPdfInput';
type InitialValuesType = {
pageRanges: string;
@@ -115,7 +116,7 @@ export default function SplitPdf({ title }: ToolComponentProps) {
compute={compute}
exampleCards={exampleCards}
inputComponent={
<ToolFileInput
<ToolPdfInput
value={input}
onChange={setInput}
accept={['application/pdf']}

View File

@@ -23,7 +23,15 @@ export function parsePageRanges(
if (trimmedRange.includes('-')) {
const [start, end] = trimmedRange.split('-').map(Number);
if (!isNaN(start) && !isNaN(end)) {
for (let i = Math.max(1, start); i <= Math.min(totalPages, end); i++) {
// Handle both forward and reversed ranges
const normalizedStart = Math.min(start, end);
const normalizedEnd = Math.max(start, end);
for (
let i = Math.max(1, normalizedStart);
i <= Math.min(totalPages, normalizedEnd);
i++
) {
pageNumbers.add(i);
}
}