mirror of https://github.com/interlegis/sapl.git
1 changed files with 85 additions and 0 deletions
@ -0,0 +1,85 @@ |
|||
/* |
|||
* Adiciona botões de download ao lado do link "Texto Original" |
|||
* na tela de resultados de pesquisa de matérias. |
|||
*/ |
|||
|
|||
(function () { |
|||
function downloadFile(url, filename) { |
|||
// Usa fetch para baixar o arquivo como blob e forçar download
|
|||
fetch(url) |
|||
.then(response => { |
|||
if (!response.ok) { |
|||
throw new Error('Erro ao baixar arquivo'); |
|||
} |
|||
return response.blob(); |
|||
}) |
|||
.then(blob => { |
|||
// Cria URL temporária do blob
|
|||
const blobUrl = window.URL.createObjectURL(blob); |
|||
|
|||
// Cria link temporário e força download
|
|||
const link = document.createElement('a'); |
|||
link.href = blobUrl; |
|||
link.download = filename || 'documento.pdf'; |
|||
link.style.display = 'none'; |
|||
|
|||
document.body.appendChild(link); |
|||
link.click(); |
|||
|
|||
// Limpa recursos
|
|||
document.body.removeChild(link); |
|||
window.URL.revokeObjectURL(blobUrl); |
|||
}) |
|||
.catch(error => { |
|||
console.error('Erro ao baixar PDF:', error); |
|||
// Fallback: abre em nova aba se o download falhar
|
|||
window.open(url, '_blank'); |
|||
}); |
|||
} |
|||
|
|||
function injectButtons() { |
|||
// Busca todos os elementos <strong> que contêm link "Texto Original"
|
|||
const strongElements = Array.from(document.querySelectorAll('strong')); |
|||
|
|||
strongElements.forEach((strong) => { |
|||
const link = strong.querySelector('a'); |
|||
if (!link || link.textContent.trim() !== 'Texto Original') return; |
|||
|
|||
// evita duplicação
|
|||
if (strong.nextSibling && strong.nextSibling.nodeType === Node.ELEMENT_NODE |
|||
&& strong.nextSibling.hasAttribute('data-sapl-download-pdf-btn')) return; |
|||
|
|||
const pdfUrl = link.getAttribute('href'); |
|||
if (!pdfUrl) return; |
|||
|
|||
// extrai nome do arquivo da URL
|
|||
const filename = pdfUrl.split('/').pop() || 'texto_original.pdf'; |
|||
|
|||
// cria botão com ícone FontAwesome
|
|||
const btn = document.createElement('a'); |
|||
btn.setAttribute('data-sapl-download-pdf-btn', '1'); |
|||
btn.className = 'btn btn-sm btn-outline-primary ml-1'; |
|||
btn.title = 'Baixar PDF'; |
|||
btn.href = 'javascript:void(0);'; |
|||
btn.innerHTML = '<i class="fas fa-download"></i>'; |
|||
|
|||
// evento de click para forçar download
|
|||
btn.addEventListener('click', function(e) { |
|||
e.preventDefault(); |
|||
e.stopPropagation(); |
|||
downloadFile(pdfUrl, filename); |
|||
return false; |
|||
}); |
|||
|
|||
// insere logo após o </strong>
|
|||
strong.parentNode.insertBefore(document.createTextNode(' '), strong.nextSibling); |
|||
strong.parentNode.insertBefore(btn, strong.nextSibling); |
|||
}); |
|||
} |
|||
|
|||
if (document.readyState === 'loading') { |
|||
document.addEventListener('DOMContentLoaded', injectButtons); |
|||
} else { |
|||
injectButtons(); |
|||
} |
|||
})(); |
|||
Loading…
Reference in new issue