@pdftron/react-native-pdf
Version:
React Native Pdftron
120 lines (106 loc) • 5.41 kB
JavaScript
import React, { Component } from 'react';
import {
Platform,
StyleSheet,
Text,
View,
PermissionsAndroid,
BackHandler,
Alert
} from 'react-native';
import { DocumentView, RNPdftron, Config } from 'react-native-pdftron';
type Props = {};
export default class App extends Component<Props> {
constructor(props) {
super(props);
}
onLeadingNavButtonPressed = () => {
console.log('leading nav button pressed');
if (this._viewer) {
this._viewer.setStampImageData().then((annotationId, pageNumber, stampImageDataUrl) => {
annotationID = '75911d3a-f1fa-7a4f-8137-5885e3a4c4ae',
pageNumber = 1,
stampImageData = 'https://media.sproutsocial.com/uploads/2017/02/10x-featured-social-media-image-size.png';
});
}
if (Platform.OS === 'ios') {
Alert.alert(
'App',
'onLeadingNavButtonPressed',
[
{text: 'OK', onPress: () => console.log('OK Pressed')},
],
{ cancelable: true }
)
} else {
BackHandler.exitApp();
}
}
onDocumentLoaded = () => {
// if (this._viewer) {
// const xfdf = '\n<xfdf xmlns="http://ns.adobe.com/xfdf/" xml:space="preserve">\n\t<annots>\n\t\t<circle style="solid" width="5" color="#E44234" opacity="1" creationdate="D:20190729202215Z" flags="print" date="D:20190729202215Z" page="0" rect="138.824,653.226,236.28,725.159" title="" />\n\t\t<circle style="solid" width="5" color="#E44234" opacity="1" creationdate="D:20190729202215Z" flags="print" date="D:20190729202215Z" page="0" rect="103.114,501.958,245.067,590.92" title="" />\n\t\t<circle style="solid" width="5" color="#E44234" opacity="1" creationdate="D:20190729202216Z" flags="print" date="D:20190729202216Z" page="0" rect="117.85,336.548,328.935,451.568" title="" />\n\t\t<freetext TextColor="#363636" style="solid" width="0" opacity="1" creationdate="D:20190729202455Z" flags="print" date="D:20190729202513Z" page="0" rect="320.774,646.323,550.446,716.498" title="">\n\t\t\t<defaultstyle>font: Roboto 24pt;color: #363636</defaultstyle>\n\t\t\t<defaultappearance> 1 1 1 RG 1 1 1 rg /F0 24 Tf </defaultappearance>\n\t\t\t<contents>HELLO PDFTRON!!!</contents>\n\t\t\t<apref y="716.498" x="320.774" gennum="0" objnum="404" />\n\t\t</freetext>\n\t\t<line style="solid" width="5" color="#E44234" opacity="1" creationdate="D:20190729202507Z" flags="print" start="278.209,212.495" end="214.177,411.627" head="None" tail="OpenArrow" date="D:20190729202507Z" page="0" rect="206.039,211.73,280.589,416.387" title="" />\n\t</annots>\n\t<pages>\n\t\t<defmtx matrix="1.333333,0.000000,0.000000,-1.333333,0.000000,1056.000000" />\n\t</pages>\n\t<pdf-info version="2" xmlns="http://www.pdftron.com/pdfinfo" />\n</xfdf>';
// this._viewer.importAnnotations(xfdf);
// }
}
onAnnotationChanged = ({action, annotations}) => {
// console.log('action', action);
// console.log('annotations', annotations);
// if (this._viewer) {
// this._viewer.exportAnnotations({annotList: annotations}).then((xfdf) => {
// console.log('xfdf for annotations', xfdf);
// });
// }
}
onZoomChanged = ({zoom}) => {
// console.log('zoom', zoom);
}
onExportAnnotationCommand = ({action, xfdfCommand}) => {
console.log('action', action);
console.log('xfdfCommand', xfdfCommand);
}
setStampImageData = ({annotationId, pageNumber, stampImageDataUrl}) => {
annotationID = '75911d3a-f1fa-7a4f-8137-5885e3a4c4ae',
pageNumber = 1,
stampImageData = 'https://media.sproutsocial.com/uploads/2017/02/10x-featured-social-media-image-size.png';
}
render() {
const path = "https://pdftron.s3.amazonaws.com/downloads/pl/PDFTRON_about.pdf";
const myToolbar = {
[Config.CustomToolbarKey.Id]: 'myToolbar',
[Config.CustomToolbarKey.Name]: 'myToolbar',
[Config.CustomToolbarKey.Icon]: Config.ToolbarIcons.FillAndSign,
[Config.CustomToolbarKey.Items]: [Config.Tools.annotationCreateArrow, Config.Tools.annotationCreateCallout, Config.Buttons.undo]
};
return (
<DocumentView
ref={(c) => this._viewer = c}
// hideDefaultAnnotationToolbars={[Config.DefaultToolbars.Annotate]}
// annotationToolbars={[Config.DefaultToolbars.Annotate, myToolbar]}
hideAnnotationToolbarSwitcher={false}
hideTopToolbars={false}
hideTopAppNavBar={false}
document={path}
padStatusBar={true}
showLeadingNavButton={true}
leadingNavButtonIcon={Platform.OS === 'ios' ? 'ic_close_black_24px.png' : 'ic_arrow_back_white_24dp'}
onLeadingNavButtonPressed={this.onLeadingNavButtonPressed}
onDocumentLoaded={this.onDocumentLoaded}
onAnnotationChanged={this.onAnnotationChanged}
onExportAnnotationCommand={this.onExportAnnotationCommand}
onZoomChanged={this.onZoomChanged}
readOnly={false}
disabledElements={[Config.Buttons.userBookmarkListButton]}
disabledTools={[Config.Tools.annotationCreateLine, Config.Tools.annotationCreateRectangle]}
fitMode={Config.FitMode.FitPage}
layoutMode={Config.LayoutMode.Continuous}
setStampImageData = {this.setStampImageData}
openOutlineList = {true}
/>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
}
});