Flex export PDF e CSV

14 respostas
lira_jvm

Bom dia, alguém conhece uma forma de exportar dados para PDF e CSV a partir da minha aplicação flex ?

Obrigado.


Os jovens se cansarão e se fatigarão, e os moços certamente cairão.
Mas os que esperam no SENHOR renovarão as forças, subirão com asas como águias; correrão, e não se cansarão; caminharão, e não se fatigarão. Isaías 40:30-31

14 Respostas

F

Olá!

Através do iReport, por meio de relatórios, você pode exportar para pdf.

Abç

Marco Aurélio

fabricioempresa

Cara eu te aconselho a fazer o que fanama falou pois assim você consegue exportar para esses formatos além de poder customizar o seu documento.

Qualquer dúvida nos posta aqui.

Valeu abraço

surfzera

Pra CSV eu fiz um bem simples…

public void exportarDados() {
		
		String sFileName = "C:\\Teste\\test.csv";
		
		try {
			FileWriter writer = new FileWriter(sFileName);
			
			List<Os> listaOs = osService.listar();
			
			//Laço para obter dados das OS
			for (int i = 0; i < listaOs.size(); i++) {
				Os os1 = (Os) listaOs.get(i);
				
				writer.append("OS");
				writer.append(';');
				writer.append(os1.getId().toString());
				writer.append(';');
				writer.append(os1.getData_abertura().toString());
				writer.append(';');
				writer.append(os1.getData_abertura().toString());
				writer.append(';');
				writer.append(os1.getTamanho_pf().toString());
				writer.append(';');
				writer.append("0.0");
				writer.append(';');
				writer.append(os1.getDescricao());
				writer.append('\n');
				
			}
							
			writer.flush();
			writer.close();
		
		} catch (IOException e) {
			e.printStackTrace();
		}
		
	}
lira_jvm

fabricioempresa:
Cara eu te aconselho a fazer o que fanama falou pois assim você consegue exportar para esses formatos além de poder customizar o seu documento.

Qualquer dúvida nos posta aqui.

Valeu abraço

O problema é que a app flex é um dashboard e o cliente que ter esses gráficos em pdf, não sei rola usar exportar dessa forma, pois vou ter que recriar os gráficos , calculos etc, acho que assim não posso reaproveitar o código.

Agora CSV, não tem problema em fazer como o surfzera sugeriu, pois não preciso dos gráficos.

F

Vc pode pegar o ByteArray do gráfico usando ImageSnapshot, vc envia este ByteArray para o server e anexa esta imagem num pdf.

[]s

marcosFA

Alternativa melhor: Use o AlivePDF, é uma API de exportação de PDF diretamente do Flash Player. Não precisa mandar pro backend criar o arquivo e depois receber o link do mesmo pro usuário fazer download… Com o AlivePDF você criar arquivos PDF em tempo de execução e disponibiliza para o user fazer o download. Usando o ImageSnapshot você pega tira um “printScreen” do seu gráfico e insere em uma pagina do PDF. Simples assim.

Espero ter ajudado, Abs

lira_jvm

marcosFA:
Alternativa melhor: Use o AlivePDF, é uma API de exportação de PDF diretamente do Flash Player. Não precisa mandar pro backend criar o arquivo e depois receber o link do mesmo pro usuário fazer download… Com o AlivePDF você criar arquivos PDF em tempo de execução e disponibiliza para o user fazer o download. Usando o ImageSnapshot você pega tira um “printScreen” do seu gráfico e insere em uma pagina do PDF. Simples assim.

Espero ter ajudado, Abs


Tem um exemplo prático ? Valew

marcosFA

Direto ao ponto! Saca só isso aqui: http://toflex.wordpress.com/2009/08/28/add-high-resolution-images-to-your-pdf/ . É tudo que você precisa

Espero ter ajudado, Abs,

Edit: AlivePDF também exporta para CSV.

vitinho1712

marcosFA:
Alternativa melhor: Use o AlivePDF, é uma API de exportação de PDF diretamente do Flash Player. Não precisa mandar pro backend criar o arquivo e depois receber o link do mesmo pro usuário fazer download… Com o AlivePDF você criar arquivos PDF em tempo de execução e disponibiliza para o user fazer o download. Usando o ImageSnapshot você pega tira um “printScreen” do seu gráfico e insere em uma pagina do PDF. Simples assim.

Espero ter ajudado, Abs

O problema do AlivePDF é que todo esse trabalho de converter em imagem, e pdf e blá blá blá, vai ser feito no Cliente, ou seja, todo este processamento vai ser feito na máquina do usuário…
Eu não aconselho… Prefiro mandar um ByteArray pro servidor e fazer todo esse trabalho lá…

lira_jvm

vitinho1712:
marcosFA:
Alternativa melhor: Use o AlivePDF, é uma API de exportação de PDF diretamente do Flash Player. Não precisa mandar pro backend criar o arquivo e depois receber o link do mesmo pro usuário fazer download… Com o AlivePDF você criar arquivos PDF em tempo de execução e disponibiliza para o user fazer o download. Usando o ImageSnapshot você pega tira um “printScreen” do seu gráfico e insere em uma pagina do PDF. Simples assim.

Espero ter ajudado, Abs

O problema do AlivePDF é que todo esse trabalho de converter em imagem, e pdf e blá blá blá, vai ser feito no Cliente, ou seja, todo este processamento vai ser feito na máquina do usuário…
Eu não aconselho… Prefiro mandar um ByteArray pro servidor e fazer todo esse trabalho lá…

Pois é, não quero causar polêmica, sei que com flash rodando é possível fritar um ovo, mas ai não entra a questão de usar o processamento da máquina cliente e também o limite do post ?

lira_jvm

marcosFA:
Direto ao ponto! Saca só isso aqui: http://toflex.wordpress.com/2009/08/28/add-high-resolution-images-to-your-pdf/ . É tudo que você precisa

Espero ter ajudado, Abs,

Edit: AlivePDF também exporta para CSV.


Pow, to com outras prioridades, não vou implementar isso agora, o csv já implementei, o pdf vai ficar p/ depois, mas vou ver o link e fazer uns testes, pq sei que o cliente vai querer isso.

CVS implementei com a ajuda de um cara, ele passou um código simples que a partir de um DataGrid ele retorna uma String com o CSV apenas das colunas visíveis, ficou bacana porque meu DataGrid já permitia o user ocultar e exibir as colunas, ficou algo bem dinâmico, gostei.
Segue o link http://www.flashenabledblog.com/2007/08/03/flex-export-datagrid-data-as-csv-using-datagriddataexporter-class/comment-page-1/

Assim que concluir a parte do PDF posto a solução aqui.
Valew pela ajuda.

vitinho1712

lira jvm:
vitinho1712:
marcosFA:
Alternativa melhor: Use o AlivePDF, é uma API de exportação de PDF diretamente do Flash Player. Não precisa mandar pro backend criar o arquivo e depois receber o link do mesmo pro usuário fazer download… Com o AlivePDF você criar arquivos PDF em tempo de execução e disponibiliza para o user fazer o download. Usando o ImageSnapshot você pega tira um “printScreen” do seu gráfico e insere em uma pagina do PDF. Simples assim.

Espero ter ajudado, Abs

O problema do AlivePDF é que todo esse trabalho de converter em imagem, e pdf e blá blá blá, vai ser feito no Cliente, ou seja, todo este processamento vai ser feito na máquina do usuário…
Eu não aconselho… Prefiro mandar um ByteArray pro servidor e fazer todo esse trabalho lá…

Pois é, não quero causar polêmica, sei que com flash rodando é possível fritar um ovo, mas ai não entra a questão de usar o processamento da máquina cliente e também o limite do post ?

Sim, vai usar, mas não se compara ao fato de vc fazer todo esse serviço de conversão para pdf na máquina do cliente.

Da uma olhada nesse link
http://www.vedovelli.com.br/?p=494

Aí é citado um exemplo com o php, mas pro java é o mesmo esquema.

marcosFA

Olha, é claro, processamento é sempre recomendado ficar no servidor e não na maquina do cliente. Mas tudo depende da necessidade do cliente. Se você estiver trabalhando em um projeto de uso interno, onde os terminais que irão acessar o seu sistema são bons e padronizados, é possível utilizar essa técnica de criação e download de PDFs direto no cliente(Flash), pois é possível prever que os recursos utilizados(do cliente) não causarão perda de performance. Eu mesmo estou trabalhando atualmente num sistema com exportação para PDF e .xls, e estou usando essa técnica. Os arquivos gerados possuem uma média de 600k e não consomem muitos recursos da maquina do cliente na criação. O cliente adorou o fato, também, de que o download dos arquivos são praticamente instantâneos, uma vez que os mesmos são criados na própria máquina do usuário. Se você for utilizar PDF ENORMES, ai é obvio, mande para o servidor. os PDFs que estou utilizando possuem imagens, Grids, e textos. Ou seja, basicamente o que todo PDF tem. E os arquivos possuiem em média 6 páginas cada um.

Caso não seja possível realizar essa “previsão” ou o leque de configurações que irão utilizar o seu sistema for muito diferente entre si, não recomendo usar.

Espero ter ajudado, Abs,

vitinho1712

marcosFA:
Olha, é claro, processamento é sempre recomendado ficar no servidor e não na maquina do cliente. Mas tudo depende da necessidade do cliente. Se você estiver trabalhando em um projeto de uso interno, onde os terminais que irão acessar o seu sistema são bons e padronizados, é possível utilizar essa técnica de criação e download de PDFs direto no cliente(Flash), pois é possível prever que os recursos utilizados(do cliente) não causarão perda de performance. Eu mesmo estou trabalhando atualmente num sistema com exportação para PDF e .xls, e estou usando essa técnica. Os arquivos gerados possuem uma média de 600k e não consomem muitos recursos da maquina do cliente na criação. O cliente adorou o fato, também, de que o download dos arquivos são praticamente instantâneos, uma vez que os mesmos são criados na própria máquina do usuário. Se você for utilizar PDF ENORMES, ai é obvio, mande para o servidor. os PDFs que estou utilizando possuem imagens, Grids, e textos. Ou seja, basicamente o que todo PDF tem. E os arquivos possuiem em média 6 páginas cada um.

Caso não seja possível realizar essa “previsão” ou o leque de configurações que irão utilizar o seu sistema for muito diferente entre si, não recomendo usar.

Espero ter ajudado, Abs,

Concordo com vc, assim como tudo na programação, é necessário análise, sempre depende do caso do cliente…
Mas sei lá, eu prefiro fazer essas coisas no servidor, talvez seje até vício… shausaushau

Criado 9 de agosto de 2010
Ultima resposta 12 de ago. de 2010
Respostas 14
Participantes 7