Как PDF должен быть закодирован? - PullRequest
0 голосов
/ 23 мая 2019

Я пытаюсь настроить API, который генерирует PDF из веб-страницы (предоставляется в виде URL).API - это Готенберг из машины кодирования.У меня он есть в Docker, он работает просто отлично, я не могу сгенерировать PDF с помощью http-запроса, отправляемого с помощью curl (сейчас я просто пытаюсь заставить его работать, поэтому я использую запрос, приведенный в качестве примера в документации)

Теперь я пытаюсь заставить его работать с моим приложением 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-файлы пусты?

...