View, edit, and Chat-with-your-PDF with AI.
Add View to your app for free. Learn pricing for all features here
https://www.signeasynow.com/edit-your-pdf
Want to see the source code for the above demo? Find it here.
-
Copy-paste the
pdf-ui
folder here into your ownpublic
folder. -
Install
npm install --save @prodfox/react-pdf-editor
or
yarn add @prodfox/react-pdf-editor
- Create a component
import { useRef } from 'react';
import { useCreateIframeAndLoadViewer } from "@prodfox/react-pdf-editor";
function App() {
const containerRef = useRef(null);
const { download } = useCreateIframeAndLoadViewer({
container: containerRef,
licenseKey: "sandbox",
locale: "en",
tools: {
editing: [
"extract",
"remove",
"move"
],
thumbnails: [
"zoom",
"expand"
],
general: [
"thumbnails",
"download",
"search",
"panel-toggle",
"zoom"
],
},
files: [
{
url: "https://pdftron.s3.amazonaws.com/downloads/pl/demo-annotated.pdf",
name: "my-file1.pdf"
},
{
url: "https://pdftron.s3.amazonaws.com/downloads/pl/demo-annotated.pdf",
name: "my-file2.pdf"
}
],
});
return (
<div>
<button onClick={download}>Download</button>
<div className="container" id="pdf" ref={containerRef}>
</div>
</div>
);
}
export default App;
The HTML element to attach the PDF viewer to.
Control what tools are available in the UI. Available keys are thumbnails
, general
, editing
, ...
useCreateIframeAndLoadViewer({
tools: {
thumbnails: ...,
general: ...,
editing: ...,
},
...other parameters
});
Field | Description |
---|---|
zoom | Enable zoom in/out of the document in view |
search | Enable search functions |
download | Enable downloading the document |
thumbnails | Enable a thumbnails panel |
panel-toggle | Enable the left-side panel to be togglable |
chat | Enable AI conversations with your PDF (user ID is required after 10 questions) |
useCreateIframeAndLoadViewer({
tools: {
general: [
"zoom",
"search",
"download",
"thumbnails",
"panel-toggle"
],
},
...other parameters
});
Field | Description |
---|---|
zoom | Enable a slider above thumbnails to increase/decrease the size of the thumbnails |
expand | Enable the thumbnails bar to be expandable to the full screen |
useCreateIframeAndLoadViewer({
tools: {
thumbnails: [
"zoom",
"expand"
],
},
...other parameters
});
Field | Description |
---|---|
remove | Enable the ability to remove pages |
rotation | Enable the rotation of individual pages |
extraction | Enabling extracting out a set of pages into one document |
move | Re-arrange pages in a document |
useCreateIframeAndLoadViewer({
tools: {
editing: [
"remove",
"rotation",
"extraction",
"move"
],
},
...other parameters
});
Options:
en
- English
es
- Spanish
ru
- Russian
(Reach out if you need a particular language added)
Callback when a file fails to upload
useCreateIframeAndLoadViewer({
onFileFailed: (errorMessage) => {
// handle the failure as you need
}
});
Defaults to regular
. Set it to split
to enable being able to select split markers to be then used for splitting a document into several documents.
Combine several files into one
const { combineFiles } = useCreateIframeAndLoadViewer({
...
});
combineFiles();
Listen for when the pages are loaded for the active document
const { pagesLoaded } = useCreateIframeAndLoadViewer({
...
});
if (pagesLoaded) {
// logic here
}
Download
const { download } = useCreateIframeAndLoadViewer({
...
});
download();
Listen for when the PDF editor is ready to accept commands
const { isReady } = useCreateIframeAndLoadViewer({
...
});
if (isReady) {
// logic here
}
Toggle displaying the full screen thumbnail view
const { toggleFullScreenThumbnails } = useCreateIframeAndLoadViewer({
...
});
toggleFullScreenThumbnails(true) // set this to true or false to open/close it.
Control the thumbnail zoom level. Ranges from 0 to 1.
const { setThumbnailZoom } = useCreateIframeAndLoadViewer({
...
});
setThumbnailZoom(0.5)
Toggle displaying the search bar on the right
const { toggleSearchbar } = useCreateIframeAndLoadViewer({
...
});
toggleSearchbar(true) // set this to true or false to open/close it.
Delete the AI conversation chat history
const { removeChatHistory } = useCreateIframeAndLoadViewer({
...
});
removeChatHistory()
Get the 0-indexed array of selected pages
const { selectedPages } = useCreateIframeAndLoadViewer({
...
});
Extract the selected pages
const { extractPages } = useCreateIframeAndLoadViewer({
...
});
extractPages()
Split the document into several documents based on the split markers the user selected.
const { splitPages } = useCreateIframeAndLoadViewer({
...
});
splitPages()