diff --git a/frontend/src/lib/api.ts b/frontend/src/lib/api.ts index a3c69b7..02c1d8a 100644 --- a/frontend/src/lib/api.ts +++ b/frontend/src/lib/api.ts @@ -41,7 +41,7 @@ export const deleteChunk = async (chunkId: string): Promise => { export const getChunkPdfUrl = (filePath: string): string => { const baseUrl: string = import.meta.env.VITE_API_BASE_URL ?? 'http://localhost:8000/api/v1' - return `${baseUrl}/chunks/${filePath}/pdf` + return `${baseUrl}/chunks/${encodeURIComponent(filePath)}/pdf` } export const getPdfViewerUrl = (filePath: string, page?: number, title?: string): string => { diff --git a/frontend/src/pages/PdfViewerPage.tsx b/frontend/src/pages/PdfViewerPage.tsx index 68d7e16..6b9b6ea 100644 --- a/frontend/src/pages/PdfViewerPage.tsx +++ b/frontend/src/pages/PdfViewerPage.tsx @@ -20,16 +20,22 @@ export const PdfViewerPage: React.FC = () => { const [pageNumber, setPageNumber] = useState(initialPage) const [zoomIndex, setZoomIndex] = useState(DEFAULT_ZOOM_INDEX) const [loadError, setLoadError] = useState(null) + const [pageError, setPageError] = useState(null) const onDocumentLoadSuccess = useCallback(({ numPages: total }: { numPages: number }) => { setNumPages(total) setLoadError(null) + setPageError(null) }, []) const onDocumentLoadError = useCallback((error: Error) => { setLoadError(error.message) }, []) + const onPageLoadError = useCallback((error: Error) => { + setPageError(error.message) + }, []) + const goToPrevPage = () => setPageNumber((prev) => Math.max(1, prev - 1)) const goToNextPage = () => setPageNumber((prev) => Math.min(numPages, prev + 1)) const zoomIn = () => setZoomIndex((prev) => Math.min(ZOOM_LEVELS.length - 1, prev + 1)) @@ -96,7 +102,10 @@ export const PdfViewerPage: React.FC = () => {
{loadError ? (
-

Failed to load PDF: {loadError}

+
+

Failed to load PDF: {loadError}

+

URL: {pdfUrl}

+
) : ( { scale={ZOOM_LEVELS[zoomIndex]} renderTextLayer={true} renderAnnotationLayer={true} + onLoadError={onPageLoadError} + error={
Failed to load page: {pageError}
} />
)}