2015-05-14 16 views
0

Я работаю над приложением Ruby on Rails, посредством которого клиенты могут щелкнуть ссылку PDF, в которой будет отображаться их утверждение в формате PDF. Я использую драгоценный камень «Креветка» для создания PDF-файла. Все это отлично работает на моей локальной машине, однако, когда я загружаю его в живую среду при нажатии на ссылку PDF, ошибка «Не удалось загрузить документ PDF». Я локализовал эту проблему для изображений, отображаемых в PDF, но я не знаю, почему возникают проблемы.Креветка - Не удалось загрузить документ в формате PDF

require 'prawn' 

class StatementPDF < Prawn::Document 
    BOX_MARGIN = 36 
    # Additional indentation to keep the line measure with a reasonable size 
    INNER_MARGIN = 30 
    # Vertical Rhythm settings 
    RHYTHM = 10 
    LEADING = 2 
    # Colors 
    BLACK  = "000000" 
    LIGHT_GRAY = "F2F2F2" 
    GRAY  = "DDDDDD" 
    DARK_GRAY = "333333" 
    BROWN  = "A4441C" 
    ORANGE  = "F28157" 
    LIGHT_GOLD = "FBFBBE" 
    DARK_GOLD = "EBE389" 
    BLUE  = "0000D0" 
    GREY  = "CCCCCC" 

    def initialize(title, subtitle, rows) 
    @rows = rows 
    @title = title 
    @subtitle = subtitle 

    super(page_size: 'A4') do 
     define_grid(columns: 4, rows: 16, gutter: 10) 

     header 

     transactions_table 

     footer 
    end 
    end 

    private 

    def header 
    grid([0,0],[2,0]).bounding_box do 
    image 'public/images/Statement/logo.png', width: 110 
     font_size 10 
     text 'Company Name', font_weight: 'bold' 
     font_size 9 
     text 'Company Address' 
     move_down 20 
     text 'Phone:' 
     text 'Fax:' 
    end 
    #font 'public/fonts/interstate_light_cond-webfont.ttf' 

    grid([0,2],[1,3]).bounding_box do 
     font_size(20) 
     text @title, color: '#0044AA', :align => :right 
     font_size(14) 
     text @subtitle, color: '#0044AA', :align => :right, :valign => :bottom 
    end 

# grid([2,0],[2,3]).bounding_box do 
# font_size(14) 
# text @balance, color: '#0044AA', :align => :right, :valign => :bottom 
# end 
    font_size(12) 
    end 

    def footer 
    grid([15,1],[15,2]).bounding_box do 
     text_box 'Powered by ', color: "#999", :align => :center, :valign => :bottom 
    end 
    end 

    def transactions_table 
    grid([3,0], [14,3]).bounding_box do 
     data = [%w(Date Description Amount)] 
     data += @rows.map{|r| [r.value_date, r.description, r.amount]} 
     options = { header: true, width: 520, 
      column_widths: {0 => 100, 2 => 100}, 
      row_colors: ['EEEEEE', 'FFFFFF']} 
     table(data, options) do 
     cells.padding  = 5 
     cells.border_width = 0.5 
     cells.border_color = BLACK 

     row(0).font_weight = 'bold' 
     row(0).border_color = BLACK 

     column(2).align = :right 
     end 
    end 
    end 
end 

Я пробовал несколько вариантов пути, но безрезультатно. Структура сайта следующая:

  • файлы
  • шрифты
  • иконки
  • изображения (в пределах это заявление папка, которая является расположение изображения я хочу использовать
  • JavaScripts
  • META-INF
  • таблицы стилей
  • WEB-INF

Любой ответ на это был бы очень признателен, поскольку я не могу найти помощь в Интернете с этой конкретной проблемой.

ответ

0

Попробуйте следующее:

  • Проверьте файл существует в файловой системе и ваше приложение имеет права на чтение его ll public/images/Statement/

  • Используйте абсолютный путь Rails.root.join('public','images','Statement','logo.png')

+0

Извиняюсь, но где я запускаю команду 'll public/images/Statement /' from. Также имеет значение, какую версию rails я использую, поскольку я слышал ссылку на RAILS_ROOT и rails.root. – user3385136

+0

Команда 'll' отобразит содержимое каталога, запустит его из консоли вашего производственного сервера,« Rails.root »с Rails 2.3.6. –

+0

Файл определенно существует. Это может быть проблема с брандмауэром или системой. Если бы вы видели упоминание о создании PDF с ограничением изображений в системе, но не понимаете, почему это так. В качестве теста я могу добавить изображение, например. http://riverboatsmusic.com.au/wp-content/uploads/2014/09/1shuu4q3.wizardchan.test_.png с абсолютным путем. Если да, то как бы это указать? – user3385136

Смежные вопросы