我的lambda函数遇到了问题。当我在Postman中运行它时,PDF不会显示。我还尝试了“发送和下载”选项,但它说文件没有有效的格式。有什么建议吗?
我对这个lambda函数有一个问题:
const { PDFDocument } = require('pdf-lib');
exports.getAll = async (req, res) => {
try {
const htmlContent = '<html><body><h1>Hello World</h1></body></html>';
const pdfDoc = await PDFDocument.create();
const page = pdfDoc.addPage();
const { width, height } = page.getSize();
await page.drawText(htmlContent, { x: 50, y: height - 100 });
const pdfBytes = await pdfDoc.save();
res.setHeader('Content-Type', 'application/pdf');
res.setHeader('Content-Disposition', 'inline; filename=hello_world.pdf');
res.status(200).send(pdfBytes);
} catch (error) {
console.error('Error:', error);
res.status(500).json({ error: 'Internal Server Error' });
}
};
字符串
当在Postman中运行它时,PDF不会显示。我也尝试了“发送和下载”选项,但它显示文件没有有效的格式。有什么建议吗?
我的package.json:
{
"name": "formularios-pdf",
"version": "1.0.0",
"description": "description",
"main": "index.js",
"author": "author",
"license": "ISC",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"dependencies": {
"aws-serverless-express": "^3.4.0",
"axios": "^0.24.0",
"chrome-aws-lambda": "^10.1.0",
"express": "^4.17.1",
"moment": "^2.29.4",
"mysql2": "^2.3.3",
"pdf-lib": "^1.17.1"
}
}
型
Postman :
的数据
1条答案
按热度按时间nafvub8i1#
有几件事你做得不对:
1.函数params有
(event, context, callback)
而不是(req, res)
。saveAsBase64
。1.如果你有API网关连接到它。那么你将不得不启用二进制媒体类型。
1.还要注意
drawText
方法接受普通字符串而不是HTML字符串。虽然它可以工作,但它会呈现整个HTML字符串。演示示例:
字符串
启用二进制媒体类型
1.后藤您的API Jmeter 板
1.从左侧面板,后藤转到API设置
1.在“Binary media types(二进制媒体类型)”下,选择
Manage Media Types
1.添加“/”以启用所有二进制支持。您可以根据自己的需求限制它。
1.从左侧面板转到后藤资源,从右上方部署API。
注意:这可能需要一些时间来反映步骤5的变化。对我来说花了5分钟。
如果你使用的是函数URL,那么只需要函数部署就足够了。