# AlegoPdf Gem responsável por juntar 1 ou mais PDF's no mesmo arquivo ## Instalação Adicione esta linha no seu Gemfile: ```ruby gem 'alego_pdf' ``` #### Desenvolvimento Para desenvolvimento, use no seu gemfile o seguinte código: ```ruby gem 'alego_shared', path: '../alego_shared' ``` E execute: $ bundle install Ou instale isto você mesmo usando o comando: $ gem install alego_pdf ## Uso A gem 'alego_pdf' depende da gem 'hexapdf' para fazer a juntada de arquivos. Veja mais sobre a gem 'hexapdf' no Github: https://github.com/gettalong/hexapdf A gem 'alego_pdf' faz a leitura dos arquivos via URI e Tempfile e a gem 'hexapdf' junta-os. Veja o exemplo na gem alego_pdf: ``` def call target = HexaPDF::Document.new # filepaths é um array com as url's dos arquivos filepaths.each do |filepath| uri = URI.parse(filepath).open(&:read) # leitura do arquivo tempfile = Tempfile.new tempfile.write(uri.force_encoding('UTF-8')) # escrita no arquivo Tempfile tempfile.close # fecha o arquivo pdf = HexaPDF::Document.open(tempfile) pdf.pages.each { |page| target.pages << target.import(page) } # junta os arquivos em um novo HexaPDF end target.write(filename, optimize: true) end ``` Após instalar a gem 'alego_pdf', deve buscar a URL dos arquivos e passar estas URL's como parâmetro. Veja o exemplo a seguir: ``` def merge_arquivos # O atributo "arquivo_url" deve ser a url onde o arquivo está armazenado. # Exemplo: https://spiderminio-dev.al.go.leg.br:9000/portal-rails/uploads/transparencia/organograma/arquivo/1/Manual_do_stimuus_-_6_Instalando_o_esti%CC%81mulo_no_seu_aplicativo.pdf?X-Amz-Expires=600&X-Amz-Date=20220909T165125Z&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=BUjuSkJYyf0wzRmG%2F20220909%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-SignedHeaders=host&X-Amz-Signature=791bbc7db8aac7bd0c61dc7a60d04ec3d39f6d63d60f9d971383c97b55e9815a filepaths = Model.order('id desc').map(&:arquivo_url) respond_to do |format| format.html format.pdf do filename = 'tmp/arquivos.pdf' AlegoPdf::Merging.new(filepaths, filename).call pdf_filename = File.join(Rails.root, filename) send_file(pdf_filename, filename: 'merge-arquivos.pdf', type: 'application/pdf') end end end ``` ## Contribuição Relatórios de bugs e pull requests são bem-vindos no GitLab em https://gitlab.al.go.leg.br/sistemas/gem/alego_pdf.