aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBob Zeleznik <zzzman@gmail.com>2019-09-30 14:02:04 -0400
committerBob Zeleznik <zzzman@gmail.com>2019-09-30 14:02:04 -0400
commit2b0840202933ac554a9dc79304203ada38551c0f (patch)
tree3f2573ce53f39eb6cc8b4024d75f2a8335239219 /src
parentd7f515f32de780884774e7bbdcc1cfe78733af45 (diff)
parent205f29bf7379f631027022bca968e3c3bee4278d (diff)
Merge branch 'master' of https://github.com/browngraphicslab/Dash-Web
Diffstat (limited to 'src')
-rw-r--r--src/server/PdfTypes.ts21
-rw-r--r--src/server/index.ts24
2 files changed, 32 insertions, 13 deletions
diff --git a/src/server/PdfTypes.ts b/src/server/PdfTypes.ts
new file mode 100644
index 000000000..e87f08e1d
--- /dev/null
+++ b/src/server/PdfTypes.ts
@@ -0,0 +1,21 @@
+export interface ParsedPDF {
+ numpages: number;
+ numrender: number;
+ info: PDFInfo;
+ metadata: PDFMetadata;
+ version: string; //https://mozilla.github.io/pdf.js/getting_started/
+ text: string;
+}
+
+export interface PDFInfo {
+ PDFFormatVersion: string;
+ IsAcroFormPresent: boolean;
+ IsXFAPresent: boolean;
+ [key: string]: any;
+}
+
+export interface PDFMetadata {
+ parse(): void;
+ get(name: string): string;
+ has(name: string): boolean;
+} \ No newline at end of file
diff --git a/src/server/index.ts b/src/server/index.ts
index 0ee00f516..a265853ff 100644
--- a/src/server/index.ts
+++ b/src/server/index.ts
@@ -51,6 +51,8 @@ import * as qs from 'query-string';
import { Opt } from '../new_fields/Doc';
import { DashUploadUtils } from './DashUploadUtils';
import { BatchedArray, TimeUnit } from 'array-batcher';
+import { ParsedPDF } from "./PdfTypes";
+import { reject } from 'bluebird';
const download = (url: string, dest: fs.PathLike) => request.get(url).pipe(fs.createWriteStream(dest));
let youtubeApiKey: string;
@@ -585,11 +587,15 @@ class NodeCanvasFactory {
const pngTypes = [".png", ".PNG"];
const jpgTypes = [".jpg", ".JPG", ".jpeg", ".JPEG"];
const uploadDirectory = __dirname + "/public/files/";
+const pdfDirectory = uploadDirectory + "text";
+DashUploadUtils.createIfNotExists(pdfDirectory);
+
interface FileResponse {
name: string;
path: string;
type: string;
}
+
// SETTERS
app.post(
RouteStore.upload,
@@ -603,19 +609,11 @@ app.post(
const { type, path: location, name } = files[key];
const filename = path.basename(location);
if (filename.endsWith(".pdf")) {
-
- var filePath = uploadDirectory + filename;
-
- let dataBuffer = fs.readFileSync(filePath);
-
- pdf(dataBuffer).then(async function (data: any) {
- // // number of pages - data.numpages
- // // number of rendered pages - data.numrender
- // // PDF info - data.info
- // // PDF metadata - data.metadata
- // // PDF.js version - data.version // check https://mozilla.github.io/pdf.js/getting_started/
- // // PDF text - data.text
- fs.createWriteStream(uploadDirectory + "text/" + filename.substring(0, filename.length - ".pdf".length) + ".txt").write(data.text);
+ let dataBuffer = fs.readFileSync(uploadDirectory + filename);
+ const result: ParsedPDF = await pdf(dataBuffer);
+ await new Promise<void>(resolve => {
+ const path = pdfDirectory + "/" + filename.substring(0, filename.length - ".pdf".length) + ".txt";
+ fs.createWriteStream(path).write(result.text, error => error === null ? resolve() : reject(error));
});
} else {
await DashUploadUtils.UploadImage(uploadDirectory + filename, filename).catch(() => console.log(`Unable to process ${filename}`));