feat: 同步签约宝手机端功能到签约宝页面
- sign页面与签约宝精简版对齐:查看合同入口、AI积分区块(合同审查/我的报告/积分充值)
- 新增pages/ai/{points,review,reports}三个页面(与签约宝精简版一致)
- pages.json注册AI页面路由
This commit is contained in:
+21
@@ -0,0 +1,21 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2017 Mehmet Kozan
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
+145
@@ -0,0 +1,145 @@
|
||||
# pdf-parse
|
||||
|
||||
**Pure javascript cross-platform module to extract texts from PDFs.**
|
||||
|
||||
[](https://www.npmjs.org/package/pdf-parse)
|
||||

|
||||
[](https://mehmet-kozan.github.io/pdf-parse/)
|
||||
|
||||
## Similar Packages
|
||||
* [pdf2json](https://www.npmjs.com/package/pdf2json) buggy, no support anymore, memory leak, throws non-catchable fatal errors
|
||||
* [j-pdfjson](https://www.npmjs.com/package/j-pdfjson) fork of pdf2json
|
||||
* [pdf-parser](https://github.com/dunso/pdf-parse) buggy, no tests
|
||||
* [pdfreader](https://www.npmjs.com/package/pdfreader) using pdf2json
|
||||
* [pdf-extract](https://www.npmjs.com/package/pdf-extract) not cross-platform using xpdf
|
||||
|
||||
## Installation
|
||||
`npm install pdf-parse`
|
||||
|
||||
## Basic Usage - Local Files
|
||||
|
||||
```js
|
||||
const fs = require('fs');
|
||||
const pdf = require('pdf-parse');
|
||||
|
||||
let dataBuffer = fs.readFileSync('path to PDF file...');
|
||||
|
||||
pdf(dataBuffer).then(function(data) {
|
||||
|
||||
// number of pages
|
||||
console.log(data.numpages);
|
||||
// number of rendered pages
|
||||
console.log(data.numrender);
|
||||
// PDF info
|
||||
console.log(data.info);
|
||||
// PDF metadata
|
||||
console.log(data.metadata);
|
||||
// PDF.js version
|
||||
// check https://mozilla.github.io/pdf.js/getting_started/
|
||||
console.log(data.version);
|
||||
// PDF text
|
||||
console.log(data.text);
|
||||
|
||||
});
|
||||
```
|
||||
|
||||
## Basic Usage - HTTP
|
||||
You can use [crawler-request](https://www.npmjs.com/package/crawler-request) which uses the `pdf-parse`
|
||||
|
||||
## Exception Handling
|
||||
|
||||
```js
|
||||
const fs = require('fs');
|
||||
const pdf = require('pdf-parse');
|
||||
|
||||
let dataBuffer = fs.readFileSync('path to PDF file...');
|
||||
|
||||
pdf(dataBuffer).then(function(data) {
|
||||
// use data
|
||||
})
|
||||
.catch(function(error){
|
||||
// handle exceptions
|
||||
})
|
||||
```
|
||||
|
||||
## Extend
|
||||
* v1.0.9 and above break pagerender callback [changelog](https://gitlab.com/autokent/pdf-parse/blob/master/CHANGELOG)
|
||||
* If you need another format like json, you can change page render behaviour with a callback
|
||||
* Check out https://mozilla.github.io/pdf.js/
|
||||
|
||||
```js
|
||||
// default render callback
|
||||
function render_page(pageData) {
|
||||
//check documents https://mozilla.github.io/pdf.js/
|
||||
let render_options = {
|
||||
//replaces all occurrences of whitespace with standard spaces (0x20). The default value is `false`.
|
||||
normalizeWhitespace: false,
|
||||
//do not attempt to combine same line TextItem's. The default value is `false`.
|
||||
disableCombineTextItems: false
|
||||
}
|
||||
|
||||
return pageData.getTextContent(render_options)
|
||||
.then(function(textContent) {
|
||||
let lastY, text = '';
|
||||
for (let item of textContent.items) {
|
||||
if (lastY == item.transform[5] || !lastY){
|
||||
text += item.str;
|
||||
}
|
||||
else{
|
||||
text += '\n' + item.str;
|
||||
}
|
||||
lastY = item.transform[5];
|
||||
}
|
||||
return text;
|
||||
});
|
||||
}
|
||||
|
||||
let options = {
|
||||
pagerender: render_page
|
||||
}
|
||||
|
||||
let dataBuffer = fs.readFileSync('path to PDF file...');
|
||||
|
||||
pdf(dataBuffer,options).then(function(data) {
|
||||
//use new format
|
||||
});
|
||||
```
|
||||
|
||||
## Options
|
||||
|
||||
```js
|
||||
const DEFAULT_OPTIONS = {
|
||||
// internal page parser callback
|
||||
// you can set this option, if you need another format except raw text
|
||||
pagerender: render_page,
|
||||
// max page number to parse
|
||||
max: 0,
|
||||
//check https://mozilla.github.io/pdf.js/getting_started/
|
||||
version: 'v1.10.100'
|
||||
}
|
||||
```
|
||||
### *pagerender* (callback)
|
||||
If you need another format except raw text.
|
||||
|
||||
### *max* (number)
|
||||
Max number of page to parse. If the value is less than or equal to 0, parser renders all pages.
|
||||
|
||||
### *version* (string, pdf.js version)
|
||||
check [pdf.js](https://mozilla.github.io/pdf.js/getting_started/)
|
||||
|
||||
* `'default'`
|
||||
* `'v1.9.426'`
|
||||
* `'v1.10.100'`
|
||||
* `'v1.10.88'`
|
||||
* `'v2.0.550'`
|
||||
|
||||
>*default* uses version *v1.10.100*
|
||||
>[mozilla.github.io/pdf.js](https://mozilla.github.io/pdf.js/getting_started/#download)
|
||||
|
||||
## Test
|
||||
* `mocha` or `npm test`
|
||||
* Check [test folder](https://gitlab.com/autokent/pdf-parse/tree/master/test) and [quickstart.js](https://gitlab.com/autokent/pdf-parse/blob/master/quickstart.js) for extra usages.
|
||||
|
||||
|
||||
## License
|
||||
[MIT licensed](https://gitlab.com/autokent/pdf-parse/blob/master/LICENSE) and all it's dependencies are MIT or BSD licensed.
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
const Pdf = require('./lib/pdf-parse.js');
|
||||
module.exports = Pdf;
|
||||
|
||||
+99
@@ -0,0 +1,99 @@
|
||||
var PDFJS = null;
|
||||
|
||||
function render_page(pageData) {
|
||||
//check documents https://mozilla.github.io/pdf.js/
|
||||
//ret.text = ret.text ? ret.text : "";
|
||||
|
||||
let render_options = {
|
||||
//replaces all occurrences of whitespace with standard spaces (0x20). The default value is `false`.
|
||||
normalizeWhitespace: false,
|
||||
//do not attempt to combine same line TextItem's. The default value is `false`.
|
||||
disableCombineTextItems: false
|
||||
}
|
||||
|
||||
return pageData.getTextContent(render_options)
|
||||
.then(function(textContent) {
|
||||
let lastY, text = '';
|
||||
//https://github.com/mozilla/pdf.js/issues/8963
|
||||
//https://github.com/mozilla/pdf.js/issues/2140
|
||||
//https://gist.github.com/hubgit/600ec0c224481e910d2a0f883a7b98e3
|
||||
//https://gist.github.com/hubgit/600ec0c224481e910d2a0f883a7b98e3
|
||||
for (let item of textContent.items) {
|
||||
if (lastY == item.transform[5] || !lastY){
|
||||
text += item.str;
|
||||
}
|
||||
else{
|
||||
text += '\n' + item.str;
|
||||
}
|
||||
lastY = item.transform[5];
|
||||
}
|
||||
//let strings = textContent.items.map(item => item.str);
|
||||
//let text = strings.join("\n");
|
||||
//text = text.replace(/[ ]+/ig," ");
|
||||
//ret.text = `${ret.text} ${text} \n\n`;
|
||||
return text;
|
||||
});
|
||||
}
|
||||
|
||||
const DEFAULT_OPTIONS = {
|
||||
pagerender: render_page,
|
||||
max: 0,
|
||||
//check https://mozilla.github.io/pdf.js/getting_started/
|
||||
version: 'v1.10.100'
|
||||
}
|
||||
|
||||
async function PDF(dataBuffer, options) {
|
||||
|
||||
let ret = {
|
||||
numpages: 0,
|
||||
numrender: 0,
|
||||
info: null,
|
||||
metadata: null,
|
||||
text: "",
|
||||
version: null
|
||||
};
|
||||
|
||||
if (typeof options == 'undefined') options = DEFAULT_OPTIONS;
|
||||
if (typeof options.pagerender != 'function') options.pagerender = DEFAULT_OPTIONS.pagerender;
|
||||
if (typeof options.max != 'number') options.max = DEFAULT_OPTIONS.max;
|
||||
if (typeof options.version != 'string') options.version = DEFAULT_OPTIONS.version;
|
||||
if (options.version == 'default') options.version = DEFAULT_OPTIONS.version;
|
||||
|
||||
PDFJS = PDFJS ? PDFJS : require(`./pdf.js/${options.version}/build/pdf.js`);
|
||||
|
||||
ret.version = PDFJS.version;
|
||||
|
||||
// Disable workers to avoid yet another cross-origin issue (workers need
|
||||
// the URL of the script to be loaded, and dynamically loading a cross-origin
|
||||
// script does not work).
|
||||
PDFJS.disableWorker = true;
|
||||
let doc = await PDFJS.getDocument(dataBuffer);
|
||||
ret.numpages = doc.numPages;
|
||||
|
||||
let metaData = await doc.getMetadata().catch(function(err) {
|
||||
return null;
|
||||
});
|
||||
|
||||
ret.info = metaData ? metaData.info : null;
|
||||
ret.metadata = metaData ? metaData.metadata : null;
|
||||
|
||||
let counter = options.max <= 0 ? doc.numPages : options.max;
|
||||
counter = counter > doc.numPages ? doc.numPages : counter;
|
||||
|
||||
ret.text = "";
|
||||
|
||||
for (var i = 1; i <= counter; i++) {
|
||||
let pageText = await doc.getPage(i).then(pageData => options.pagerender(pageData)).catch((err)=>{
|
||||
return "";
|
||||
});
|
||||
|
||||
ret.text = `${ret.text}\n\n${pageText}`;
|
||||
}
|
||||
|
||||
ret.numrender = counter;
|
||||
doc.destroy();
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
module.exports = PDF;
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
# check https://mozilla.github.io/pdf.js/getting_started/#download
|
||||
# just download then delete web folder and license file
|
||||
Generated
Vendored
+18538
File diff suppressed because it is too large
Load Diff
Generated
Vendored
+1
File diff suppressed because one or more lines are too long
Generated
Vendored
+45507
File diff suppressed because it is too large
Load Diff
Generated
Vendored
+1
File diff suppressed because one or more lines are too long
Generated
Vendored
+18234
File diff suppressed because it is too large
Load Diff
Generated
Vendored
+1
File diff suppressed because one or more lines are too long
Generated
Vendored
+45498
File diff suppressed because it is too large
Load Diff
Generated
Vendored
+1
File diff suppressed because one or more lines are too long
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
uniCloud-tcb/cloudfunctions/router/node_modules/pdf-parse/lib/pdf.js/v1.10.88/web/cmaps/B5pc-H.bcmap
Generated
Vendored
BIN
Binary file not shown.
uniCloud-tcb/cloudfunctions/router/node_modules/pdf-parse/lib/pdf.js/v1.10.88/web/cmaps/B5pc-V.bcmap
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
uniCloud-tcb/cloudfunctions/router/node_modules/pdf-parse/lib/pdf.js/v1.10.88/web/cmaps/CNS1-H.bcmap
Generated
Vendored
BIN
Binary file not shown.
uniCloud-tcb/cloudfunctions/router/node_modules/pdf-parse/lib/pdf.js/v1.10.88/web/cmaps/CNS1-V.bcmap
Generated
Vendored
BIN
Binary file not shown.
uniCloud-tcb/cloudfunctions/router/node_modules/pdf-parse/lib/pdf.js/v1.10.88/web/cmaps/CNS2-H.bcmap
Generated
Vendored
BIN
Binary file not shown.
uniCloud-tcb/cloudfunctions/router/node_modules/pdf-parse/lib/pdf.js/v1.10.88/web/cmaps/CNS2-V.bcmap
Generated
Vendored
+3
@@ -0,0 +1,3 @@
|
||||
àRCopyright 1990-2009 Adobe Systems Incorporated.
|
||||
All rights reserved.
|
||||
See ./LICENSEáCNS2-H
|
||||
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
+3
@@ -0,0 +1,3 @@
|
||||
àRCopyright 1990-2009 Adobe Systems Incorporated.
|
||||
All rights reserved.
|
||||
See ./LICENSEá ETen-B5-H` ^
|
||||
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
+4
@@ -0,0 +1,4 @@
|
||||
àRCopyright 1990-2009 Adobe Systems Incorporated.
|
||||
All rights reserved.
|
||||
See ./LICENSE!!�º]aX!!]`�21�> �p�z�$]‚�"R‚d�-Uƒ7�*„
|
||||
4„%�+ „Z „{�/…%…<�9K…b�1]†.�"‡‰`]‡,�"]ˆ
|
||||
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user