pdf - PDF应该如何编码?
问题描述
我正在尝试设置一个从网页生成 PDF 的 API(作为 URL 提供)。API 来自编码机器的 gotenberg。我在 Docker 上有它,它工作得很好,我无法通过使用 curl 发送的 http 请求生成 PDF(现在我只是想让它工作,所以我使用文档中提供的请求作为示例)
现在我正试图让它与我的 groovy/grails 应用程序一起工作。所以我使用java工具来提出请求。
现在这是我的问题:我得到的 PDF 文件是空白的(我的应用程序直接在我的浏览器中打开)。它确实有正确的内容,如果我用文本编辑器打开它,它不是空的,它的内容与我使用 curl 请求(不是空白)所做的几乎相同。
我 99% 确定问题出在编码上。我尝试更改 InputStreamReader 编码参数,但它没有改变任何东西。在这里我放了“X-MACROMAN”,因为 pdf 文件中的编码不是空白的,但它仍然没有改变。
这是我的代码:
static def execute(def apiURL)
{
def httpClient = HttpClients.createDefault()
// Request parameters and other properties.
def request = new HttpPost(apiURL)
MultipartEntityBuilder builder = MultipartEntityBuilder.create()
builder.addTextBody("remoteURL", 'https://google.com')
builder.addTextBody("marginTop", '0')
builder.addTextBody("marginBottom", '0')
builder.addTextBody("marginLeft", '0')
builder.addTextBody("marginRight", '0')
HttpEntity multipart = builder.build()
request.setEntity(multipart)
def response = httpClient.execute(request)
BufferedReader rd = new BufferedReader(
new InputStreamReader(response.getEntity().getContent(), "X-MACROMAN"))
StringBuffer result = new StringBuffer()
String line = ""
Boolean a = Boolean.FALSE
while ((line = rd.readLine()) != null) {
if(!a){
a = Boolean.TRUE
}
else {
result.append("\n")
}
result.append(line)
}
return result
我 99% 确定问题出在编码上。我尝试更改 InputStreamReader 编码参数,但它没有改变任何东西。在这里我放了“X-MACROMAN”,因为 pdf 文件中的编码不是空白的,但它仍然没有改变。
我说清楚了吗?那些理解的人有什么想法为什么我的 PDF 是空白的吗?