8 Stimmen

Wie kann man die Nachbearbeitung von PDF-Dateien in Paperclip deaktivieren?

Paperclip versucht standardmäßig, jede Bilddatei zu verarbeiten, um ein Miniaturbild zu erzeugen. Aber es versucht auch, dies mit PDF-Dateien zu tun, was sehr zeitaufwendig sein kann. Ich habe versucht, auf Google suchen und fand eine Lösung, aber es ändert Paperclip Methoden.

Wie kann man die PDF-Nachbearbeitung in Paperclip deaktivieren, ohne die Paperclip-Quellen zu ändern?

16voto

Toby Hede Punkte 36095

In meiner aktuellen Produktionsanwendung ist es ähnlich wie oben, aber ich suche explizit nach Bildern (in diesem Fall akzeptiert mein Uploader so ziemlich jeden Dateityp, also verarbeite ich nur Bilder und ignoriere alle anderen):

before_post_process :is_image?

def is_image?
  ["image/jpeg", "image/pjpeg", "image/png", "image/x-png", "image/gif"].include?(self.asset_content_type) 
end

2voto

klew Punkte 14589

Eine Lösung ist die Verwendung von before_post_process Rückruf:

 # Model with has_attached_file
 before_post_process :forbid_pdf  # should be placed after line with has_attached_file 

 private
 def forbid_pdf
   return false if (data_content_type =~ /application\/.*pdf/)
 end

data_content_type sollte in das entsprechende Feld in Ihrem Modell geändert werden.

Eine andere Lösung, die ich mir ausgedacht habe, ist die Erstellung eines benutzerdefinierten Prozessors für Bilder, der den Dateityp prüft und, falls es sich nicht um pdf handelt, den Standardprozessor ausführt Paperclip::Thumbnail .

0voto

Lucas Caton Punkte 2731

Sie können es mit einer einzigen Zeile lösen:

before_post_process { avatar_content_type.match? %r{\Aimage\/.*\z} }

Vergessen Sie nicht zu ersetzen avatar mit Ihrem Attribut (z.B.: receipt_content_type ).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X