2016-09-15 2 views
0

Verwenden von Paperclip zum Datei-Upload in meiner Rails App und ich muss Bilder in separate PDFs konvertieren, bevor Sie auf Amazon S3-Server hochladen. Ich weiß, ich Garnelen für das Bild, um die PDF-Konvertierung verwenden kann, und ich kann die Datei im Modell this stack overflow questionKonvertieren Sie Bilder in PDF vor dem Hochladen mit Büroklammer

mit der Antwort abfangen:

has_attached_file :file 
before_file_post_process :convert_images 

...

def convert_images 
    if file_content_type == 'image/png' || file_content_type == 'image/jpeg' 
     original_file = file.queued_for_write[:original] 
     filename = original_file.path.to_s 
     pdf = Prawn::Document.new 
     pdf.image open(filename), :scale => 1.0, position: :center 
     file = pdf.render 
    end 
end 

aber ich kann das in S3 gespeicherte Bild nicht konvertieren. Irgendwelche Ideen was ich vermisse?

Edit: Hinzufügen eines save! Aufruf führt zu Validierungen fehlschlagen, die nicht zuvor taten.

Antwort

0

Konnte es herausfinden.

geändert:

before_file_post_process :convert_images 

zu:

before_save :convert_images 

und änderte meine convert_images Methode:

def convert_images 
    if file_content_type == 'image/png' || file_content_type == 'image/jpeg' 
    file_path = file.queued_for_write[:original].path.to_s 
    temp_file_name = file_file_name.split('.')[0] + '.pdf' 
    pdf = Prawn::Document.new(:page_size => "LETTER", :page_layout => :portrait) 
    pdf.image File.open("#{file_path}"), :fit => [612, 792], position: :center 
    pdf.render_file temp_file_name 
    file_content_type = 'application/pdf' 
    self.file = File.open(temp_file_name) 
    File.delete(temp_file_name) 
    end 
end 
Verwandte Themen