Я работал над этим некоторое время и сделал много Googles, но не могу понять, где я иду не так.(На этой неделе я перешел на двухлетний сайт, поэтому я все еще пытаюсь найти способ, который не помогает).
При загрузке файла создается миниатюра предварительного просмотра.,Для файлов изображений этот предварительный просмотр не создает проблем, но для файлов PDF я хочу установить изображение по умолчанию в качестве эскиза вместо предварительного просмотра PDF.
В моем классе DocumentUploader у меня есть следующее, которое устанавливаетминиатюра изображения (я не включил некоторые биты, которые не имеют отношения):
def convert_to_image(height, width)
image = MiniMagick::Image.open(current_path)
image.resize "#{height}x#{width}"
image.write(current_path)
end
version :preview, if: :not_svg? do
process convert_to_image: [210, 297]
process convert: :jpg
def full_filename(for_file = model.file)
super.chomp(File.extname(super)) + ".jpg"
end
end
def not_svg?(new_file)
!new_file.content_type.start_with? "image/svg+xml"
!new_file.content_type.start_with? "application/pdf"
end
Используя это в качестве основы, я написал следующее для PDF (опять же, не относящиеся к делу части исключены):
def set_default_pdf(height, width)
image = MiniMagick::Image.open("app/assets/images/pdf_placeholder.svg")
image.resize "#{height}x#{width}"
image.write("app/assets/images/pdf_placeholder.svg")
end
version :preview, if: :pdf? do
process set_default_pdf: [210, 297]
process convert: :jpg
def full_filename(for_file = model.file)
super.chomp(File.extname(super)) + ".jpg"
end
end
def pdf?(new_file)
new_file.content_type.start_with? "application/pdf"
end
В моем представлении есть следующее:
<%= link_to document.file.url, target: "_blank" do %>
<%= image_tag document_preview_url(document.file) if document.file? %>
<% end %>
Итак, я проследил это до моего модуля DocumentPreviewHelper, который имеет следующее:
def document_preview_url(file)
return file.preview.url(response_content_type: %( "image/jpeg" )) if file.preview.present?
file.url(response_content_type: %( "image/svg+xml"))
end
С помощьюкомментарии:
# Retrieve a preview thumbnail for a PDF with the correct content type set.
#
# Without overriding the content_type, the headers would return 'application/pdf'
# for the preview image, and all browsers except for Safari will show the image
# (regardless of the content type header). This fixes the preview thumbs for Safari.
Я чувствую, что именно здесь я должен внести свои изменения, но из моих (ограниченных) знаний мне кажется, что предварительный просмотр PDF должен показываться, поскольку они были преобразованы вJPG в DocumentUploader.
Я пробовал различные изменения и изменения, но предварительный просмотр PDF просто остаются неработающими ссылками.Что мне не хватает / где я иду не так?Я чувствую, что это должно быть легко исправить, но я просто не вижу этого, и приходит разочарование.