Skip to content
This repository has been archived by the owner on Feb 19, 2025. It is now read-only.

Commit

Permalink
Added option to include annotations
Browse files Browse the repository at this point in the history
  • Loading branch information
S0ulDrag0n committed May 19, 2023
1 parent 396b081 commit 5a82cc9
Showing 1 changed file with 25 additions and 4 deletions.
29 changes: 25 additions & 4 deletions src/components/PageExtractionModal/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ interface PageExtractionModalInputProps {
interface PageExtractionModalState {
pageInput: string;
pageCount: number[];
includeAnnotations: boolean;
}

class PageExtractionModal extends React.Component<PageExtractionModalInputProps, PageExtractionModalState> {
Expand All @@ -28,7 +29,8 @@ class PageExtractionModal extends React.Component<PageExtractionModalInputProps,
const doc = this.props.wvInstance.Core.documentViewer.getDocument();
this.state = {
pageInput: "1",
pageCount: doc ? Array.from({ length: doc.getPageCount() }, (_, index) => index + 1) : []
pageCount: doc ? Array.from({ length: doc.getPageCount() }, (_, index) => index + 1) : [],
includeAnnotations: true
};
}
componentDidMount(): void {
Expand Down Expand Up @@ -171,6 +173,9 @@ class PageExtractionModal extends React.Component<PageExtractionModalInputProps,
/>
);
};
onToggleIncludeAnnotations = (e: any) => {
this.setState({ includeAnnotations: e.target.checked });
};
onCancel = () => {
this.props.wvInstance.UI.closeElements([this.props.dataElement]);
};
Expand All @@ -182,7 +187,11 @@ class PageExtractionModal extends React.Component<PageExtractionModalInputProps,
try {
this.props.wvInstance.UI.openElements(["loadingModal"]);
const pages = this.stringToPageArray(this.state.pageInput);
const extracted = await doc.extractPages(pages);
let xfdf;
if (this.state.includeAnnotations) {
xfdf = await this.props.wvInstance.Core.annotationManager.exportAnnotations();
}
const extracted = await doc.extractPages(pages, xfdf);
const downloadBlob = new Blob([extracted], { type: "application/pdf" });
const downloadUrl = URL.createObjectURL(downloadBlob);
this._downloadRef.current.href = downloadUrl;
Expand All @@ -205,7 +214,11 @@ class PageExtractionModal extends React.Component<PageExtractionModalInputProps,
try {
this.props.wvInstance.UI.openElements(["loadingModal"]);
const pages = this.stringToPageArray(this.state.pageInput);
const extracted = await doc.extractPages(pages);
let xfdf;
if (this.state.includeAnnotations) {
xfdf = await this.props.wvInstance.Core.annotationManager.exportAnnotations();
}
const extracted = await doc.extractPages(pages, xfdf);
await this.props.moduleClient.saveFile(extracted);
this.props.wvInstance.UI.closeElements([this.props.dataElement]);
} finally {
Expand All @@ -227,7 +240,7 @@ class PageExtractionModal extends React.Component<PageExtractionModalInputProps,
}}
>
<div style={{ margin: "1em" }}>
<span>Pages: </span>
<span>Pages:</span>
<div style={{ display: "flex", flexDirection: "column", marginTop: "0.5em" }}>
<input
type="text"
Expand All @@ -246,6 +259,14 @@ class PageExtractionModal extends React.Component<PageExtractionModalInputProps,
render={this.loadThumbnail}
items={this.state.pageCount}
/>
<div style={{ display: "flex", flexDirection: "row", marginTop: "1em" }}>
<span>Include annotations?</span>
<input
type="checkbox"
onClick={this.onToggleIncludeAnnotations}
checked={this.state.includeAnnotations}
/>
</div>
<a ref={this._downloadRef} style={{ display: "hidden" }} />
</div>
<div className="footer">
Expand Down

0 comments on commit 5a82cc9

Please sign in to comment.