如何在 back4app 解析服务器上处理 pdf 文件
Posted
技术标签:
【中文标题】如何在 back4app 解析服务器上处理 pdf 文件【英文标题】:How to work with pdf files on back4app parse server 【发布时间】:2021-10-28 09:17:17 【问题描述】:我一直在探索 back4app 解析服务器。我正在寻找 pdf 文件的文档。我正在尝试从其云功能在 back4app 解析服务器上生成一些 pdf 文件。我没有看到任何文档。有人会指导我找到它吗,我们将不胜感激。 编辑: 那里的 pdf 创建者库要求输出路径,但在 back4app 中我们无法提前访问路径。我们创建传递数据的新文件,然后将其保存到对象。我们如何实现订单。
【问题讨论】:
Back4App 云代码本质上是一个 node.js 应用。您可以安装任何处理 pdf 创建的 npm 模块,并使用此模块从云代码创建您的 pdf。例如,我发现这个可能会有所帮助:npmjs.com/package/pdf-creator-node @DaviMacêdo 我们没有获得对文件容器存储的显式访问权限。当我们执行new parse.file(filename,encoding/data
时,它会返回一些响应,我们可以将这个创建的文件保存到我们想要的对象中。我不明白也找不到任何文件,例如图像、pdf、文本或其他文件,我们需要为新文件发送什么样的数据和编码/数据,以及将其保存到某个对象的编码/数据类型。
它会通过扩展名自动识别文件类型,但如果需要,您也可以传递 mime 类型。我不清楚你需要实现什么。您想在云代码上创建一个 pdf 文件吗?还是只存储 pdf 文件?
@DaviMacêdo 是的,我想在云上创建一个 pdf 文件,但我不明白如何保存这个文件。首先我们需要使用新的 parse.file 创建一个文件,我应该传递什么参数并将它保存到对象我应该传递什么参数。非常感谢您的回复。
@bikashamit 您看过本指南吗? docs.parseplatform.org/js/guide/#files
【参考方案1】:
我知道如何完成它,谢谢@Davi macedo。但是有一些问题,我在本地(根)云代码创建了pdf,每次删除它都是令人羡慕的。这可能是更多请求的问题。 有人可以改进一点。会很好。 这是我的代码。 我已经使用 pdf-creator-node 来创建 pdf。
var pdf = require("pdf-creator-node");
var fs = require("fs")
var path = require('path')
const pdf2base64 = require('pdf-to-base64');
Parse.Cloud.define("pdf", async (req) =>
//creating pdf
// var html = fs.readFileSync("template.html", "utf8");
var html = fs.readFileSync(path.resolve(__dirname, 'template.html'),
encoding: 'utf-8' );
var options =
format: "A3",
orientation: "portrait",
border: "10mm",
header:
height: "45mm",
contents: '<div style="text-align: center;">Author: Shyam Hajare</div>'
,
footer:
height: "28mm",
contents:
first: 'Cover page',
2: 'Second page', // Any page number is working. 1-based index
default: '<span style="color: #444;">page</span>/<span>pages</span>', // fallback value
last: 'Last Page'
;
var users = [
name: "Shyam",
age: "26",
,
name: "Navjot",
age: "26",
,
name: "Vitthal",
age: "26",
,
];
var document =
html: html,
data:
users: users,
,
path: path.resolve(__dirname, './pdfs', 'my_file.pdf'),//using path is necessary
type: "",
;
return pdf
.create(document, options)
.then((res) =>
return pdf2base64(path.resolve(__dirname, "/usr/src/app/data/cloud /pdfs/my_file.pdf")) //this path /usr/src/app/data/cloud/pdfs still mystery to me.
.then(
(response) =>
// console.log(response); //cGF0aC90by9maWxlLmpwZw==
const saveFiles = async () =>
//creating file
const parseFile = new Parse.File('pdfFile.pdf',base64:response);
// console.log(parseFile)
//saving file
const responseFile = await parseFile.save();
const Document = Parse.Object.extend('Document');
const document = new Document();
//saving it to object.
document.set('document', responseFile);
await document.save();
saveFiles();
)
.catch(
(error) =>
console.log(error); //Exepection error....
)
console.log(res);
)
.catch((error) =>
console.error(error);
);
);
【讨论】:
云根目录下的pdf文件每次都被覆盖就好了。我应该和它一起去吗?以上是关于如何在 back4app 解析服务器上处理 pdf 文件的主要内容,如果未能解决你的问题,请参考以下文章
back4app 解析,如何将用户对象 ID 应用到另一个类指针中