Paperclip + PDF

Posted by Bruno Azisaka Maciel on December 21st, 2008 at 2:36 am on Plugins

Na semana passada postei sobre uma modificação no Paperclip para fazer Rounded Corners.

Bem, durante essa semana outro problema surgiu: miniaturas de arquivos PDF. Não sei se todos que usam Paperclip sabem, mas o ImageMagick gera miniaturas da primeira página.

Isso é bem legal e o melhor: tudo é feito automaticamente!

Motivação

Eu tinha o seguinte problema: o mesmo model gerenciava upload de imagens, e uma coisa não funciona com miniaturas de PDF: CROP.

Aviso

Quanto a geração de thumbnails do Paperclip oficial, é bom deixar bem claro: não funciona com PDF com mais de uma página! Se o seu PDF tem só uma página, irá funcionar perfeitamente.

Produzindo

Sendo assim, fiz algumas modificações para que quando uma miniatura de PDF fosse gerada o Paperclip removesse automaticamente a opção de Crop, para que a imagem fosse gerada sem maiores problemas.

Além disso corrigi um outro Bug que ocorria quando usava a opção rounded: todos os arquivos recebiam extensão .png, inclusive o arquivo original.

Resultado

O resultado foi o seguinte: Miniatura do Rails 2.1 O que há de novo?!

Concluindo

Uma opção legal quando criamos sites que fornecem conteúdo em PDF como relatórios para clientes, manuais, livros e etc.

Baixe e dê uma olhada no resultado

Paperclip + Rounded Corners

Posted by Bruno Azisaka Maciel on December 12th, 2008 at 8:56 pm on Desenvolvimento, Plugins

Essa semana fiz um POG interessante.

O pessoal estava colocando um site no ar, e todas as fotos precisavam ter rounded corners (frescura de designer).

E queríamos usar Paperclip, mas como fazer o arredondamento?

Como Paperclip usa ImageMagick puro, apenas fiz algumas mudanças no comando que ele executa e o resultado até que surpreendeu. Ele gera um PNG. Não importa a imagem de origem. Se ela precisar de rounded corners, a imagem resultante será PNG, pois o fundo é transparente.

Ah sim, bom lembrar que o fundo é transparente, assim não ocorrem problemas com fundos com gradiente e etc.

Instalando

script/plugin install git://github.com/dookie/paperclip.git
view raw This Gist brought to you by GitHub.

Configurando

Então configure seu model como achar melhor, por exemplo:

class Photo < ActiveRecord::Base
  has_attached_file :image,
                    :styles => { :thumb => "135x101#",
                                 :original => '640x480' },
                    :rounded => 10
end
view raw This Gist brought to you by GitHub.

O valor do :rounded será o tamanho do arredondamento. No caso estou usando 10 que é um tamanho legal já.

Resultado

O resultado será parecido com este: Imagem de Teste

Agora é só usar o Paperclip como você sempre usou (espero que esteja usando, senão comece logo a usar!)

Se alguém quiser dar uma olhada no projeto: http://github.com/dookie/paperclip/tree/master.

E gostaria também de já agradecer ao Shadow (que ajudou no desenvolvimento) e ao Márcio Trindade (o autor da idéia)

Knock Knock - Google Authentication ClientLogin

Posted by Bruno Azisaka Maciel on December 8th, 2008 at 8:50 am on Gems

Este é o meu primeiro post. Todo mundo começa falando coisas que não interessam no primeiro post, mas eu, no caso, vou comentar sobre uma GEM que estou desenvolvendo com o Alex Gregianin.

Knock Knock

Esta é uma GEM para fazer autenticação nos serviços que o Google oferece como GMail, Google Docs, Google Calendar, usando o método ClientLogin. Existem outros métodos como o AuthSub e OAuth mas a GEM trata somente o ClientLogin.

Instalando

A GEM está hospedada no RubyForge, então basta fazer:
sudo gem install knock-knock
view raw This Gist brought to you by GitHub.

Como usar?

Uma maneira simples de testar é pegando sua lista de contatos do GMail. O Google libera um XML contendo todas as informações e você pode fazer isso para pegá-los:

require 'rubygems'
require 'knock_knock'
 
include Bubble::KnockKnock
 
Connection.instance.connect('email@gmail.com', 'password', 'cp')
Request.get('http://www.google.com/m8/feeds/contacts/email%40gmail.com/full')
view raw This Gist brought to you by GitHub.

Como funciona?

O Connection faz a autenticação e pega o Token de acesso, necessário para utilizar as APIs que o Google oferece. Note a sigla no final: “cp”, esta é a sigla para conseguir o Token do Google Contacts. Para saber qual é a sigla para o serviço que você deseja basta consultar a documentação da API.

O Request.get é responsável por fazer GET na URL desejada, utilizando o Token, e retornando o XML de resposta.

Concluindo

É bem fácil utilizar, e qualquer serviço do Google pode ser acessado com esta GEM. Há outros método HTTP contidos nesta GEM, dando oportunidade à diversas outras implementações com seus scripts, as possibilidades são infinitas.

Para mais informações: