Salvando relatório PDF ao mesmo tempo que mostra na tela

Olá pessoal, é possível eu salvar o relatório dinamicamente, ao mesmo tempo que o mesmo seja mostrado na tela ? quero fazer isso para o caso de depois ser necessário re-imprimir este mesmo relatório, eu ter ele em arquivo, e como eu poderia ler ele através do script case e mandar imprimir sem ter que procurar manualmente nas pastas ? Depois deste relatório ser gerado, o programa não o gera novamente, a próxima vez que ele gerar será com informações atualizadas, por isso será sempre diferente, daí vem a necessidade de ter uma cópia salva em um local que o scriptcase possa encontrá-lo em caso de necessidade de imprimir.

Agradeço a colaboração de todos

Marcelo Ferreira

Você pode fazer somente o download desse relatório (mas não será exibido dinamicamente, só se você abrir este arquivo, geralmente ele é salvo na pasta Downloads):

$pdf->Output(‘nomedoseurelatorio.pdf’, ‘D’);

Até é possível sim salvar e exibir ao mesmo tempo:

$pdf->Output(‘nomedoseurelatorio.pdf’, ‘F’);

Mas o que acontece: toda vez que executar este relatório, o antigo que você executou será perdido e ele é salvo dentro do diretório do SC. Dai neste caso o mais viável como quer manter o relatório com os valores antigos o fundamental é por o primeiro exemplo somente para download.

Ok chará, acho que ficou bem claro, eu só tenho duas dúvidas nesse caso. Esse comando que você passou, eu coloco nos eventos ? outra coisa é possível eu escolher a pasta onde vou salvar o relatório ? para eu direcionar o scriptcase para ler diretamente no diretorio de relatorios que eu escolher ? Eu gostaria de usar uma variavel com o nome do relatorio dinamico, por exemplo: $sigla.$codAtend a variavel sigla é um campo unico que é específico para cada paciente, ele nunca será repetido concatenado com o codigo do atendimento.

No aguardo e desde já agradecido

Marcelo Ferreira

Sim te que ser em um evento, independente do tipo de PDF que está criando. E pode sim criar uma pasta para salvar este relatório, exemplo:

$nomeRelatorio= “nomedoseurelatorio.pdf”;

$diretorio = “C:\windows\downloads”; // esse é para Windows

//ou

$diretorio = “/var/www/project/custom/”; // esse é para Linux

$resultado = $diretorio.$nomeRelatorio;

$pdf->Output($resultado,‘D’);

Thank you friend for your help.

Acho que já respondeu o que eu preciso. Caso ainda surja alguma dúvida eu te comunico.

Thank you again.

Marcelo Ferreira

Olá, a prática sempre é diferente da teoria, eu fiz o que você passou mas com minhas informações, as que segue abaixo:

$nomeArquivo = {atendimento}.’-’.$senha.‘pdf’;
$destino = “/opt/NetMake/v8/wwwroot/scriptcase/relatorios_pdf/”;
$resultado = $destino.$nomeArquivo;
$pdf->Output($resultado,‘D’);

estes comandos estão em um metodo chamado scp_download_senha({senha}) recebe como parametro o campo senha.

eu poderia usar esta variavel $resultado como sendo uma global e informar ela la em configurações do relatorio onde pede o nome do relatório ? pergunto isso porque ao tentar salvar ele me deu uma mensagem que não foi definido o nome do arquivo pdf, esta mensagem está em anexo a este tópico.

este método está sendo chamado no evento onRecord.

Agredeço mais uma vez a atenção e colaboração.

Marcelo Ferreira


Captura de tela - 16042015 - 09:44:27.png

Pelo que eu vi tu está trabalhando com PDF Report correto? Eu te passei o exemplo baseado na classe FPDF pela qual eu trabalho e faço tudo “no braço” com código puro mesmo no Blank.

Então a saída deste documento PDF Report seria com o seguinte código:

sc_pdf_output($resultado, ‘D’);

Bom eu nunca tentei assim de salvar o nome com uma variável, pode dar certo sim mesmo que seja uma variável global, eu recomendaria um nome já padrão pra salvar este relatório.

Espero ter ajudado.

Não consegui, mas vou deixar essa parte para mais pra frente, porque eu quero que ele salve implicitamente, sem que eu tenha que dizer na hora de salvar onde salvar, mas quando deu coloco o comando ele traz uma tela perguntando se eu quero abrir ou fazer o download do arquivo, e pra mim não atende porque eu quero fazer algo que ganhe tempo diante do atendimento ao público, onde será enfrentado uma fila de gente, por isso quanto mais rápido melhor.

Mas fico profundamente agradecido pelas dicas, com certeza elas irão me servir em outros projetos.

obrigado a todos que colaboram comigo.

Marcelo Ferreira