Gerar .pdf a partir de um modelo

Discussão em 'Progress 4GL' iniciado por _claudio_, Dezembro 15, 2010.

  1. _claudio_

    _claudio_ Sem Pontuação

    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!
  2. luizclairrodrigues

    luizclairrodrigues Membro Participativo

    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

Compartilhe esta Página