Я работаю над приложением 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
Любой ответ на это был бы очень признателен, поскольку я не могу найти помощь в Интернете с этой конкретной проблемой.
Извиняюсь, но где я запускаю команду 'll public/images/Statement /' from. Также имеет значение, какую версию rails я использую, поскольку я слышал ссылку на RAILS_ROOT и rails.root. – user3385136
Команда 'll' отобразит содержимое каталога, запустит его из консоли вашего производственного сервера,« Rails.root »с Rails 2.3.6. –
Файл определенно существует. Это может быть проблема с брандмауэром или системой. Если бы вы видели упоминание о создании PDF с ограничением изображений в системе, но не понимаете, почему это так. В качестве теста я могу добавить изображение, например. http://riverboatsmusic.com.au/wp-content/uploads/2014/09/1shuu4q3.wizardchan.test_.png с абсолютным путем. Если да, то как бы это указать? – user3385136