Я изучал возможность использования PDFKit для создания отчетов в формате pdf для железной дороги 3, над которым я работаю. В основном, если я использую PDFKit в качестве промежуточного программного обеспечения, страница в приложении красиво отображается в формате PDF, включая графики, сгенерированные javascript.
Однако я хочу использовать другой макет для отчетов в формате PDF, который удаляет любые из боковая панель или детали навигации, поэтому вместо использования промежуточного программного обеспечения я экспериментировал, добавляя следующее к соответствующему действию контроллера
format.pdf {
html = render_to_string(:action => "show.html.erb", :layout => "report.html.erb")
kit = PDFKit.new(html)
kit.stylesheets << "#{Rails.root}/public/stylesheets/application.css"
send_data kit.to_pdf, :filename => "file.pdf", :type => :pdf}
(я также пробовал более аккуратный вариант извлечения этой функциональности из параметра рендеринга, как описывает Кац здесь , но логика и проблема те же)
Это определенно решает мою проблему с макетом, но похоже, что ни один из javascripts приложения не запускается, и графики больше не отображаются. Я взглянул на исходный код PDFKit, но не смог обнаружить каких-либо серьезных различий в способах создания PDF-файлов.
Я все еще нахожу свои ноги во многих вещах с рельсами, поэтому я уверен, что это, вероятно, что-то довольно очевидное, что смотрит мне в лицо. | xxxxxxxxxx #### | | xxxxxxxxxx #### | | xxxxxxxxxx #### | | xxxxxxxxxx #### | ---------------- ...
Как настроить awesome так, чтобы новое приложение запускалось с двумя окнами, выровненными следующим образом:
----------------
|xxxxxxxxxx####|
|xxxxxxxxxx####|
|xxxxxxxxxx####|
|xxxxxxxxxx####|
----------------
где «x» - это, например, окно разговора в pidgin, а «#» - окно списка друзей.
В общем, я бы хотел хотелось бы указать ширину правого окна и поместить его с правой стороны (развернуть по вертикали), а другое окно должно занять оставшееся пространство.
У меня уже есть почти рабочий код, но он ведет себя странно (он настраивает все правильно для pidgin, но не для gimp и v_sim, и иногда без какой-либо известной мне причины он меняет геометрию левого окна. Или когда я запускаю приложение (v_sim), это не так t размещен в правильных положениях и не развернут по вертикали, но когда я перезапускаю awesome, он размещает его правильно. Итак, я предполагаю, что это приложение что-то меняет при запуске.
Вот код, который я использую сейчас:
awful.rules.rules = {
...
{ rule = { class = "Pidgin", role = "buddy_list" },
properties = {
floating = true
},
callback = function( c )
local w_area = screen[ c.screen ].workarea
local winwidth = 340
c:struts( { right = winwidth } )
c:geometry( { x = w_area.width - winwidth, width = winwidth, y = w_area.y, height = w_area.height } )
end
},
{ rule = { class = "Pidgin", role = "conversation" },
properties = {
floating = true,
x = 0,
maximized_vertical = true,
maximized_horizontal = true
},
callback = awful.client.setslave
},
...
}