1.可以使用react-pdf和react-copy-to-clipboard库来实现
2.如果复制出来的内容乱码,可能是因为PDF中的文字编码方式和你所在的环境不一致,可以尝试使用文本编码库来处理,比如使用iconv-lite库
import React, { useState } from 'react';
import { Document, Page, Text } from 'react-pdf';
import { CopyToClipboard } from 'react-copy-to-clipboard';
import iconv from 'iconv-lite';
function App() {
const [selectedText, setSelectedText] = useState('');
const handleSelection = () => {
const selection = window.getSelection().toString();
setSelectedText(iconv.encode(selection, 'utf-8').toString());
};
return (
<div>
<Document file="sample.pdf" onMouseUp={handleSelection}>
{Array.from({ length: numPages }, (_, i) => (
<Page key={`page_${i + 1}`} pageNumber={i + 1}>
<Text>Hello, World!</Text>
</Page>
))}
</Document>
{selectedText && (
<CopyToClipboard text={selectedText}>
<button>Copy</button>
</CopyToClipboard>
)}
</div>
);
}
export default App;