Solucionado (ver solução)
Solucionado
(ver solução)
9
respostas

Visualizar documentos Online

Bom Dia, Estou eu aqui mais uma vez buscando um solução ao meu problema, tentarei explicar e torso que consigam me ajudar.

Minha plataforma tem uma opção cloud, onde o usuário faz upload de arquivos do tipo(pdf,doc,txt, xls etc.. ) em uma pasta do servidor.

O que precisso: Então eu preciso desenvolver algo em angular, que busca esses arquivos na pasta no servidor, leia esses arquivos direto no navegador e de preferência, que dese para editar e salvar, reescrevendo o documento.

Preciso muito de Help / Ideia / Solução :)

9 respostas

Olha, editar os documentos direto em sua aplicação Angular, hum.. tenho receio de que isso não seja possível, pelo menos, eu desconheço.

Até onde eu sei, você precisará fazer download do arquivo e depois fazer upload do arquivo modificado. Ou seja, se precisar editar XLS, usuário precisará ter o EXCEL na máquina dele e por ai vai.

Para upload, talvez esse plugin possa ajudá-lo:

https://github.com/valor-software/ng2-file-upload

Há algumas libs de JS que lidam com esses formatos e você poderia implementar um wraper em Angular 2 nelas para lidar com os tipos do seu interesse. Não é uma tarefa nada nada nada trivial, mas é um caminho a seguir. Segue o exemplo de uma lib:

https://github.com/SheetJS/js-xlsx

Ainda há esse post falando sobre download de PDF

http://stackoverflow.com/questions/35368633/angular-2-download-pdf-from-api-and-display-it-in-view

ok upload, mas então digamos que sem alteração/editar, mas para visualizar direto no navegador os documentos que ele fez upload na pasta do server?

Direto no navegador? Você vai precisar de algum wraper como disse. O padrão é o cada fazer download..editar e enviar novamente.

Você tem que torcer para alguém ter feito já esses wrapers para você. Outro ponto é que esse wrapper tem que ser 100% javascript, caso contrário você estará obrigado todos a terem um programa extra instalado.

Veja que você esta querendo que o browser seja por exemplo. um Microsoft Office e isso ele não é.

Esse post pode esclarecê-lo das limitações.

http://www.angularjs4u.com/modules/5-angularjs-microsoft-word-excel-integrations/

Um exemplo para arquivos pdf teria algo assim (http://jsfiddle.net/jorgthuijls/uh95y/3/), porem gostaria para outros formatos, mas vo dar um pesquisada e estudada sobre o assunto.

Pesquisando aqui encontrei uma solução paga que faz isso, mas ela não se integra com Angular, sendo assim, você precisará suar sangue para criar seu próprio wrapper nela:

http://www.textcontrol.com/en_US/products/dotnetserver/overview/?gclid=CPTojK2b9tACFQKBkQod3-8ALw

uma duvida, tem como minha aplicação chamar uma extensão do chrome.

Exemplo na minha aplicação tem a opção habilitar do tipo btn e quando clicar em habilitar disparar a instalação dessa extensão automaticamente, sem precisar ser redirecionado para add-on do chrome e la ter que instalar novamente: https://chrome.google.com/webstore/detail/office-editing-for-docs-s/gbkeegbaiigmenfmjfclcdgdpimamgkj/related

pois dai o navegador dele automaticamente começaria a visualizar documentos da miscrosoft.

Pois instalei o add-on acima, arastei da minha área de trabalho para o navegador ele abriu e me da opções de editar tbm.

ou seja depois quando o cliente for abrir o documento, eu teria que chamar essa extenção via url e passar o loocal do documento no servidor pode ser via javascript puro (se puder passar como poderia fazer isso via javascript, melhor via angular 2, ficaria muito agradecido :) )

Pois realizei teste aqui e funcionou. Agora vem o quebra cabeça, exemplo: 1- Como através do botão na minha aplicação chamar a extensão e instalar automaticamente. 2 - quando o cliente clicar no dcumento para visualizar, chamar a extensão instalada, juntamente com o documento para abrir(caminho do documento)

Olha.. Eu particularmente não sei até porque depender de uma extensão do Chrome acaba com a portabilidade de sua aplicação. Se Chrome abandonar essa extensão você estará perdido e seu sistema vai pro saco.

Mas se achar essa solução a mais facil vai fundo.

solução!

ok, já estou trabalhando em outra alternativa