Abrir um arquivo pdf/txt

Boa tarde,

Estou inserindo na aplicação os arquivos pdf / txt porém o Elipse E3 roda em um Servidor.

Quando abro a aplicação no Viewer do servidor o arquivo aparace, porém como temos outros viewers em outros computadores eles não abrem o arquivo devido o arquivo estar na unidade C:/ do servidor.

É possível abrir em outros viewers também ?

Obrigado.

Olá @Victor85, teve avanço neste tópico?

Opa @AfonsoCalado não tive ainda não.

Olá @Victor85, existe algumas formas de resolver sua demanda, comentando rápido sobre seria armazenar esses documentos em um banco de dados de forma binaria onde te traria uma certa segurança e acessibilidade.

Um outro método seria capturar diretamente no diretorio onde está aramazenado que pela descrição que você fez seria esse seu caso, baseado nisto realizei a seguinte solução que talvez possa te ajudar…

Objetos no servidor

  1. Crie um InternalTag no servidor, eu o nomiei de ReadDoc, onde esse objeto irá receber do local onde realizado o gatilho um valor (string) usado como chave no código a seguir onde faz referência ao caminho do documento desejado.
  2. Crie um InternalTag no servidor, eu o nomiei de ResponseDoc, onde esse objeto irá receber a resposta do script de busca pelo documento, onde os valores podem ser um Array indicando erro ou um objeto do tipo File indicando sucesso.

Script localizado no evento criado pelo usuário com expressão Value com a condição de ocorrência sendo a sua alteração de valor

Sub ReadDoc_Open()
	Dim objPDF
	Dim objFSO
	Dim objResponse 
	Dim dPath
	Dim sPath
	
	
	' Verificando se o valor inputado e correto
	If Value = "" Then Exit Sub
	
	' Capturando a tag de resposta
	Set objResponse = Parent.Item("ResponseDoc")	
	
	' Criando dicionario para armazenar o caminho dos arquivos 
	Set dPath = CreateObject("Scripting.Dictionary")
	
	' Criando objeto para tratar os arquivos 
	Set objFSO = CreateObject("Scripting.FileSystemObject")
	
	' Atribuindo caminho dos arquivos com relacao entre e chave e valor no dicionario
	' Para cada novo arquivo insira a Chave, Caminho
	dPath.Add "Teste", "D:\Curriculo\Afonso Calado Silva.pdf"
	
	' Verificando se exite o arquivo solicitado
	If (dPath.Exists(Value)) Then
	
		' Capturando caminho do arquivo
		sPath = dPath.Item(Value)
		
		If Not (objFSO.FileExists(sPath)) Then
			Application.Trace "Não encontrou o arquivo: " &_
						  	sPath
			objResponse.Value = Array("Nop")						 
			Exit Sub
		End if 
		
    	' Capturando o arquivo
    	Set objPDF = objFSO.GetFile(sPath)
			
   		Set objResponse.Value = objPDF
   	Else 
   		objResponse.Value = Array("Nop")						 
		Exit Sub	
   	End If 
End Sub

Objeto no viewer
Script inserido no objeto de gatilho, no caso apresentado apenas um simples botão

Sub CommandButton1_Click()
	Dim objReadPDF
	Dim objResponsePDF

	' Capturando tag de gatilho
    Set objReadPDF = Application.GetObject("Dados.ReadDoc")
	
	' Passando o valor chave 
    objReadPDF.Value = "Teste"
    
    ' Capturando tag de resposta
    Set objResponsePDF = Application.GetObject("Dados.ResponseDoc")
    
    ' Acionando a rotina
	OpenDoc objResponsePDF.Value
End Sub
'
' Cria o documento e apresenta em tela 
' @Params {DocPDF} Documento PDF a ser visualizado
'
Private Sub OpenDoc( DocPDF )
	Dim objFSO
    Dim objShell
	Dim sPathDoc
    Dim sPathDirectory
    Dim sNameDoc
    Dim sTypeDoc
    Dim sReadDoc
	Dim bFlagExistDoc
	Dim objNewDOC

	' Verificando se o parametro esta corrreo
	If (IsArray(DocPDF)) Then 
		Exit Sub
	Else 
		' TODO: tratamento para arquivo nao encontrado
	End If
	
    ' Criando objeto de documentos
	Set objFSO = CreateObject("Scripting.FileSystemObject")
	
	' Caminho do documento a ser verificado a existencia
	sPathDirectory = "C:\Mov\"
	sPathDoc = sPathDirectory & DocPDF.Name
	
	' Capturando nome e tipo do documento 
	sNameDoc = Split(DocPDF.Name,".")(0)
	sTypeDoc = Iif(Instr(1, DocPDF.Type, "PDF", 1) > 0, ".pdf", Iif(Instr(1, DocPDF.Type, "Texto", 1) > 0,".txt",""))
	
	' Valida se o tipo do documento e PDF ou TXT
	If (sTypeDoc = "") Then 
			Exit Sub
	Else 
		' TODO: tratamento para tipo nao encontrado
	End If
	
	If ( Not objFSO.FileExists(sPathDoc) ) Then
		
		' Alterando o nome do documento a ser cirado 
		' iniciamente sempre sendo criado como txt
		sPathDoc = sPathDirectory & sNameDoc & ".txt"
		
        ' Criando o documento para no diretorio
      	Set objNewDOC = objFSO.CreateTextFile(sPathDoc, True)
      	
      	' Realiza a leitura completa do documento
      	sReadDoc = DocPDF.OpenAsTextStream(1,0).ReadAll
      	
      	' Transfere o valor para o novo documento criado
      	objNewDOC.Write sReadDoc
      	
      	' Alterando o formato do documento
      	If ( sTypeDoc = ".pdf" ) Then
      		Set objNewDOC = objFSO.GetFile(sPathDoc)
      		' Atualizando a extensao para pdf
      		objNewDOC.Name = sNameDoc & ".pdf"
      		
      		' Atualizando o caminho do documento com o novo formato
      		sPathDoc = sPathDirectory & objNewDOC.Name
      	End If
      	
        ' Verificando a movimentacao com sucesso do arquivo
        If ( Not objFSO.FileExists(sPathDoc) ) Then
            Msgbox " Erro na movimentacao para o diretorio: " &_
                sPathDoc, vbInformation, "Atenção"
            Exit Sub
        End If 
    End If
        
    Set objShell = CreateObject("WScript.Shell")

    objShell.Run """" & sPathDoc & """"
	
End Sub

Observações

  1. O script trata com os documento PDF/Txt apenas com o formato ASCII.
  2. O valor de chave está fixo no código, seria ideal isto ser inputado e de preferência com valores definido, como uma lista sem opção de digitação.
  3. Leve em consideração que está sendo trafegado entre o cliente e o servidor um documento com alguns Kb ou Mb, então a depender de sua arquitetura (cliente/servidor) isso pode ser um pouco custoso, rodando em uma PAN é tudo muito lindo!

Bom dia,

@AfonsoCalado, Assim que possível vou testar.

Obrigado.