mirror of
https://github.com/Frooodle/Stirling-PDF.git
synced 2025-04-12 01:17:15 +02:00
Fixed bug in file conversion on node, cleaned up warnings
This commit is contained in:
parent
57415bea85
commit
667583984f
@ -4,7 +4,7 @@ const PORT = 8000;
|
|||||||
|
|
||||||
// server-node: backend api
|
// server-node: backend api
|
||||||
import api from './routes/api/api-controller';
|
import api from './routes/api/api-controller';
|
||||||
app.use("/api/", api);
|
app.use("/api", api);
|
||||||
|
|
||||||
// serve
|
// serve
|
||||||
app.listen(PORT, () => {
|
app.listen(PORT, () => {
|
||||||
|
@ -15,12 +15,19 @@ export async function fileToPdf(byteArray: Uint8Array, filename: string): Promis
|
|||||||
await writeBytesToFile(srcFile, byteArray);
|
await writeBytesToFile(srcFile, byteArray);
|
||||||
|
|
||||||
const messages = await runLibreOfficeCommand(randFolderName, ["--headless","--convert-to","pdf",srcFile,"--outdir",tempDir]);
|
const messages = await runLibreOfficeCommand(randFolderName, ["--headless","--convert-to","pdf",srcFile,"--outdir",tempDir]);
|
||||||
const lastMessage = messages[messages.length-1]
|
|
||||||
const outputFilePath = lastMessage.split(" -> ")[1].split(".pdf")[0]+".pdf";
|
const files = fs.readdirSync(tempDir).filter(file => file.endsWith(".pdf"));
|
||||||
const outputFileName = path.parse(outputFilePath).base;
|
if (files.length > 1) {
|
||||||
|
console.warn("Ambiguous file to pdf outputs: Returning first result", files);
|
||||||
|
} else if (files.length == 0) {
|
||||||
|
throw new Error("File to pdf failed: no output files found. Messages: "+messages);
|
||||||
|
}
|
||||||
|
|
||||||
|
const outputFileName = files[0];
|
||||||
|
const outputFilePath = path.join(tempDir, outputFileName);
|
||||||
const outputBytes = await readBytesFromFile(outputFilePath);
|
const outputBytes = await readBytesFromFile(outputFilePath);
|
||||||
|
|
||||||
fs.rmdirSync(tempDir);
|
fs.rmdirSync(tempDir, {recursive: true});
|
||||||
|
|
||||||
return new PdfFile(outputFileName, outputBytes, RepresentationType.Uint8Array);
|
return new PdfFile(outputFileName, outputBytes, RepresentationType.Uint8Array);
|
||||||
}
|
}
|
||||||
|
@ -19,17 +19,17 @@ export class PdfFile {
|
|||||||
get uint8Array() : Promise<Uint8Array> {
|
get uint8Array() : Promise<Uint8Array> {
|
||||||
switch (this.representationType) {
|
switch (this.representationType) {
|
||||||
case RepresentationType.Uint8Array:
|
case RepresentationType.Uint8Array:
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve) => {
|
||||||
resolve(this.representation as Uint8Array);
|
resolve(this.representation as Uint8Array);
|
||||||
});
|
});
|
||||||
case RepresentationType.PDFLibDocument:
|
case RepresentationType.PDFLibDocument:
|
||||||
return new Promise(async (resolve, reject) => {
|
return new Promise(async (resolve) => {
|
||||||
var uint8Array = await (this.representation as PDFLibDocument).save();
|
var uint8Array = await (this.representation as PDFLibDocument).save();
|
||||||
this.uint8Array = uint8Array;
|
this.uint8Array = uint8Array;
|
||||||
resolve(uint8Array);
|
resolve(uint8Array);
|
||||||
});
|
});
|
||||||
case RepresentationType.PDFJSDocument:
|
case RepresentationType.PDFJSDocument:
|
||||||
return new Promise(async (resolve, reject) => {
|
return new Promise(async (resolve) => {
|
||||||
var uint8Array = await (this.representation as PDFJSDocument).getData();
|
var uint8Array = await (this.representation as PDFJSDocument).getData();
|
||||||
this.uint8Array = uint8Array;
|
this.uint8Array = uint8Array;
|
||||||
resolve(uint8Array);
|
resolve(uint8Array);
|
||||||
@ -47,11 +47,11 @@ export class PdfFile {
|
|||||||
get pdfLibDocument() : Promise<PDFLibDocument> {
|
get pdfLibDocument() : Promise<PDFLibDocument> {
|
||||||
switch (this.representationType) {
|
switch (this.representationType) {
|
||||||
case RepresentationType.PDFLibDocument:
|
case RepresentationType.PDFLibDocument:
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve) => {
|
||||||
resolve(this.representation as PDFLibDocument);
|
resolve(this.representation as PDFLibDocument);
|
||||||
});
|
});
|
||||||
default:
|
default:
|
||||||
return new Promise(async (resolve, reject) => {
|
return new Promise(async (resolve) => {
|
||||||
var uint8Array = await this.uint8Array;
|
var uint8Array = await this.uint8Array;
|
||||||
var pdfLibDoc = await PDFLibDocument.load(uint8Array, {
|
var pdfLibDoc = await PDFLibDocument.load(uint8Array, {
|
||||||
updateMetadata: false,
|
updateMetadata: false,
|
||||||
@ -69,11 +69,11 @@ export class PdfFile {
|
|||||||
get pdfJsDocument() : Promise<PDFJSDocument> {
|
get pdfJsDocument() : Promise<PDFJSDocument> {
|
||||||
switch (this.representationType) {
|
switch (this.representationType) {
|
||||||
case RepresentationType.PDFJSDocument:
|
case RepresentationType.PDFJSDocument:
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve) => {
|
||||||
resolve(this.representation as PDFJSDocument);
|
resolve(this.representation as PDFJSDocument);
|
||||||
});
|
});
|
||||||
default:
|
default:
|
||||||
return new Promise(async (resolve, reject) => {
|
return new Promise(async (resolve) => {
|
||||||
const pdfjsDoc = await PDFJS.getDocument(await this.uint8Array).promise;
|
const pdfjsDoc = await PDFJS.getDocument(await this.uint8Array).promise;
|
||||||
this.pdfJsDocument = pdfjsDoc;
|
this.pdfJsDocument = pdfjsDoc;
|
||||||
resolve(pdfjsDoc);
|
resolve(pdfjsDoc);
|
||||||
@ -126,7 +126,7 @@ export class PdfFile {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export const PdfFileSchema = Joi.any().custom((value, helpers) => {
|
export const PdfFileSchema = Joi.any().custom((value) => {
|
||||||
if (!(value instanceof PdfFile)) {
|
if (!(value instanceof PdfFile)) {
|
||||||
throw new Error('value is not a PdfFile');
|
throw new Error('value is not a PdfFile');
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user