2015-05-08 36 views
1

我是新的wicked_pdf寶石,但我注意到一些奇怪的一代PDF,我使用兩個目的的寶石,一,顯示報價,第二個通過電子郵件發送PDF。Wicked_pdf生成我的PDF與奇怪的字符,但是當我使用控制器呈現一切都很好

在我的節目中控制器的動作我有這樣的事情:

def show 
    @lot_quotation = set_lot_quotation 
    authorize @lot_quotation 
    respond_to do |format| 
     format.html 
     format.pdf do 
     filename = 'cotizacion_' + @lot_quotation.id.to_s 
     render pdf: "lot_quotation", 
       layout: 'lot_quotation.html.erb', 
       page_size: 'Letter', 
       save_to_file: Rails.root.join('pdfs', "#{filename}.pdf") 
     end 
    end 
    end 

一切都很好!

然後,我有一個動作「send_quotation」,即生成PDF,然後我用的ActionMailer發送它...這裏是我的代碼:

def send_quotation 
    @lot_quotation = LotQuotation.find(params[:id]) 
    filename = 'cotizacion_' + @lot_quotation.id.to_s + '.pdf' 
    html = render_to_string template: 'lot_quotations/show.pdf.erb', layout: "lot_quotation.html", pdf: "lot_quotation", 
     page_size: "Letter", encoding: 'UTF-8' 
    pdf = WickedPdf.new.pdf_from_string(html) 
    # then save to a file 
    save_path = Rails.root.join('pdfs',filename) 
    File.open(save_path, 'wb') do |file| 
     file << pdf 
    end 
    SeruMailer.cotizacion(params[:email_to], @lot_quotation) 

    authorize @lot_quotation 
    respond_to do |format| 
     format.html 
     format.js 
    end 
    end 

它,工作原理,但...當我打開PDF文件,我有這樣的東西:

%PDF-1.4 1 0 obj << /Title (þÿCotizacion) /Creator (þÿwkhtmltopdf 0.12.2.1) /Producer (þÿQt 4.8.6) /CreationDate (D:20150508165111-04'00') >> endobj 3 0 obj << 
/Type /ExtGState /SA true /SM 0.02 /ca 1.0 /CA 1.0 /AIS false /SMask /None>> endobj 4 0 obj [/Pattern /DeviceRGB] endobj 6 0 obj << /Type /XObject /Subtype /Image 
/Width 351 /Height 69 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 7 0 R /Filter /DCTDecode >> stream ÿØÿà​JFIF​​​``ÿÛC​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​ ​ ​​ ​​​ ​​​​​​​​ 
​ ​ ​ ​ ​ ​ ÿÛC​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ÿÀ​ ​ E​ _​ ​ "​ ​ ​ ​ ​ ​ ÿÄ​ ​ ​ ​ ​ 
​ ÿÄμ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ }​ ​ ​ ​ ​ ​ ​ !1A​ ​ Qa​ "q​ 2​ ‘¡​ #B±Á​ RÑð$3br‚​ ​ ​ ​ ​ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„... †‡ˆ‰Š’「」•–— ̃TMš¢£¤¥¦§ ̈©a23 ́μ¶· ̧1oÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ 
​ ÿÄμ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ w​ ​ ​ ​ ​ ​ !1​ ​ AQ​ aq​ "2​ ​ ​ B‘¡±Á#3Rð​ brÑ​ $4á%ñ​ ​ ​ ​ &'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„... †‡ˆ‰Š’「」•–— ̃TMš¢£¤¥¦§ ̈©a23 ́μ¶· ̧1oÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚâãäåæçèéêòóôõö÷øùúÿÚ​ ​ ​ ​ ​ ​ ​ ?ýü¢Šà~'þÒžøC​ þÜÖí#Ÿμ 
́N$​ ÿà​ ​ ßUMWW¶Ðt÷o1⁄4 ̧‚Ö​ ÇÏ$®​ ​ ñ5ñ ̄Å¿ø*​ ÕÜ/oàí​ -​ 
éúüïtÿr>õóWÄ​ Œþ*ø§xòëoÖ¡ ̈​ Ñ​ ÿwÿ|P​ Ý_​ ÿà¡Þ​ øy​ Ä​ t×​ %Ô​ |‘Y​ ​ ​ ûmÒ1⁄4oÃßðTÝuÿ† ̈ðN1ÿãIÿ¿0​ ñ​ ÙþÍ3⁄4​ OˆŸ2Ýî​ ,2[%ý 

我不知道爲什麼?我錯過了什麼嗎?我已經檢查了github問題,問題和類似的東西......但我發現沒有線索......我認爲是與render_to_string相關的東西。

編輯

這裏是我的佈局應用程序/視圖/佈局/ lot_quotation.html.erb

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html> 
    <head> 
    <meta charset="utf-8" /> 

     <%= wicked_pdf_stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %> 
    <%= wicked_pdf_javascript_include_tag 'application', 'data-turbolinks-track' => true %> 
    <%= csrf_meta_tags %> 
    <style> 
     body {font-size: 11px !important;} 
     h3 {font-size: 12px !important;} 
     table, tr, td, th, tbody, thead, tfoot { 
     page-break-inside: avoid !important; 
     } 
     h2 {font-size: 14px !important;} 
    </style> 
    </head> 
    <title>Cotizacion</title> 
    <body> 
    <%= yield %> 
    </body> 
</html> 
+0

lot_quotation.html.erb真的是你的佈局:或者應該是模板:? –

+0

你好安塔爾,是的,這是我的佈局,我仔細檢查了!,請檢查我的文章,我已經編輯它,謝謝,你有什麼想法? – svonborries

+0

發佈您的PDF模板。即(send_quotation.pdf.erb) –

回答

0

此代碼將是綽綽有餘,如果你只是想顯示PDF:

def show 
    respond_to do |format| 
    format.html 
    format.pdf do 
     render pdf: 'file_name', 
      template: 'orders/order_success_new_design.pdf.erb', 
      layout: 'layouts/application_new.pdf.erb' 
    end 
    end 
end 

如果你想保存爲PDF格式:

def save 
    pdf = WickedPdf.new.pdf_from_string(
         render_to_string(
          template: 'example/pdf_view.pdf.erb', 
          layout: 'layouts/application.pdf.erb')) 
    send_data(pdf, 
      filename: 'file_name.pdf', 
      type: 'application/pdf', 
      disposition: 'attachment') 
end 
+0

**編碼**可能有一些情況。請參閱[** WickedPDF **](https://github.com/mileszs/wicked_pdf)瞭解更多選項。 –

+0

只要模板和佈局足以生成PDF,我認爲這是編碼問題,非常感謝! – svonborries