Por favor alguém sabe como gerar arquivo .pdf a partir de um modelo .pdf? Outra dúvida é que meu modelo está em modo paisagem! Tera que fazer algum comando para inserir os dados no documento por este modelo? Estou usando as includes pdf http://www.oehive.org/pdfinclude, tenho a documentação e não estou conseguindo fazê-lo.... É isso! Agradeço!
Não sei se isso te ajuda! veja aí blz /******************************************************************************** ** Particular ** Todos os Direitos Reservados. ** Frat0318rp.p - Convite de treinamento ********************************************************************************/ &ANALYZE-SUSPEND _VERSION-NUMBER UIB_v8r12 &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS Procedure {include/i-prgvrs.i frat0318rp 2.04.00.000} /* *************************** Definitions ************************** */ &global-define programFRAT0318RP {frp/frat0318.i} {utp/utapi012.i} {include/i-wendef.i} /* webenabler*/ /* def buffer b_tt-digita for tt-digita. */ def temp-table tt-raw-digita field raw-digita as raw. DEF VAR C-des_conteudo AS CHAR FORMAT "X(100)" NO-UNDO. DEF VAR v_nom_pessoa_fisic LIKE rh_pessoa_fisic.nom_pessoa_fisic NO-UNDO. DEF VAR i-contador AS INTEGER NO-UNDO. def input parameter raw-param as raw no-undo. def input parameter table for tt-raw-digita. def var c-liter-sel as character format "x(10)". def var c-liter-imp as character format "x(12)". def var c-destino as character format "x(15)". def var h-acomp as handle no-undo. def var v_des_habcomp like habcomp.des_habcomp. def var v_des_proficiencia like proficiencia.des_proficiencia. def var v_des_plano like plano_habcomp.des_plano_habcomp. def var v_des_pre_requis as char format "x(2000)". def var v_des_item_reqdo as char format "x(2000)". def var v_des_unid_produt as char format "x(40)". def var v_des_carreira as char format "x(40)". def var v_des_bloco as char format "x(40)". def var v_des_campo as char format "x(20)" no-undo. def var v_num_dia_aux as int no-undo. def var i-campo as int init 0 no-undo. def var i_num_campo as int no-undo. def var i_num_pagina as int no-undo. def var v_num_sequencia as int no-undo. def var c-arquivo as char format "x(08)" no-undo. def var c_caminho as char format "x(40)" no-undo. def var v_arquivo as char format "x(90)" no-undo. /*variável para reconhecimento do web enabler*/ DEFINE SHARED VARIABLE hWenController AS HANDLE NO-UNDO. form skip(1) SPACE(30) "Parâmetros de Seleção" SKIP(1) space(20) "Curso: " tt-param.cdn_curso_ini COLON 40 NO-LABEL " |< >| " tt-param.cdn_curso_fim NO-LABEL SKIP(1) space(20) "Turma: " tt-param.cdn_turma_ini NO-LABEL COLON 40 " |< >| " tt-param.cdn_turma_fim NO-LABEL skip(1) SPACE(20) "Funcionario: " tt-param.cdn_funcionario_ini NO-LABEL COLON 40 " |< >| " tt-param.cdn_funcionario_fim NO-LABEL skip(1) skip(1) "Destino: " colon 31 tt-param.arquivo format "x(50)" no-label tt-param.usuario colon 40 skip(1) with stream-io side-labels no-attr-space no-box width 132 frame f-impressao. form c-arquivo format "x(23)" with no-attr-space no-box width 132 down stream-io frame f-relat. create tt-param. raw-transfer raw-param to tt-param. /* for each tt-raw-digita: create tt-digita. raw-transfer tt-raw-digita.raw-digita to tt-digita. end. */ {include/i-rpvar.i} find empresa no-lock where empresa.ep-codigo = tt-param.cdn_empresa no-error. {utp/ut-liter.i Administração_de_Treinamento * } assign c-sistema = return-value. {utp/ut-liter.i Convite_de_Treinamento * } assign c-titulo-relat = return-value. assign c-empresa = if avail empresa then empresa.razao-social else "" c-programa = "frat0318" c-versao = "1.00" c-revisao = "000" c-destino = {varinc/var00002.i 04 tt-param.destino}. run utp/ut-trfrrp.p (input frame f-relat:handle). run utp/ut-trfrrp.p (input frame f-impressao:handle). {include/i-rpcab.i &stream="str-rp"} /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-PREPROCESSOR-BLOCK /* ******************** Preprocessor Definitions ******************** */ &Scoped-define PROCEDURE-TYPE Procedure &Scoped-define DB-AWARE no /* _UIB-PREPROCESSOR-BLOCK-END */ &ANALYZE-RESUME /* *********************** Procedure Settings ************************ */ &ANALYZE-SUSPEND _PROCEDURE-SETTINGS /* Settings for THIS-PROCEDURE Type: Procedure Allow: Frames: 0 Add Fields to: Neither Other Settings: CODE-ONLY */ &ANALYZE-RESUME _END-PROCEDURE-SETTINGS /* ************************* Create Window ************************** */ &ANALYZE-SUSPEND _CREATE-WINDOW /* DESIGN Window definition (used by the UIB) CREATE WINDOW Procedure ASSIGN HEIGHT = 2 WIDTH = 40. /* END WINDOW DEFINITION */ */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK Procedure /* *************************** Main Block *************************** */ do on stop undo, leave: {include/i-rpout.i &stream="stream str-rp"} view stream str-rp frame f-cabec. view stream str-rp frame f-rodape. run utp/ut-acomp.p persistent set h-acomp. {utp/ut-liter.i Administração_de_Treinamento * } run pi-inicializar in h-acomp (input return-value). find usuar_mestre where usuar_mestre.cod_usuario = tt-param.usuario no-lock no-error. if avail usuar_mestre then assign c_caminho = if length(usuar_mestre.nom_subdir_spool) <> 0 then caps(replace(usuar_mestre.nom_dir_spool, "~\", "~/") + "~/" + replace(usuar_mestre.nom_subdir_spool, "~\", "~/") + "~/" + "dshc") else caps(replace(usuar_mestre.nom_dir_spool, "~\", "~/") + "~/" + "dshc"). else assign c_caminho = caps("spool~/" + "dshc"). run pi-seleciona. if tt-param.log_imprimir then run pi-imprime-parametros. run pi-finalizar in h-acomp. {include/i-rpclo.i &stream="stream str-rp"} RETURN "OK". end. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* ********************** Internal Procedures *********************** */ &IF DEFINED(EXCLUDE-pi-cria-tt-dados) = 0 &THEN &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE pi-cria-tt-dados Procedure PROCEDURE pi-cria-tt-dados : create tt-dados. assign tt-dados.campo-nome = v_des_campo tt-dados.campo-tipo = 3. END PROCEDURE. &ANALYZE-RESUME &ENDIF &IF DEFINED(EXCLUDE-pi-gera-form-word_) = 0 &THEN &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE pi-gera-form-word_ Procedure PROCEDURE pi-gera-form-word_ : assign v_num_sequencia = v_num_sequencia + 1. for each tt-configuracao2: delete tt-configuracao2. end. IF tt-param.destino = 3 THEN ASSIGN v_arquivo = string(SESSION:TEMP-DIRECTORY + "frat0318_" + STRING(v_num_sequencia,"99") + ".doc"). ELSE ASSIGN v_arquivo = string(tt-param.arquivo). ASSIGN v_arquivo = replace(v_arquivo, "lst", "doc"). ASSIGN v_arquivo = replace(v_arquivo, "txt", "doc"). assign v_arquivo = replace(v_arquivo, "~/", "~\"). OS-DELETE VALUE(v_arquivo). create tt-configuracao2. assign tt-configuracao2.versao-integracao = 1 tt-configuracao2.modelo = tt-param.arquivo-modelo tt-configuracao2.senha-modelo = "" tt-configuracao2.arquivo = v_arquivo. IF NOT VALID-HANDLE (hWenController) THEN DO: assign tt-configuracao2.abrir-word-termino = YES. END. RUN pi-impressao. for each tt-dados: delete tt-dados. end. END PROCEDURE. &ANALYZE-RESUME &ENDIF &IF DEFINED(EXCLUDE-pi-impressao) = 0 &THEN &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE pi-impressao Procedure PROCEDURE pi-impressao : RUN utp/utapi012.p persistent set h-utapi012. run pi-execute in h-utapi012 (input-output table tt-configuracao2, input-output table tt-dados, input-output table tt-erros). DELETE PROCEDURE h-utapi012. IF NOT VALID-HANDLE (hWenController) THEN DO: OS-DELETE VALUE(v_arquivo). END. END PROCEDURE. &ANALYZE-RESUME &ENDIF &IF DEFINED(EXCLUDE-pi-imprime-parametros) = 0 &THEN &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE pi-imprime-parametros Procedure PROCEDURE pi-imprime-parametros : page stream str-rp. disp stream str-rp tt-param.cdn_curso_ini tt-param.cdn_curso_fim tt-param.cdn_turma_ini tt-param.cdn_turma_fim tt-param.cdn_funcionario_ini FORMAT ">>>,>>>,>>9" tt-param.cdn_funcionario_fim FORMAT ">>>,>>>,>>9" tt-param.arquivo tt-param.usuario with frame f-impressao. END PROCEDURE. &ANALYZE-RESUME &ENDIF &IF DEFINED(EXCLUDE-pi-seleciona) = 0 &THEN &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE pi-seleciona Procedure PROCEDURE pi-seleciona : assign v_num_sequencia = 0. assign i_num_campo = 0 i_num_pagina = 1 i-campo = 0. ASSIGN i-contador = 0. FOR EACH AT_turma_treinando NO-LOCK WHERE AT_turma_treinando.cdn_curso >= tt-param.cdn_curso_ini AND AT_turma_treinando.cdn_curso <= tt-param.cdn_curso_fim AND AT_turma_treinando.cdn_turma >= tt-param.cdn_turma_ini AND AT_turma_treinando.cdn_turma <= tt-param.cdn_turma_fim AND AT_turma_treinando.num_pessoa_fisic >= tt-param.cdn_funcionario_ini AND AT_turma_treinando.num_pessoa_fisic <= tt-param.cdn_funcionario_fim : FIND FIRST AT_curso where at_curso.cdn_curso = AT_turma_treinando.cdn_curso NO-LOCK NO-ERROR. find rh_pessoa_fisic no-lock where rh_pessoa_fisic.num_pessoa_fisic = AT_turma_treinando.num_pessoa_fisic no-error. If avail rh_pessoa_fisic then assign v_nom_pessoa_fisic = rh_pessoa_fisic.nom_pessoa_fisic. ELSE assign v_nom_pessoa_fisic = " ". FIND FIRST AT_local_horario WHERE AT_local_horario.cdn_curso = AT_turma_treinando.cdn_curso AND AT_local_horario.cdn_turma = AT_turma_treinando.cdn_turma NO-LOCK NO-ERROR. FIND FIRST AT_local WHERE AT_local.cdn_local = AT_local_horario.cdn_local NO-LOCK NO-ERROR. IF AVAIL AT_curso and AVAIL AT_local_horario AND AVAIL AT_local THEN DO: ASSIGN i-contador = i-contador + 1. /*** Criando a temp-table para mostrar no formulário ***/ assign i-campo = i-campo + 1. assign v_des_campo = "cod":U + string(i-campo). /* 1 */ run pi-cria-tt-dados. assign tt-dados.campo-valor = string(at_turma_treinando.cdn_treinando). /* string(AT_turma_treinando.num_pessoa_fisic). */ assign i-campo = i-campo + 1. assign v_des_campo = "cod":U + string(i-campo). /* 2 */ run pi-cria-tt-dados. assign tt-dados.campo-valor = string(v_nom_pessoa_fisic). assign i-campo = i-campo + 1. assign v_des_campo = "cod":U + string(i-campo). /* 3 */ run pi-cria-tt-dados. assign tt-dados.campo-valor = string(AT_curso.des_curso). assign i-campo = i-campo + 1. assign v_des_campo = "cod":U + string(i-campo). /* 4 */ run pi-cria-tt-dados. assign tt-dados.campo-valor = string(AT_turma_treinando.dat_ini). assign i-campo = i-campo + 1. assign v_des_campo = "cod":U + string(i-campo). /* 5 */ run pi-cria-tt-dados. assign tt-dados.campo-valor = string(AT_turma_treinando.dat_fim). assign i-campo = i-campo + 1. assign v_des_campo = "cod":U + string(i-campo). /* 6 */ run pi-cria-tt-dados. assign tt-dados.campo-valor = SUBSTRING(AT_local_horario.hra_ini,1,2) + ":" + SUBSTRING(AT_local_horario.hra_ini,3,2). assign i-campo = i-campo + 1. assign v_des_campo = "cod":U + string(i-campo). /* 7 */ run pi-cria-tt-dados. assign tt-dados.campo-valor = SUBSTRING(AT_local_horario.hra_fim,1,2) + ":" + SUBSTRING(AT_local_horario.hra_fim,3,2). assign i-campo = i-campo + 1. assign v_des_campo = "cod":U + string(i-campo). /* 8 */ run pi-cria-tt-dados. assign tt-dados.campo-valor = string(AT_local.des_local). FOR EACH AT_curso_conteudo WHERE AT_curso_conteudo.cdn_curso = AT_turma_treinando.cdn_curso NO-LOCK: assign i-campo = i-campo + 1. ASSIGN C-DES_CONTEUDO = SUBSTRING(AT_CURSO_CONTEUDO.DES_CONTEUDO,1,400). assign v_des_campo = "cod":U + string(i-campo). /* 9 a 14 */ run pi-cria-tt-dados. assign tt-dados.campo-valor = string(C-DES_CONTEUDO). IF i-campo = 14 OR I-CAMPO = 28 OR i-campo = 42 THEN do: LEAVE. END. END. IF I-CONTADOR = 1 THEN ASSIGN I-CAMPO = 14. ELSE IF I-CONTADOR = 2 THEN ASSIGN I-CAMPO = 28. ELSE IF I-CONTADOR = 3 THEN ASSIGN I-CAMPO = 0. IF I-CONTADOR = 3 THEN DO: run pi-gera-form-word_. ASSIGN I-CAMPO = 0 I-CONTADOR = 0 . END. END. end. IF i-contador > 0 THEN DO: run pi-gera-form-word_. END. END PROCEDURE. &ANALYZE-RESUME &ENDIF