diff --git a/frontend/src/proprietary/components/tools/pdfTextEditor/PdfTextEditorView.tsx b/frontend/src/proprietary/components/tools/pdfTextEditor/PdfTextEditorView.tsx index 734a0f090..849e07fcf 100644 --- a/frontend/src/proprietary/components/tools/pdfTextEditor/PdfTextEditorView.tsx +++ b/frontend/src/proprietary/components/tools/pdfTextEditor/PdfTextEditorView.tsx @@ -2240,7 +2240,7 @@ const selectionToolbarPosition = useMemo(() => { if (primaryFont && typeof document !== 'undefined') { try { if (document.queryCommandSupported?.('styleWithCSS')) { - document.execCommand('styleWithCSS', false, true); + document.execCommand('styleWithCSS', false, 'true'); } if (document.queryCommandSupported?.('fontName')) { document.execCommand('fontName', false, primaryFont); diff --git a/frontend/src/proprietary/tools/pdfTextEditor/PdfTextEditor.tsx b/frontend/src/proprietary/tools/pdfTextEditor/PdfTextEditor.tsx index d04d8e246..869e3916e 100644 --- a/frontend/src/proprietary/tools/pdfTextEditor/PdfTextEditor.tsx +++ b/frontend/src/proprietary/tools/pdfTextEditor/PdfTextEditor.tsx @@ -19,6 +19,7 @@ import { TextGroup, PdfTextEditorViewData, BoundingBox, + ConversionProgress, } from './pdfTextEditorTypes'; import { deepCloneDocument, @@ -217,11 +218,7 @@ const PdfTextEditor = ({ onComplete, onError }: BaseToolProps) => { const [errorMessage, setErrorMessage] = useState(null); const [isGeneratingPdf, setIsGeneratingPdf] = useState(false); const [isConverting, setIsConverting] = useState(false); - const [conversionProgress, setConversionProgress] = useState<{ - percent: number; - stage: string; - message: string; - } | null>(null); + const [conversionProgress, setConversionProgress] = useState(null); const [forceSingleTextElement, setForceSingleTextElement] = useState(true); const [groupingMode, setGroupingMode] = useState<'auto' | 'paragraph' | 'singleLine'>('auto'); const [hasVectorPreview, setHasVectorPreview] = useState(false); @@ -1154,7 +1151,7 @@ const PdfTextEditor = ({ onComplete, onError }: BaseToolProps) => { page.cleanup(); return; } - await page.render({ canvasContext: context, viewport }).promise; + await page.render({ canvas, canvasContext: context, viewport }).promise; try { const textContent = await page.getTextContent(); @@ -1165,6 +1162,9 @@ const PdfTextEditor = ({ onComplete, onError }: BaseToolProps) => { context.globalCompositeOperation = 'destination-out'; context.fillStyle = '#000000'; for (const item of textContent.items) { + // Skip TextMarkedContent items, only process TextItem + if (!('transform' in item)) continue; + const transform = Util.transform(viewport.transform, item.transform); const a = transform[0]; const b = transform[1]; diff --git a/frontend/src/proprietary/tools/pdfTextEditor/pdfTextEditorTypes.ts b/frontend/src/proprietary/tools/pdfTextEditor/pdfTextEditorTypes.ts index 249553716..8439bb4c1 100644 --- a/frontend/src/proprietary/tools/pdfTextEditor/pdfTextEditorTypes.ts +++ b/frontend/src/proprietary/tools/pdfTextEditor/pdfTextEditorTypes.ts @@ -99,6 +99,8 @@ export interface PdfJsonPage { width?: number | null; height?: number | null; rotation?: number | null; + mediaBox?: number[] | null; + cropBox?: number[] | null; textElements?: PdfJsonTextElement[] | null; imageElements?: PdfJsonImageElement[] | null; resources?: unknown;