PDF com link para documentos
Moderador: Moderadores
-
luizmachado
- Usuário Nível 1

- Mensagens: 2
- Registrado em: 06 Mar 2023 19:19
- Localização: rio de janeiro
PDF com link para documentos
Boa tarde pessoal. Estou desenvolvendo uma aplicacao que emite um extrato de pagamentos em PDF e, para cada pagamento (linha do extrato), preciso exibir um link para a imagem (PDF) daquele documento. Eh tipo extrato bancario onde voce clica para ver o cheque ou guia de deposito. Todos os documentos estao codificados e assim posso usar este codigo como link ou colocar uma lupa que me direcione para o ducumento desejado. Exibido o ducumento, no mesmo tem que ter um botao VOLTAR para que se retorne ao extrato. Alguem tem uma solucao para isto? Nao estou usando a Haru PDF, gero o arquivo usando uma printer PDF. Desde ja, obrigado.
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
PDF com link para documentos
Olá!
Bem vindo ao forum!
AS libs gráficas tem o controle LINK.(URL)
Mas eu acredito que usando HTML será mais simples.
Não informou qual é a sua LIB.
Saudações,
Itamar M. Lins Jr.
Bem vindo ao forum!
AS libs gráficas tem o controle LINK.(URL)
Mas eu acredito que usando HTML será mais simples.
Não informou qual é a sua LIB.
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
PDF com link para documentos
Sinceramente......luizmachado escreveu:Todos os documentos estao codificados e assim posso usar este codigo como link ou colocar uma lupa que me direcione para o ducumento desejado. Exibido o ducumento, no mesmo tem que ter um botao VOLTAR para que se retorne ao extrato.
Vai precisar do computador pra isso, então faz logo no aplicativo.
Caso contrário, me parece uma espécie de aplicativo dentro do PDF, e nem sei se isso é possível pelos meios normais.
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/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
PDF com link para documentos
informou sim.Itamar M. Lins Jr. escreveu:Não informou qual é a sua LIB.
luizmachado escreveu:gero o arquivo usando uma printer PDF
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/
- carlaoonline
- Usuário Nível 3

- Mensagens: 190
- Registrado em: 24 Ago 2014 22:38
- Localização: Porto Alegre-RS
PDF com link para documentos
Bom dia!
Mas independente da questão se segurança, é possível sim fazer um PDF com uma lista de links para outros PDF's (ou qualquer outro link) usando #require "hbhpdf" e #include 'harupdf.ch' e a função "HPDF_Page_CreateURILinkAnnot"
A função HPDF_Page_CreateURILinkAnnot() é usada para criar uma anotação de link para um URI (Uniform Resource Identifier) dentro de um arquivo PDF criado em Harbour. Essa anotação permite que o usuário clique em um link dentro do PDF e seja redirecionado para uma página da web, um arquivo PDF ou outro recurso da internet.
Abaixo estão os parâmetros da função HPDF_Page_CreateURILinkAnnot():
As coordenadas podem ser por meio de uma matriz:
Eu faria a listagem em um browser e do browse abre os demais PDF's, pois talvez terá problemas com a questão de segurança de cada visualizador de PDF que estiver como padrão para cada usuário.luizmachado escreveu:Alguem tem uma solucao para isto?
Mas independente da questão se segurança, é possível sim fazer um PDF com uma lista de links para outros PDF's (ou qualquer outro link) usando #require "hbhpdf" e #include 'harupdf.ch' e a função "HPDF_Page_CreateURILinkAnnot"
A função HPDF_Page_CreateURILinkAnnot() é usada para criar uma anotação de link para um URI (Uniform Resource Identifier) dentro de um arquivo PDF criado em Harbour. Essa anotação permite que o usuário clique em um link dentro do PDF e seja redirecionado para uma página da web, um arquivo PDF ou outro recurso da internet.
Abaixo estão os parâmetros da função HPDF_Page_CreateURILinkAnnot():
Exemplos:page: O objeto de página HPDF_Page em que a anotação de link deve ser criada.
x_left: A posição x esquerda do retângulo de anotação.
y_bottom: A posição y inferior do retângulo de anotação.
x_right: A posição x direita do retângulo de anotação.
y_top: A posição y superior do retângulo de anotação.
uri: O URI de destino do link. Deve ser uma string ASCII.
border_style: O estilo da borda do retângulo de anotação. Pode ser "HPDF_AnnotBorderStyle.SOLID", "HPDF_AnnotBorderStyle.DASHED" ou "HPDF_AnnotBorderStyle.BEVELED".
hilight_mode: O modo de destaque do link. Pode ser "HPDF_AnnotHighlightMode.INVERT" ou "HPDF_AnnotHighlightMode.OUTLINE".
font: O objeto de fonte HPDF_Font usado para renderizar o texto do link. Pode ser NULL para usar a fonte padrão.
font_size: O tamanho da fonte do texto do link.
color: A cor do texto do link. Deve ser especificada em formato RGB.
Código: Selecionar todos
HPDF_Page_CreateURILinkAnnot(page, x_left, y_bottom, x_right, y_top, "http://www.exemplo.com", HPDF_AnnotBorderStyle.SOLID, HPDF_AnnotHighlightMode.INVERT, NULL, 12, [0, 0, 255]);
Código: Selecionar todos
border_style := HPDF_AnnotBorderStyle.DASHED;
hilight_mode := HPDF_AnnotHighlightMode.NONE;
HPDF_Page_CreateURILinkAnnot(page, x_left, y_bottom, x_right, y_top, "http://www.exemplo.com", border_style, hilight_mode, NULL, 10, [0, 128, 0]);
Código: Selecionar todos
font := HPDF_GetFont(doc, "Helvetica-Bold", NULL);
HPDF_Page_CreateURILinkAnnot(page, x_left, y_bottom, x_right, y_top, "http://www.exemplo.com", HPDF_AnnotBorderStyle.BEVELED, HPDF_AnnotHighlightMode.OUTLINE, font, 14, [255, 0, 0]);
As coordenadas podem ser por meio de uma matriz:
Código: Selecionar todos
local coords := {50, 50, 150, 75}
HPDF_Page_CreateURILinkAnnot(page, coords, "http://www.exemplo.com", HPDF_AnnotBorderStyle.SOLID, HPDF_AnnotHighlightMode.INVERT, NULL, 12, [0, 0, 255])
- carlaoonline
- Usuário Nível 3

- Mensagens: 190
- Registrado em: 24 Ago 2014 22:38
- Localização: Porto Alegre-RS
PDF com link para documentos
Aqui está um código bem reduzido que fiz a partir do fonte original da pasta criada na instalação do MiniGui
C:\MiniGUI\SAMPLES\Advanced\HaruPDF
O aplicativo cria um PDF chamado TestHaru.pdf que possui um link para abrir o comprovante_01.pdf
Segue os 2 PDF para ver na prática.
C:\MiniGUI\SAMPLES\Advanced\HaruPDF
O aplicativo cria um PDF chamado TestHaru.pdf que possui um link para abrir o comprovante_01.pdf
Código: Selecionar todos
#require "hbhpdf"
#include 'harupdf.ch'
#include "minigui.ch"
#define rLEFT 1
#define rTOP 2
#define rRIGHT 3
#define rBOTTOM 4
Memvar MyPdf, cpos
*------------------------------------------------------------------------*
Function Main( cFileToSave )
*------------------------------------------------------------------------*
default( cFileToSave ) to 'TestHaru.pdf'
Public MyPdf:= cFileToSave
SET AUTOADJUST ON
DEFINE WINDOW mh ;
AT 0,0 ;
WIDTH 300;
HEIGHT 200 ;
TITLE "Link no PDF" ;
MAIN
@ 20 , 20 ButtonEX Botao_Criar CAPTION "Criar PDF" WIDTH 100 HEIGHT 30 ACTION Generate(MyPdf)
@ 80 , 20 ButtonEX Botao_Ver CAPTION "Abrir PDF" WIDTH 100 HEIGHT 30 ACTION view( Mypdf )
END WINDOW
CENTER WINDOW mh
ACTIVATE WINDOW mh
Return Nil
*------------------------------------------------------------------------*
Function Generate( cFileToSave )
*------------------------------------------------------------------------*
If file(cFileToSave)
Ferase(cFileToSave)
Endif
if DesignHaruPDF( cFileToSave )
MsgInfo( 'PDF File <'+cFileToSave+'> is Created!' )
else
MsgAlert( 'Some problems in creating the PDF!', 'Error' )
endif
Return nil
*------------------------------------------------------------------------*
Function View( cFileToSave )
*------------------------------------------------------------------------*
if file(cFileToSave)
execute file cFileToSave
Else
msgalert ("Press generate first!", 'Alert')
Endif
return nil
*------------------------------------------------------------------------*
Function DesignHaruPDF( cFileToSave )
*------------------------------------------------------------------------*
Local i, page, height, width, def_font, tw, samp_text, font, grid := .f.
Local page_title := 'Minigui Extended Pdf Generator Demo'
Local font_list := { ;
"Courier", ;
"Courier-Bold", ;
"Courier-Oblique", ;
"Courier-BoldOblique", ;
"Helvetica", ;
"Helvetica-Bold", ;
"Helvetica-Oblique", ;
"Helvetica-BoldOblique", ;
"Times-Roman", ;
"Times-Bold", ;
"Times-Italic", ;
"Times-BoldItalic", ;
"Symbol", ;
"ZapfDingbats" ;
}
Local pdf := HPDF_New()
Public cpos :={}
if pdf == NIL
msgalert( 'Pdf could not been created!', 'Error' )
return nil
endif
If file ( cFileToSave )
Ferase( cFileToSave )
Endif
/* set compression mode */
HPDF_SetCompressionMode( pdf, HPDF_COMP_ALL )
Page_Link_Annotation( pdf )
HPDF_SaveToFile( pdf, cFileToSave )
* msgbox(HPDF_GETERROR(),"Errore")
HPDF_Free( pdf )
release cpos
return file( cFileToSave )
RETURN NIL
*------------------------------------------------------------------------*
Static Function Page_Link_Annotation( pdf )
*------------------------------------------------------------------------*
Local index_page, Font, /*i,*/ Tp, Dst, annot, rect := array(4), page:={},;
Uri:= "comprovante_01.PDF" //,pagex
// Uri:= "http://www.hmgextended.com" //,pagex
/* create default-font */
font := HPDF_GetFont (pdf, "Helvetica", Nil)
/* create index page */
index_page := HPDF_AddPage (pdf)
HPDF_Page_SetWidth (index_page, 300)
HPDF_Page_SetHeight (index_page, 220)
HPDF_Page_BeginText (index_page)
HPDF_Page_SetFontAndSize (index_page, font, 10)
HPDF_Page_MoveTextPos (index_page, 15, 200)
HPDF_Page_ShowText (index_page, "Link Annotation Demo")
HPDF_Page_EndText (index_page)
* Create Link-Annotation object on index page.
HPDF_Page_BeginText(index_page)
HPDF_Page_SetFontAndSize (index_page, font, 8)
HPDF_Page_MoveTextPos (index_page, 20, 180)
HPDF_Page_SetTextLeading (index_page, 23)
// URI link
tp = HPDF_Page_GetCurrentTextPos (index_page)
HPDF_Page_ShowText (index_page, "URI (")
HPDF_Page_ShowText (index_page, uri)
HPDF_Page_ShowText (index_page, ")")
/* FORAM DEFINIDAS LA NO INICIO DO CODIGO...
#define rLEFT 1
#define rTOP 2
#define rRIGHT 3
#define rBOTTOM 4
*/
rect [ rLEFT ] := Tp[1] - 4
rect [ rBOTTOM ] := Tp[2] - 4
rect [ rRIGHT ] := HPDF_Page_GetCurrentTextPos (index_page)[1]+ 4
rect [ rTOP ] := Tp[2] + 10
HPDF_Page_CreateURILinkAnnot (index_page, rect, uri)
HPDF_Page_EndText (index_page)
Return Nil
-
luizmachado
- Usuário Nível 1

- Mensagens: 2
- Registrado em: 06 Mar 2023 19:19
- Localização: rio de janeiro
PDF com link para documentos
Obrigado a todos, especialmente ao Carlao. Vou tentar por esta linha. Que tiver outras sugestoes desde ja agradeco.