Rails Prawn случайным образом генерирует поврежденные файлы PDF - PullRequest
0 голосов
/ 17 апреля 2020

У меня проблема с жемчужиной Rails. Это случается очень редко и кажется совершенно случайным. Когда это происходит, генерируемый PDF-файл содержит весь искаженный текст. Там нет сообщения об ошибке или что-то, только то, что выглядит как PDF с кодом в нем вместо отформатированного текста, который он должен иметь.

Если я пытаюсь восстановить PDF, проблема будет продолжаться, пока я не изменю содержимое PDF-файл (путем изменения значения в поле формы, например, с помощью переключателя Да / Нет или изменения ввода текста в текстовом поле). Затем, когда я снова сгенерирую файл, проблема исчезнет, ​​и PDF будет отформатирован правильно. И если я затем изменю поля формы обратно туда, где они были ранее (когда я получал сообщение об ошибке), я больше не получаю сообщение об ошибке, и оно работает нормально.

Я сохраняю файл в Active Сохраните и зашифруйте его с помощью гема Lockbox, а затем отобразите предварительный просмотр файла в iframe.

Вот мой код:

profile_controller.rb

def generate_preview
        @profile = current_user.profile
        @profile.generate_file(@profile)
        redirect_to profile_preview_path
end

def show_file
        @profile = current_user.profile
        @file = @profile.file
        send_data @file.download, filename: "Profile-#{@profile.user.name}.pdf", type: @file.content_type, :disposition => :inline
    end

profile. rb

has_one_attached :file
encrypts_attached :file

def generate_file(profile)
    @profile = profile
    @pdf_file = ProfilePdf.new(@profile)
    io = StringIO.new @pdf_file.render

    file.attach(io: io, content_type: "application/pdf", filename: 'Profile.pdf')
    file.analyze
end

Предварительный просмотр. html .erb

<div class="col-md iframe-preview-column">
            <iframe src=<%= profiles_show_file_path + "#toolbar=0" %> class="iframe-preview" style="border: none;"> </iframe>
        </div>

Любая помощь будет принята с благодарностью!

...