Mostrar PDF sem opção de salvar/etc
Moderador: Moderadores
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Mostrar PDF sem opção de salvar/etc
Úso o formato PDF pra muita coisa, incluindo os relatórios normais do sistema.
Até aí... tudo normal.
Mas não reparei em uma coisa:
Tem lá a opção de salvar como...
Nisto o usuário pode navegar por todas as pastas, e até mesmo salvar o PDF encima de um DBF.
Existe alguma opção de bloquear isto?
Motivo: ao liberar acesso pra fora da empresa, tudo pode acontecer.
Até aí... tudo normal.
Mas não reparei em uma coisa:
Tem lá a opção de salvar como...
Nisto o usuário pode navegar por todas as pastas, e até mesmo salvar o PDF encima de um DBF.
Existe alguma opção de bloquear isto?
Motivo: ao liberar acesso pra fora da empresa, tudo pode acontecer.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
Mostrar PDF sem opção de salvar/etc
Olá José,
Com o PDFCreator você pode desabilitar essas opções antes de enviar, mas se alguém estiver mal intencionado isso nem adianta. Na internet tem vários programas que quebram essa proteção.
Com o PDFCreator você pode desabilitar essas opções antes de enviar, mas se alguém estiver mal intencionado isso nem adianta. Na internet tem vários programas que quebram essa proteção.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Mostrar PDF sem opção de salvar/etc
A intenção é apenas aonde está rodando o sistema.
O sistema abre o PDF na máquina aonde está o sistema e os arquivos.
É nesta hora que precisaria proteção.
O preview do relatório:
Com o arquivo aberto, no computador aonde está o aplicativo, toda máquina fica disponível.
Ao liberar aplicativo remoto no servidor, todo servidor fica disponível.
Só porque a visualização tem a opção de salvar...
É até esquisito salvar o que está salvo, mas fizeram isso no visualizador...
O sistema abre o PDF na máquina aonde está o sistema e os arquivos.
É nesta hora que precisaria proteção.
O preview do relatório:
Código: Selecionar todos
run ( "start arquivo.pdf" )
Ao liberar aplicativo remoto no servidor, todo servidor fica disponível.
Só porque a visualização tem a opção de salvar...
É até esquisito salvar o que está salvo, mas fizeram isso no visualizador...
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
Mostrar PDF sem opção de salvar/etc
Amiguinho,
O problema esta no comando RUN() pois ao executá-lo você abre o aplicativo padrão para manipulação destes arquivos.
O que você deseja?
Ao clicar no PDF já imprimir ou visualizar.
Você pode usar automação OLE a agir diretamente sobre o PDF.OCX do Acrobat e enxertar dentro de uma popup o controle, permitindo o preview, mas não as opções de salvar.
Ilustrando com código:
No evento ExecWB(), no primeiro paramêtro, o 6 significa que quero imprimir. Desta forma voce usa o S.O. burlando a interface do PDF reader padrão.
O problema esta no comando RUN() pois ao executá-lo você abre o aplicativo padrão para manipulação destes arquivos.
O que você deseja?
Ao clicar no PDF já imprimir ou visualizar.
Você pode usar automação OLE a agir diretamente sobre o PDF.OCX do Acrobat e enxertar dentro de uma popup o controle, permitindo o preview, mas não as opções de salvar.
Ilustrando com código:
Código: Selecionar todos
LOCAL oIE
Default lPrint := .f.
Default cEndereco := "c:\temp\arquivo.pdf"
oIE:=TOleAuto():New( "InternetExplorer.Application" )
oIE:Visible := .T.
oIE:ToolBar := .F.
oIE:StatusBar := .F.
oIE:Top := 055
oIE:Left := 001
oIE:Height := 600
oIE:Width := 800
oIE:MenuBar := .F.
oIE:Navigate( cEndereco )
if lPrint
oIE:ExecWB(6,0,0,0) // Imprimir
endif
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Mostrar PDF sem opção de salvar/etc
Testei e só precisei alterar esta parte:
É interessante, mas deu praticamente no mesmo.
Na janela final, ao colocar o mouse sobre o relatório abrem opções de salvar/imprimir, e também a opção de mostrar todo o menu, até mesmo a opção de enviar por email (opções do Reader e não do explorer).
A opção "salvar como", apesar de inocente é perigosa, porque o usuário poderia salvar como "clientes.dbf" e destruir o cadastro.
A opção "enviar por email" também é evitada em alguns lugares, porque o funcionário pode levar a lista de tudo.
Uma coisa é usar isso na máquina local, e outra coisa é no servidor por aplicativo remoto.
Tem que lembrar que sempre podem existir filhos e colegas dos filhos de quem usa, que podem querer "testar" suas habilidades em invadir/bagunçar qualquer coisa.
Eu nunca tinha pensado por este lado antes.
Nota: em aplicativo remoto, o aplicativo vai estar usando os recursos do servidor, incluindo abrir o PDF no próprio servidor, e também a pasta de DBFs vai estar liberada, já que o aplicativo precisa disso, mesmo que o PDF seja salvo/aberto em outra pasta.
Código: Selecionar todos
oIE := win_OleCreateObject( "InternetExplorer.Application" )
Na janela final, ao colocar o mouse sobre o relatório abrem opções de salvar/imprimir, e também a opção de mostrar todo o menu, até mesmo a opção de enviar por email (opções do Reader e não do explorer).
A opção "salvar como", apesar de inocente é perigosa, porque o usuário poderia salvar como "clientes.dbf" e destruir o cadastro.
A opção "enviar por email" também é evitada em alguns lugares, porque o funcionário pode levar a lista de tudo.
Uma coisa é usar isso na máquina local, e outra coisa é no servidor por aplicativo remoto.
Tem que lembrar que sempre podem existir filhos e colegas dos filhos de quem usa, que podem querer "testar" suas habilidades em invadir/bagunçar qualquer coisa.
Eu nunca tinha pensado por este lado antes.
Nota: em aplicativo remoto, o aplicativo vai estar usando os recursos do servidor, incluindo abrir o PDF no próprio servidor, e também a pasta de DBFs vai estar liberada, já que o aplicativo precisa disso, mesmo que o PDF seja salvo/aberto em outra pasta.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
Mostrar PDF sem opção de salvar/etc
Amiguinho,
Então vai mais uma dica, esta é um hack.
Ao invés de chamar o arquivo diretamente chame-o indiretamente criando uma proteção.
O javascript permite acesso a recursos que podem ser úteis na apresentação de conteúdos pelos motores de internet.
Um deles é o desabilitar botões e teclas.
O código que desabilita é:
Então voce deverá chamar o InternetExplorer.Application mas passando para ele o parâmetro:
O pulo do gato estaria em chamar o .PDF de dentro do .HTM:
Então vai mais uma dica, esta é um hack.
Ao invés de chamar o arquivo diretamente chame-o indiretamente criando uma proteção.
O javascript permite acesso a recursos que podem ser úteis na apresentação de conteúdos pelos motores de internet.
Um deles é o desabilitar botões e teclas.
O código que desabilita é:
Código: Selecionar todos
<script language=Javascript>
function botaodireito()
{ if(event.button==2) { alert( " Botão direito desabilitado! ")}}
document.onmousedown= botaodireito
</script> Código: Selecionar todos
cEndereco := "imprimir.htm"
...
oIE:Navigate( cEndereco )
Código: Selecionar todos
<script type="text/javascript" language="javascript">
var App = new ActiveXObject( "AcroPDF.PDF.1" );
App.LoadFile('C:\\temp\\TMPe9832hu.pdf');
</script>
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
Mostrar PDF sem opção de salvar/etc
Amiguinho,
Faça um teste com este aplicativo.
Executar:
pdf3 arquivo.pdf "JPA - Systems"
Codigo usado:
Para efeito de documentação deixo os links para uso futuro:
API Reference PDF
AcroPDF Manual.pdf
Faça um teste com este aplicativo.
Executar:
pdf3 arquivo.pdf "JPA - Systems"
Codigo usado:
Código: Selecionar todos
// FiveWin ActiveX support demo - Using Adobe Acrobat Reader
// Alteracao: 13/11/2014
// Jose Carlos da Rocha
#include "FiveWin.ch"
function Main( cPDFFile, cTitle )
LOCAL oPDFWnd
LOCAL oPDF
LOCAL sActivex := ""
DEFAULT cTitle := "JPA - Report Systems"
do case
case IsActivex( "AcroPDF.PDF.1" ); sActivex := "AcroPDF.PDF.1"
case IsActivex( "PDF.PdfCtrl.1" ); sActivex := "PDF.PdfCtrl.1"
case IsActivex( "PDF.PdfCtrl.2" ); sActivex := "PDF.PdfCtrl.2"
case IsActivex( "PDF.PdfCtrl.3" ); sActivex := "PDF.PdfCtrl.3"
case IsActivex( "PDF.PdfCtrl.4" ); sActivex := "PDF.PdfCtrl.4"
case IsActivex( "PDF.PdfCtrl.5" ); sActivex := "PDF.PdfCtrl.5"
endcase
if empty( sActivex )
MsgStop( "Acrobat Reader nao instalado." )
else
cPDFFile := iif(!cPDFFile=NIL,cPDFFile,cGetFile( "PDF Files (*.pdf)|*.pdf|", "Selecione um arquivo",1) )
DEFINE WINDOW oPDFWnd TITLE cTitle
oPDF := TActiveX():New( oPDFWnd, sActivex )
oPDF:Do( "LoadFile", cPDFFile )
oPDF:Do( "SetCurrentPage", 1 )
oPDF:Do( "SetShowScrollbars", .f. )
oPDF:Do( "SetShowToolbar", .f. )
oPDFWnd:oClient := oPDF // To fill the entire window surface
ACTIVATE WINDOW oPDFWnd MAXIMIZED
SysRefresh()
endif
return nil
API Reference PDF
AcroPDF Manual.pdf
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.