Проблема, генерирующая pdfs с acts_as_flying_saucer

Я использую плагин направляющих acts_as_flying_saucer для генерации PDF, но PDF не работает: я могу сохранить его хорошо, но когда я пытаюсь открыть его, я получаю это сообщение об ошибке:

Unable to open document
File type SOR File (text/plain) is not supported

Вот мой набор. Я использую направляющие 2.3.4 и последнюю версию acts_as_flying_saucer плагина. У меня есть этот маршрут:

  map.all_help '/help/all.:format', :controller => "help", :action => "all"

который переходит к этому действию контроллера:

class HelpController < ApplicationController
  acts_as_flying_saucer    

  def all
    respond_to do |format|
      format.html {
        render :action => "all", :layout => "help_pdf"
      }
      format.js
      format.pdf {
        render_pdf :template => 'help/all.html.erb', 
                   :layout => "help_pdf",
               :send_file => { :filename => "my-filename.pdf",  :type => "application/pdf"}      
      }
    end    
  end

end

и мне также определили этот тип пантомимы:

 Mime::Type.register "application/pdf", :pdf

Когда я перехожу к странице, /help/all.pdf, она генерирует 0-байтовый PDF (который я могу сохранить хорошо), и я получаю сообщение об ошибке от верхней части этого сообщения, когда я пытаюсь открыть ее.

Движение к стандартной версии веб-страницы страницы (/help/all) хорошо работает. Я думал, возможно, что мой Java vm не был настроен, но это, кажется, прекрасно:

max-laptop:millionaire[subjects]$ java -version
java version "1.6.0_20"
Java(TM) SE Runtime Environment (build 1.6.0_20-b02)
Java HotSpot(TM) Client VM (build 16.3-b01, mixed mode, sharing)

Я вне идей в этой точке... благодарной за любой совет! макс.

Править: Просто замеченный, что набор вывода ошибок находится на моей выполняющей полукровку вкладке:

ERROR:  'Premature end of file.'
Exception in thread "main" org.xhtmlrenderer.util.XRRuntimeException: Can't load the XML resource (using TRaX transformer). org.xml.sax.SAXParseException: Premature end of file.
    at org.xhtmlrenderer.resource.XMLResource$XMLResourceBuilder.createXMLResource(XMLResource.java:191)
    at org.xhtmlrenderer.resource.XMLResource.load(XMLResource.java:71)
    at org.xhtmlrenderer.swing.NaiveUserAgent.getXMLResource(NaiveUserAgent.java:205)
    at org.xhtmlrenderer.pdf.ITextRenderer.loadDocument(ITextRenderer.java:102)
    at org.xhtmlrenderer.pdf.ITextRenderer.setDocument(ITextRenderer.java:106)
    at Xhtml2Pdf.main(Xhtml2Pdf.java:19)
Caused by: javax.xml.transform.TransformerException: org.xml.sax.SAXParseException: Premature end of file.
    at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:719)
    at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:313)
    at org.xhtmlrenderer.resource.XMLResource$XMLResourceBuilder.createXMLResource(XMLResource.java:189)
    ... 5 more
Caused by: org.xml.sax.SAXParseException: Premature end of file.
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1231)
    at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transformIdentity(TransformerImpl.java:636)
    at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:707)
    ... 7 more

Я задаюсь вопросом теперь, существует ли что-то не так со страницей, я пытаюсь преобразовать в PDF. Я выполнил версию HTML страницы мимо w3c блока проверки допустимости, и страница проверяет хорошо. Таким образом, теперь я озадачен снова...

РЕДАКТИРОВАНИЕ 2: я думаю, что становлюсь ближе теперь: смотря в моем журнале, я вижу

Rendering help/all.html.erb
html file: /tmp/ff4c8ff01d544500ea4bfea43e6108c1.html
Sending X-Sendfile header /tmp/ff4c8ff01d544500ea4bfea43e6108c1.pdf

Так, я ожидал бы, что /tmp/ff4c8ff01d544500ea4bfea43e6108c1.html будет иметь версию HTML моей страницы в нем, но это - просто четыре строки пустой текстовый файл. Неудивительная летающая тарелка не может преобразовать его. Я не знаю, почему это сохранило пустой файл HTML все же.

РЕДАКТИРОВАНИЕ 3: вот HTML, который я в настоящее время пытаюсь преобразовать

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
      <title>Help for Millionaire For Schools</title>
  </head>

  <body class="pdf">
        <div id="bgeffect"></div>        

    <div id="pageWrapper" class="mainHelpPages">

      <div id="helpContent">
        <div id="helpPane">
          <div class="inner">
            <p>Welcome to my pdf</p>
          </div>
        </div>
      </div>      
    </div> 

  </body>

</html>
1
задан Max Williams 2 August 2010 в 16:42
поделиться

2 ответа

Разве вы не решили эту проблему год назад , установив для x_sendfile значение false?

1
ответ дан 2 September 2019 в 22:31
поделиться

Я решил эту проблему, она оказалась очень простой (и глупой). Проблема была в следующем: я указывал на макет, который хотел использовать, обычным рельсовым способом,

:layout => "help_pdf",

Но, похоже, вам нужно прописать полное имя файла: когда я изменил его на это, все заработало:

:layout => "help_pdf.html.erb",

ARRRGGHHH!!!!!! Ну, по крайней мере, теперь все работает. Большое спасибо Джону за то, что посмотрел.

max

1
ответ дан 2 September 2019 в 22:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: