gpt4 book ai didi

swift - 在 Ubuntu 上使用 Swift 创建 PDF 文件

转载 作者:行者123 更新时间:2023-11-28 07:48:38 25 4
gpt4 key购买 nike

我有一个在 Ubuntu 上运行的 Swift/Vapor 应用程序。它响应并返回 JSON,即纯 RESTful 服务器。

我希望添加一些可以生成 PDF 文件的功能,然后将其发送回前端(网络浏览器)以响应某些请求。

谁能推荐一种在服务器上创建 PDF 文件以发回的最佳方法?

最佳答案

我试过 wkhtmltopdf,但无法令人满意地工作。我现在在 macOS 和 Ubuntu(在树莓派上)上都使用 weasyprint。

我使用这个函数:

 func generateWeasy(html: Bytes) -> Bytes {
// Fetch a PDF from WeasyPrint and return it
let weasy = Process()
let input = Pipe()
let output = Pipe()
let htmlData = Data(html)
weasy.standardInput = input
weasy.standardOutput = output
weasy.launchPath = "/usr/local/bin/weasyprint"
weasy.arguments = ["-f", "pdf", "-", "-"]
weasy.launch()
input.fileHandleForWriting.write(htmlData)
input.fileHandleForWriting.closeFile()
return output.fileHandleForReading.readDataToEndOfFile().makeBytes()
}

然后为了将 View 呈现为 PDF,我在路由中使用标准叶:

html = try self.view.make("pdfCertificate", settings).makeBytes()

然后我修改响应 header 并生成 PDF:

let response = Response(status: .ok, body: .data( self.generateWeasy( html:html )))
response.headers["Content-Disposition"] = "filename=\"" + title + " - Certificates.pdf\""
return response

关于swift - 在 Ubuntu 上使用 Swift 创建 PDF 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50293040/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com