Meu primeiro script em Ruby que faz algo útil, feito para ser utilizado a partir do shell. Utilizei a biblioteca pdf-reader. Só funciona se o pdf tiver informações de título e autor. Por padrão ele renomeia o pdf para o formato “título [autor]”, se quiser mudar é só alterar a linha 15.
Exemplo de uso (tenta renomear todos os arquivos pdf do diretório atual):
ruby pdf_rename.rb *.pdf
require 'pdf-reader'
if ARGV.empty?
puts "Usage: ruby pdf_rename.rb 'file.pdf'"
exit 1
end
ARGV.each do |arg|
filename = arg
nfilename = ""
begin
PDF::Reader.open(filename) do |reader|
if reader.info[:Author] && reader.info[:Title]
nfilename = reader.info[:Title] + " [" + reader.info[:Author] + "].pdf"
end
end
rescue
puts "Could not read PDF '#{filename}'."
next
end
if nfilename != ""
begin
File.rename(filename, nfilename)
rescue
puts "Could not rename file '#{filename}' to '#{nfilename}'."
next
end
else
puts "Could not extract author and title information from PDF '#{filename}'."
next
end
end