【问题标题】:How to work with pdf files on back4app parse server如何在 back4app 解析服务器上处理 pdf 文件
【发布时间】: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

标签: parse-platform parse-server back4app


【解决方案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文件每次都被覆盖就好了。我应该和它一起去吗?
猜你喜欢
  • 2021-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多