Abrir PDF na máquina cliente

Bom dia gente gostaria de uma ajuda dos especialistas da GUJ, estou com um problema que está me tirando o juízo (rsrsrs), fiz uma aplicação web adobe FLEX + JAVA, onde é feito uma busca no banco de dados e populando m advancedatagrid dai quando o cliente da 2 cliques numa linha do advancedatagrid ele abre o .pdf em um caminho no computador, exemplo cada empresa do banco de dados tem um (pdf) empresa tech - (124578.pdf), empresa home - (7457891.pdf) isso eu trago do banco de dados e sei que aquele .pdf é dele, então vai a dúvida fui testar no cliente e quando outro computador entra no software pelo browser que pesquisa e acha a empresa ele da 2 cliques para abrir .pdf, não abre, só abre la no servidor todas linhas que o cliente quis abrir o .pdf não abriu na máquina cliente foram abertos todos la no servidor, téria alguma forma de ajeitar isso, e gente outra coisa eu tive que saber no servidor o caminho e pasta onde iria ficar os pdfs para por no código java, mais se ele formatarem o servidor e quiserem colocar em outro o software não acha o caminho como faço para resolver essa situação vou postar os códigos abaixo, obrigado a todos:

vou comentar as partes do código para ficar melhor o entendimento.

OBS: no banco existe a tabela exemplo: empresa varchar(50), pasta varchar(50), imagem varchar(50)

ai no banco os dados ficam assim:

Empresa pasta Imagem
Tech C00800123 tech.pdf
Home C00800999 home.pdf

isso eu pego do banco de dados gente via código no adobe flex ai pego a linha selecionada e os campos pasta e imagem e mando em 2 strings para o java, ai ele pesquisa no local que eu defini se tiver ele abri o .pdf se não retorna para o cliente uma mensagem dizendo que não existe o documento digital.

aqui é o código do adobe FLEX, código de 2 cliques no AdvanceDataGrid


protected function duploclick_auditoria(event:MouseEvent):void{
				
				var auditoriaService:RemoteObject = new RemoteObject("auditoriaService");
			    imagem_auditoria = ADGAuditoria.selectedItem.imagem;
				pasta_auditoria = ADGAuditoria.selectedItem.pasta;
				auditoriaService.verificaPDF(pasta_auditoria.toString(), imagem_auditoria.toString(), status_auditoria);
				auditoriaService.addEventListener(ResultEvent.RESULT, resultadoduploclick_auditoria);
				
			}

nesse código pego o resultado do duplo clique e faço as comparações e abertura do .pdf:

[code]public function resultadoduploclick_auditoria(event:ResultEvent):void
{
var auditoriaService:RemoteObject = new RemoteObject(“auditoriaService”);
status_auditoria = event.result as Boolean;
if (status_auditoria == true){
auditoriaService.abrirPDF(pasta_auditoria.toString(), imagem_auditoria.toString());
}else {
Alert.show(“Não existe documento digital”);
}
}

[/code]

Aqui código JAVA

aqui nesse código eu trago uma lista de todos os objetos para preencher o AdvanceDataGrid:

[code]public List listarauditoria()
{

   ArrayList<Auditoria>  lista_auditoria = new ArrayList<Auditoria>();
   Auditoria c; 
   try
   {
	   statement = CON.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
	   resultset = statement.executeQuery("select * from documentosauditoria");
	   while (resultset.next())
	   {
		    
		   c = new Auditoria();  
		    
		   c.setId_documentos(resultset.getInt("id_documentos"));
		   c.setId_tipodocumento(resultset.getInt("id_tipodocumento"));
		   c.setFolhaderosto(resultset.getString("folhaderosto"));  
		   c.setData(resultset.getString("data")); 
		   c.setPeriodo(resultset.getString("periodo")); 
		   c.setAnexo_volume(resultset.getString("anexo_volume")); 
		   c.setProcesso(resultset.getString("processo")); 
		   c.setInteressado(resultset.getString("interessado")); 
		   c.setAssunto(resultset.getString("assunto")); 
		   c.setImagem(resultset.getString("imagem")); 
		   c.setPasta(resultset.getString("pasta")); 
		   lista_auditoria.add(c);
		 
		 
	   } 
	   }          
	    
   
   catch(SQLException Banco)
   {
	   
   }
   return lista_auditoria;

} [/code]

esse outro eu faço a pesquisa por opção de escolha (filtro) e também trago uma lista do objeto para preencher o AdvanceDataGrid:

public List<Auditoria> pesquisarauditoria(String pesquisa, String opcao_filtro)
	   {	
			

			ArrayList<Auditoria> pesquisar_auditoria = new ArrayList<Auditoria>();
			Auditoria c;
		   try
		   {
			   statement = CON.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
               String sql_pesquisa="";
               if (opcao_filtro.equals("folhaderosto"))
            	   sql_pesquisa = "select * from documentosauditoria where upper(folhaderosto) like '%"+pesquisa.toUpperCase()+"%'";
			   else  if (opcao_filtro.equals("periodo"))
				   sql_pesquisa = "select * from documentosauditoria where upper(periodo) like '%"+pesquisa.toUpperCase()+"%'";
			   else  if (opcao_filtro.equals("anexo_volume"))
				   sql_pesquisa = "select * from documentosauditoria where upper(anexo_volume) like '%"+pesquisa.toUpperCase()+"%'";
			   else  if (opcao_filtro.equals("processo"))
				   sql_pesquisa = "select * from documentosauditoria where upper(processo) like '%"+pesquisa.toUpperCase()+"%'";
			   else  if (opcao_filtro.equals("interessado"))
				   sql_pesquisa = "select * from documentosauditoria where upper(interessado) like '%"+pesquisa.toUpperCase()+"%'";
			   else  if (opcao_filtro.equals("assuntoauditoria"))
				   sql_pesquisa = "select * from documentosauditoria where upper(assunto) like '%"+pesquisa.toUpperCase()+"%'";
			   else  if (opcao_filtro.equals("ocr"))
				   sql_pesquisa = "select * from documentosauditoria where upper(ocr) like '%"+pesquisa.toUpperCase()+"%'";
			   
			   
			   resultset = statement.executeQuery(sql_pesquisa);

			   while (resultset.next())				   
			   {
				   c = new Auditoria();  
				   
				   c.setFolhaderosto(resultset.getString("folhaderosto"));  
				   c.setData(resultset.getString("data")); 
				   c.setPeriodo(resultset.getString("periodo")); 
				   c.setAnexo_volume(resultset.getString("anexo_volume")); 
				   c.setProcesso(resultset.getString("processo")); 
				   c.setInteressado(resultset.getString("interessado")); 
				   c.setAssunto(resultset.getString("assunto")); 
				   c.setImagem(resultset.getString("imagem")); 
				   c.setOcr(resultset.getString("ocr")); 
				   c.setPasta(resultset.getString("pasta"));  
				   pesquisar_auditoria.add(c);
				  
				   
				   
				  
			   }
		   }
		   catch(SQLException Banco)
		   {
			  
		   }
		   return pesquisar_auditoria;
	   }

Nesse comando eu verifico se o .pdf existe no local pré-definido por mim é ai que está o problema, queria que tive uma pasta exemplo sistemaweb dentro um diretorio imagens e pronto, independente do comptuador ele sempre iria buscar nessa pasta segue exemplo abaixo:

public boolean verificaPDF(String pas,String res, Boolean status){
	
    
    File f = new File("C:\\Users\\SC\\Desktop\\swamp\\Imagem\\"+ pas + "\\" + res);
    
    if (f.exists()){  
    	
    	status = true; 
    	return true;
 
    }else{
    	
    	status = false;
    	return false; 
    
    }
	
	}

Da mesma forma está o código de abrir o .pdf, só é aberto no servidor e não na máquina cliente segue código:


public void abrirPDF(String pas,String res){
		
		java.awt.Desktop desktop = java.awt.Desktop.getDesktop();  
				       
		try{
		
			desktop.open(new File("C:\\Users\\SC\\Desktop\\swamp\\Imagem\\"+ pas + "\\" + res));  
				        } catch(IOException e){
				        System.out.println("ERRO: " + e.getMessage());
				        }
		
	}

Então gente desde já eu agradeço a todos por esse canal de ajuda um abraço.

Para que consiga abrir o pdf tem que fazer o download.

[code]public String downloadDocumentoPDF(String caminhoArquivo) {
try {
File arquivoDownload = new File(caminhoArquivo);
byte[] arquivoBytes = ArquivoUtil.getBytesFromFile(arquivoDownload);
//caminhoArquivo = caminhoArquivo.substring(caminhoArquivo.lastIndexOf(’/’) + 1);

		//HttpServletResponse response = (HttpServletResponse)extCtx.getResponse();
		HttpServletResponse response = (HttpServletResponse)FacesContext.getCurrentInstance().getExternalContext().getResponse();
		response.setContentType("application/pdf");
		//response.setContentType("application/octet-stream");
	    response.addHeader("Content-disposition", "attachment; filename=\"" + caminhoArquivo + "\"");
		try {
			ServletOutputStream os = response.getOutputStream();
			os.write(arquivoBytes);
			os.flush();
			os.close();
			FacesContext.getCurrentInstance().responseComplete();
			//facesContext.responseComplete();
		} catch(Exception e) {
			addErrorMessageResource("erro.download.documento");
			log.error("\nFailure : " + e.toString() + "\n");
			return null;
		}
	} catch (Throwable th) {
		addErrorMessageResource("erro.download.documento");
		log.error("Erro executando download de PDF. ", th);
	}
	return null;
}[/code]