49 lines
1.3 KiB
JavaScript
49 lines
1.3 KiB
JavaScript
// @link WebViewerInstance: https://www.pdftron.com/api/web/WebViewerInstance.html
|
|
// @link UI.loadDocument: https://www.pdftron.com/api/web/UI.html#loadDocument__anchor
|
|
|
|
WebViewer(
|
|
{
|
|
path: '../../../lib',
|
|
initialDoc: '../../files/table.pdf',
|
|
},
|
|
document.getElementById('viewer')
|
|
).then(instance => {
|
|
samplesSetup(instance);
|
|
|
|
const { annotManager, docViewer } = instance;
|
|
|
|
docViewer.on('documentLoaded', async () => {
|
|
const doc = docViewer.getDocument();
|
|
const data = await doc.getFileData();
|
|
const fileName = doc.getFilename();
|
|
const arr = new Uint8Array(data);
|
|
const file = new File([arr], fileName, { type: 'application/pdf' });
|
|
const { xfdf } = await extractTableData(file);
|
|
|
|
annotManager.importAnnotations(xfdf);
|
|
});
|
|
|
|
document.getElementById('file-picker').onchange = async e => {
|
|
const file = e.target.files[0];
|
|
if (file) {
|
|
docViewer.loadDocument(file);
|
|
}
|
|
};
|
|
|
|
async function extractTableData(file) {
|
|
const response = await fetch('https://ai-serve.pdftron.com/extract/predict', {
|
|
method: 'POST',
|
|
body: file,
|
|
headers: {
|
|
'File-Name': file.name || 'test_pdf.pdf',
|
|
'Content-Type': 'application/json',
|
|
},
|
|
});
|
|
|
|
const data = await response.json();
|
|
const { xfdf, html } = data;
|
|
|
|
return { xfdf, html };
|
|
}
|
|
});
|