Проблемы с javascript PDFkit

Я изучал возможность использования 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
  },
  ...
}

15
задан klew 25 February 2011 в 10:03
поделиться