rl-react-intellix-pdf
Version:
Intelllex React PDF
203 lines (151 loc) • 6.28 kB
JavaScript
;
exports.__esModule = true;
exports["default"] = exports.PdfPages = void 0;
var _react = _interopRequireDefault(require("react"));
var _pdf_viewer = require("pdfjs-dist/web/pdf_viewer");
require("./index.scss");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
if (_pdf_viewer.PDFJS.workerSrc != "undefined") {
window.PDFJS.workerSrc = "https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.0.338/pdf.worker.js";
} // The workerSrc property shall be specified.
//window.PDFJS.workerSrc = '../../../node_modules/pdfjs-dist/build/pdf.worker.js';
// if (!PDFJS.workerSrc && typeof document !== "undefined") {
// PDFJS.workerSrc = (function () {
// "use strict";
// let scriptTagContainer =
// document.body || document.getElementsByTagName("head")[0];
// let pdfjsSrc = scriptTagContainer.lastChild.src;
// return pdfjsSrc && pdfjsSrc.replace(/\.js$/i, ".worker.js");
// })();
// PDFJS.workerSrc = "/static/js/pdf.worker.js";
// console.log("PDFJS.workerSrc", PDFJS.workerSrc);
// }
var SCROLL_TOP_PADDING = 200;
var PdfPages = /*#__PURE__*/function (_React$Component) {
_inheritsLoose(PdfPages, _React$Component);
function PdfPages(_props) {
var _this;
_this = _React$Component.call(this, _props) || this;
_defineProperty(_assertThisInitialized(_this), "setupViewer", function () {
_pdf_viewer.PDFJS.disableTextLayer = false;
_pdf_viewer.PDFJS.externalLinkTarget = _pdf_viewer.PDFJS.LinkTarget.PARENT; // PDF Link Service
_this._pdfLinkService = new _pdf_viewer.PDFJS.PDFLinkService({
eventBus: _this._eventBus
}); // PDF Viewer
_this._pdfViewer = new _pdf_viewer.PDFJS.PDFViewer({
container: document.getElementById("pdf-pages"),
removePageBorders: true,
linkService: _this._pdfLinkService
});
_this._pdfLinkService.setViewer(_this._pdfViewer); // PDF Find Controller
_this._pdfFindController = new _pdf_viewer.PDFJS.PDFFindController({
pdfViewer: _this._pdfViewer
});
_this._pdfViewer.setFindController(_this._pdfFindController); // Set external Refs
_this.props.setPdfViewer(_this._pdfViewer);
_this.props.setFindController(_this._pdfFindController);
});
_defineProperty(_assertThisInitialized(_this), "onScrollCheck", function () {
if (_this._pdfViewer) {
var _this$docViewer = _this.docViewer,
scrollTop = _this$docViewer.scrollTop,
scrollHeight = _this$docViewer.scrollHeight;
var currentPage = Math.ceil((scrollTop + SCROLL_TOP_PADDING) / (scrollHeight / _this._pdf.numPages));
_this.props.setCurrentPage(currentPage);
}
});
_defineProperty(_assertThisInitialized(_this), "stream", function (props) {
var url = props.url;
if (url) {
var xhr = new XMLHttpRequest();
xhr.open("GET", url);
xhr.responseType = "arraybuffer";
xhr.onprogress = function (e) {
if (e.lengthComputable) {
var percent = Math.round(e.loaded / e.total * 100);
_this.props.updateProgressBar(percent);
}
};
xhr.onload = function () {
if (xhr.status === 200) {
var _ab = xhr.response;
_this.pdf = _ab;
_this.loadPDF(_ab);
} else {
console.error("Error while requesting", url);
}
};
xhr.onerror = function () {
console.error("Error while requesting", url);
};
xhr.send();
}
});
_defineProperty(_assertThisInitialized(_this), "loadPDF", function () {
var src = _this.pdf;
if (!src) {
return;
}
_pdf_viewer.PDFJS.getDocument(src).then(function (pdf) {
console.log("pdf", pdf);
_this._pdf = pdf;
_this.props.setPdf(_this._pdf);
_this.update();
}, function (err) {
console.log("errr", err);
var error = err.name || err.toString(); // this.pdfLoadError.emit(error);
});
});
_defineProperty(_assertThisInitialized(_this), "zoom", function (scale) {
_this._zoom = scale;
_this._pdfViewer.currentScale = _this._zoom;
});
_this.state = {
pdf: ""
};
return _this;
}
var _proto = PdfPages.prototype;
_proto.componentDidMount = function componentDidMount() {
this.setupViewer();
this.stream(this.props);
this.docViewer = document.getElementById("viewer-container");
this.docViewer.addEventListener("scroll", this.onScrollCheck);
};
_proto.componentWillReceiveProps = function componentWillReceiveProps(newProps) {
if (newProps.scale && newProps.scale !== this.props.scale) {
this.zoom(newProps.scale);
}
if (newProps.url !== this.props.url) {
this.setupViewer();
this.stream(newProps);
}
};
_proto.componentWillUnmount = function componentWillUnmount() {
if (this.state.pdf != null) {
var pdf = this.state.pdf;
pdf && pdf.destroy();
this.documentPromise && this.documentPromise.cancel();
this.docViewer.removeEventListener("scroll", this.onScrollCheck);
}
};
_proto.update = function update() {
if (this._pdfViewer) {
this._pdfViewer.setDocument(this._pdf);
}
if (this._pdfLinkService) {
this._pdfLinkService.setDocument(this._pdf, null);
}
this.render();
};
_proto.render = function render() {
return /*#__PURE__*/_react["default"].createElement("div", null);
};
return PdfPages;
}(_react["default"].Component);
exports.PdfPages = PdfPages;
var _default = PdfPages;
exports["default"] = _default;