https://github.com/infiniflow/ragflow/issues/3651 ### What problem does this PR solve? _Briefly describe what this PR aims to solve. Include background context that will help reviewers understand the purpose of the PR._ ### Type of change - [x] Bug Fix (non-breaking change which fixes an issue)
55 lines
1.5 KiB
TypeScript
55 lines
1.5 KiB
TypeScript
import { Authorization } from '@/constants/authorization';
|
|
import { getAuthorization } from '@/utils/authorization-util';
|
|
import { Skeleton } from 'antd';
|
|
import { PdfHighlighter, PdfLoader } from 'react-pdf-highlighter';
|
|
import FileError from '../file-error';
|
|
import { useCatchError } from '../hooks';
|
|
type PdfLoaderProps = React.ComponentProps<typeof PdfLoader> & {
|
|
httpHeaders?: Record<string, string>;
|
|
};
|
|
|
|
const Loader = PdfLoader as React.ComponentType<PdfLoaderProps>;
|
|
|
|
interface IProps {
|
|
url: string;
|
|
}
|
|
|
|
const PdfPreviewer = ({ url }: IProps) => {
|
|
const { error } = useCatchError(url);
|
|
const resetHash = () => {};
|
|
const httpHeaders = {
|
|
[Authorization]: getAuthorization(),
|
|
};
|
|
return (
|
|
<div style={{ width: '100%', height: '100%' }}>
|
|
<Loader
|
|
url={url}
|
|
httpHeaders={httpHeaders}
|
|
beforeLoad={<Skeleton active />}
|
|
workerSrc="/pdfjs-dist/pdf.worker.min.js"
|
|
errorMessage={<FileError>{error}</FileError>}
|
|
onError={(e) => {
|
|
console.warn(e);
|
|
}}
|
|
>
|
|
{(pdfDocument) => {
|
|
return (
|
|
<PdfHighlighter
|
|
pdfDocument={pdfDocument}
|
|
enableAreaSelection={(event) => event.altKey}
|
|
onScrollChange={resetHash}
|
|
scrollRef={() => {}}
|
|
onSelectionFinished={() => null}
|
|
highlightTransform={() => {
|
|
return <div></div>;
|
|
}}
|
|
highlights={[]}
|
|
/>
|
|
);
|
|
}}
|
|
</Loader>
|
|
</div>
|
|
);
|
|
};
|
|
|
|
export default PdfPreviewer;
|