Página 2 de 2

Re: Imprimir em PDF com Clipper Summer 87

Enviado: 05 Nov 2010 03:06
por rochinha
Amiguinhos,

Eu sabia que tinha em algum lugar e encontrei um set de funções para gerar PDF em Clipper 53. Para Summer não. Lembrei de haver usado geração de PDF ainda em meu sistema Clipper portanto estaria em algum lugar aqui.

PDF53.BAT

Código: Selecionar todos

rmake pdf53.rmk
if not errorlevel 1 pdf_demo.exe
PDF53.RMK

Código: Selecionar todos

.prg.obj:
   clipper $** /m /n /w /a /b
pdf_demo.obj     : pdf_demo.prg
pdf.obj          : pdf.prg

pdf_demo.EXE :  pdf_demo.obj \
                pdf.obj
  BLINKER @pdf53
PDF53.LNK

Código: Selecionar todos

BLINKER EXECUTABLE CLIPPER //F:200
BLINKER INCREMENTAL OFF
NOBELL
OUTPUT pdf_demo

file   pdf_demo
file   pdf

search blxclp53
PDFDEMO.PRG

Código: Selecionar todos

#include "pdf.ch"

memvar aReport

procedure main()

   local cRun, nWidth, nTab, nI, nJ, nK, nCol, nRow, aStyle, aFonts
   local nTop, nLeft, nBottom, nRight
   local aColor := { ;
   "FF0000", "8B0000", "800000", "FF4500", "D2691E", "B8860B", "FF8C00", "FFA500", "DAA520", "808000", "FFD700", "FFFF00", "ADFF2F", "9ACD32", "7FFF00", "7CFC00", "00FF00", "32CD32", "008000", "006400",;
   "66CDAA", "7FFFD4", "87CEFA", "87CEEB", "F0F8FF", "E0FFFF", "B0C4DE", "B0E0E6", "AFEEEE", "ADD8E6", "8FBC8F", "90EE90", "98FB98", "00FA9A", "00FF7F", "3CB371", "2E8B57", "228B22", "556B2F", "6B8E23",;
   "5F9EA0", "40E0D0", "48D1CC", "00CED1", "20B2AA", "008B8B", "008080", "2F4F4F", "00BFFF", "00FFFF", "00FFFF", "0000FF", "0000CD", "00008B", "000080", "1E90FF", "4169E1", "4682B4", "6495ED", "7B68EE",;
   "C71585", "FF1493", "FF00FF", "FF00FF", "9370DB", "DDADDD", "DB7093", "FF69B4", "DA70D6", "EE82EE", "BA55D3", "9932CC", "8A2BE2", "9400D3", "8B008B", "800080", "4B0082", "191970", "483D8B", "6A5ACD",;
   "DC143C", "B22222", "A52A2A", "CD5C5C", "FA8072", "E9967A", "FFA07A", "F5DEB3", "FFDEAD", "EEE8AA", "FFDAB9", "FFE4C4", "FFEFD5", "FFE4E1", "FFE4B5", "D2B48C", "DEB887", "F0E68C", "BDB76B", "F4A460",;
   "FDF5E6", "FFF8DC", "FAF0E6", "FAFAD2", "FFFACD", "FFEBCD", "FFFFE0", "FAEBD7", "FFF5EE", "FFF0F5", "D8BFD8", "FFC0CB", "FFB6C1", "BC8F8F", "F08080", "FF7F50", "FF6347", "8B4513", "A0522D", "CD853F",;
   "FFFAFA", "FFFFF0", "E6E6FA", "FFFAF0", "F8F8FF", "F0FFF0", "F5F5DC", "F0FFFF", "F5FFFA", "708090", "778899", "F5F5F5", "DCDCDC", "D3D3D3", "C0C0C0", "A9A9A9", "808080", "696969", "000000", "FFFFFF"}

   PUBLIC aReport := array( PARAMLEN )

   set date format "YYYY/MM/DD" // important for save/load array function!!!

   aStyle := { "Normal", "Bold", "Italic", "BoldItalic" }

   aFonts := { { "Times",     .t., .t., .t., .t. },;
               { "Helvetica", .t., .t., .t., .t. },;
               { "Courier",   .t., .t., .t., .t. } }

   pdfOpen('test.pdf', 200, .t.)

   pdfEditOnHeader()
   pdfImage( 'color.tif', 0, 0, "M" ) // file, row, col, units, height, width
   pdfEditOffHeader()
   pdfSaveHeader('test.hea')
   pdfCloseHeader()

   pdfBookOpen()

   /*
   pdfCreateHeader( "letter_portrait_6.hea",  "LETTER", "P", 6 )
   pdfCreateHeader( "letter_portrait_8.hea",  "LETTER", "P", 8 )
   pdfCreateHeader( "letter_landscape_6.hea", "LETTER", "L", 6 )
   pdfCreateHeader( "letter_landscape_8.hea", "LETTER", "L", 8 )
   pdfCreateHeader( "legal_portrait_6.hea",   "LEGAL",  "P", 6 )
   pdfCreateHeader( "legal_portrait_8.hea",   "LEGAL",  "P", 8 )
   pdfCreateHeader( "legal_landscape_6.hea",  "LEGAL",  "L", 6 )
   pdfCreateHeader( "legal_landscape_8.hea",  "LEGAL",  "L", 8 )
   */

   pdfNewPage( "LETTER", "P", 6 )

   pdfBookAdd( "Grids & Borders", 1, aReport[ REPORTPAGE ], 0 )
   pdfBookAdd( "Simple Grid", 2, aReport[ REPORTPAGE ], 0 )

   for nI := 0 to 792 step 36
       pdfBox( nI, 0, nI, 612, 0.01, , "D" )
   next
   for nI := 0 to 612 step 36
       pdfBox( 0, nI, 792, nI, 0.01, , "D" )
   next

   pdfNewPage( "LETTER", "P", 6 )
   pdfBookAdd( "10 dots border ", 2, aReport[ REPORTPAGE ], 0 )
   pdfBox( 0, 0, 792, 612, 10, , "D" )

   pdfNewPage( "LETTER", "P", 6 )
   pdfBookAdd( "Boxes", 1, aReport[ REPORTPAGE ], 0 )
   pdfBookAdd( "Boxes", 2, aReport[ REPORTPAGE ], 0 )

   nRow := 85
   nCol := 85
   pdfBox( nRow     , ( nCol * 2 )     , ( nRow * 3 )     , ( nCol * 4 )     , 1.00,  15, "D" )
   pdfBox( nRow + 10, ( nCol * 2 ) + 10, ( nRow * 3 ) + 10, ( nCol * 4 ) + 10, 0.50,  25, "D" )
   pdfBox( nRow + 20, ( nCol * 2 ) + 20, ( nRow * 3 ) + 20, ( nCol * 4 ) + 20, 0.25,  35, "D" )
   pdfBox( nRow + 30, ( nCol * 2 ) + 30, ( nRow * 3 ) + 30, ( nCol * 4 ) + 30, 0.15,  45, "D" )
   pdfBox( nRow + 40, ( nCol * 2 ) + 40, ( nRow * 3 ) + 40, ( nCol * 4 ) + 40, 0.10,  55, "D" )
   pdfBox( nRow + 50, ( nCol * 2 ) + 50, ( nRow * 3 ) + 50, ( nCol * 4 ) + 50, 0.05,  65, "D" )
   pdfBox( nRow + 60, ( nCol * 2 ) + 60, ( nRow * 3 ) + 60, ( nCol * 4 ) + 60, 0.01,  75, "D" )
   pdfBox( nRow + 70, ( nCol * 2 ) + 70, ( nRow * 3 ) + 70, ( nCol * 4 ) + 70, 0.01,  85, "D" )
   pdfBox( nRow + 80, ( nCol * 2 ) + 80, ( nRow * 3 ) + 80, ( nCol * 4 ) + 80, 0.01,  95, "D" )
   pdfBox( nRow + 90, ( nCol * 2 ) + 90, ( nRow * 3 ) + 90, ( nCol * 4 ) + 90, 0.01, 100, "D" )

   /*
   nRow := 12
   nCol := 120
   for nI := 1 to 6
      nRow += 10
      nCol += 10
      pdfBox( nCol, nRow, nCol + 10, nRow + 10, 0.5, nI, "M" )
   next
   for nI := 0 to 20 step 10
      nRow += 10
      nCol += 10
      pdfBox( nCol, nRow, nCol + 10, nRow + 10, 0.5, nI,"M" )
   next
   for nI := 30 to 100 step 10
      nRow += 10
      nCol -= 10
      pdfBox( nCol, nRow, nCol + 10, nRow + 10, 0.5, nI,"M" )
   next
   */

   for nI := 1 to 7
       nRow := 150 + nI * 10
      for nJ := 1 to 20
          nCol := nJ * 10 - 3
          pdfBox( nRow, nCol, nRow + 10, nCol + 10, 0.01, nI * 10,"M", chr(253) + chr( cton( substr( aColor[ ( nI - 1 ) * 20 + nJ ], 1, 2 ), 16) ) + chr( cton( substr( aColor[ ( nI - 1 ) * 20 + nJ ], 3, 2 ), 16) ) + chr( cton( substr( aColor[ ( nI - 1 ) * 20 + nJ ], 5, 2 ), 16) ) )
      next
   next

   pdfNewPage( "LETTER", "P", 6 )
   pdfBookAdd( "Color Boxes ", 2, aReport[ REPORTPAGE ], 0 )
   for nI := 1 to 140
       nTop := ( nI - 1 ) * 2.4
       nLeft := ( nI - 1 ) * 2.1
       nBottom := aReport[ PAGEY ] - ( nI - 1 ) * 2.47
       nRight := aReport[ PAGEX ] - ( nI - 1 ) * 2.18
       pdfBox1( nTop, nLeft, nBottom, nRight, 10, chr( cton( substr( aColor[ nI ], 1, 2 ), 16) ) + chr( cton( substr( aColor[ nI ], 3, 2 ), 16) ) + chr( cton( substr( aColor[ nI ], 5, 2 ), 16) ))
   next

   pdfNewPage( "LETTER", "P", 6 )
   pdfBox1( 0, 0, 100, 200, 10, chr(0) + chr(255) + chr(0), chr(255) + chr(255) + chr(0) )
   pdfBookAdd( "Memos", 1, aReport[ REPORTPAGE ], 0 )
   pdfBookAdd( "Different Styles & Colors", 2, aReport[ REPORTPAGE ], 0 )
   nWidth := 90
   nTab := 0

   pdfText( memoread('test.txt'),  28, 107.95, nWidth, nTab, 3, 'M', chr(253) + chr(0) + chr(0) + chr(255) )//,              pdfTextCount( memoread('test.txt'),  28, 107.95, nWidth, nTab, 3, 'M' )
   pdfText( memoread('test.txt'),  58, 107.95, nWidth, nTab, 2, 'M', chr(253) + chr(0) + chr(255) + chr(0) )//,              pdfTextCount( memoread('test.txt'),  58, 107.95, nWidth, nTab, 2, 'M' )
   pdfText( memoread('test.txt'),  88, 107.95, nWidth, nTab, 1, 'M', chr(253) + chr(255) + chr(0) + chr(0) )//,              pdfTextCount( memoread('test.txt'),  88, 107.95, nWidth, nTab, 1, 'M' )
   pdfText( memoread('test.txt'), 118, 107.95 - nWidth / 2, nWidth, nTab, 4, 'M', chr(253) + chr(255) + chr(255) + chr(0) )//, pdfTextCount( memoread('test.txt'), 118, 107.95 - nWidth / 2, nWidth, nTab, 4, 'M' )

   pdfText( memoread('test.txt'),  34, 100,    nWidth, nTab, 3, 'R', chr(253) + chr(0) + chr(128) + chr(128) )//, pdfTextCount( memoread('test.txt'),  33, 100,    nWidth, nTab, 3, 'R' )
   pdfText( memoread('test.txt'),  41, 100,    nWidth, nTab, 2, 'R', chr(253) + chr(0) + chr(191) + chr(255) )//, pdfTextCount( memoread('test.txt'),  40, 100,    nWidth, nTab, 2, 'R' )
   pdfText( memoread('test.txt'),  48, 100,    nWidth, nTab, 1, 'R', chr(253) + chr(244) + chr(164) + chr(96) )//, pdfTextCount( memoread('test.txt'),  47, 100,    nWidth, nTab, 1, 'R' )
   pdfText( memoread('test.txt'),  55,  35,    nWidth, nTab, 4, 'R', chr(253) + chr(0) + chr(0) + chr(0) )//, pdfTextCount( memoread('test.txt'),  54,  35,    nWidth, nTab, 4, 'R' )

   pdfNewPage( "LETTER", "P", 6 )
   pdfBookAdd( "Fonts", 1, aReport[ REPORTPAGE ], 0 )
   pdfBookAdd( "Different Styles", 2, aReport[ REPORTPAGE ], 0 )
   nK := 6
   for nI := 1 to len( aFonts )
      ++nK
      for nJ := 1 to 4
         if aFonts[ nI ][ nJ + 1 ]
            pdfSetFont( aFonts[ nI ][ 1 ], nJ - 1, aReport[ FONTSIZE ] )
            pdfRJust("This is a test for " + aFonts[ nI ][ 1 ] + " " + ;
                            aStyle[ nJ ], nK++, aReport[ REPORTWIDTH ], "R")
         endif
      next
      pdfRJust(pdfUnderline("Underline"), nK++, aReport[ REPORTWIDTH ], "R")
      pdfRJust(pdfReverse("Test"), nK, aReport[ REPORTWIDTH ], "R")
   next


   pdfNewPage( "LETTER", "P", 6 )
   pdfBookAdd( "Pictures", 1, aReport[ REPORTPAGE ], 0 )
   pdfBookAdd( "TIFF", 2, aReport[ REPORTPAGE ], 0 )
   pdfImage( 'color.tif', 0, 0, "M" ) // file, row, col, units, height, width
   pdfRJust(pdfUnderline("TIFF"), nK++, aReport[ REPORTWIDTH ], "R")

   pdfNewPage( "LETTER", "P", 6 )
   pdfBookAdd( "JPEG", 2, aReport[ REPORTPAGE ], 0 )
   pdfImage( 'color.jpg', 0, 0, "M" ) // file, row, col, units, height, width
   pdfRJust(pdfUnderline("JPEG"), nK++, aReport[ REPORTWIDTH ], "R")

   pdfOpenHeader('test.hea')

   pdfNewPage( "LETTER", "P", 6 )
   pdfBookAdd( "Headers", 1, aReport[ REPORTPAGE ], 0 )
   pdfBookAdd( "Picture Header Page 8", 2, aReport[ REPORTPAGE ], 0 )

   // version 0.01
   pdfAtSay( chr(253) + chr(255) + chr(0) + chr(0) + 'Red Sample of header repeating on pages 8-10', 1, 20, "R" )

   pdfNewPage( "LETTER", "P", 6 )
   pdfBookAdd( "Picture Header Page 9", 2, aReport[ REPORTPAGE ], 0 )

   // version 0.01
   pdfAtSay( chr(253) + chr(0) + chr(255) + chr(0) + 'Green Sample of header repeating on pages  8-10', 1, 20, "R" )

   pdfNewPage( "LETTER", "P", 6 )
   pdfBookAdd( "Picture Header Page 10", 2, aReport[ REPORTPAGE ], 0 )

   // version 0.01
   pdfAtSay( chr(253) + chr(0) + chr(0) + chr(255) + 'Blue Sample of header repeating on pages  8-10', 1, 20, "R" )

   pdfClose()

//   pdfFilePrint( "test.pdf" ) // print .pdf file WITHOUT opening acrobat

/*
   cRun := "d:\progra~2\Adobe\Acroba~2.0\Reader\AcroRd32.exe " + "test.pdf"

   IF (!SWPRUNCMD( cRun, 0, "", ""))
      alert(" Error running Acrobat Reader.")
      break
   ENDIF
*/

static function cton( cString, nBase ) // this function called only used in pdf_demo.prg
local cTemp, nI, cChar := "", n := 0, nLen

   nLen := len( cString )
   cTemp := ""
   for nI := nLen to 1 step -1
       cTemp += substr( cString, nI, 1 )
   next
   cTemp = upper( cTemp )

   for nI = 1 to nLen
      cChar = substr( cTemp, nI, 1 )
      if .not. IsDigit( cChar )
         n = n + ((Asc( cChar ) - 65) + 10) * ( nBase ^ ( nI - 1 ) )
		else
         n = n + (( nBase ^ ( nI - 1 )) * val( cChar ))
      endif
	next

return n
Todos os arquivos necessarios estão em http://www.5volution.com.br/downloads/forum/pdf53.rar

Imprimir em PDF com Clipper Summer 87

Enviado: 05 Nov 2010 09:50
por Pablo César
Ahhh agora sim, deu certo ! Obrigado Rochinha, eu fiquei bastante molesto, pois quase tudo que tento fazer em Harbour não consigo, principalmente quando tem MiniGUI. Aliás essa rotinas em Clipper 5.3 eu ja tinha visto há alguns anos atrás, mas a minha cabeça não estava suficientemente madura para assumir a importãncia dos PDFs. Fiz algumas alterações onde utiliza o SWPRUNCMD para fazer uma copia de arquivo, substituí por COPY FILE() TO () e coloquei no final da função Main a linha SWPRUNCMD( 'explorer test.pdf', 0, "", "") para que abra o PDF com o PDF_READER default. Também dei uma ajeitada no PDF.PRG que tinha caracteres de cercaduras em cada inicio de função, removí para deixar mais claro. Também dei uma jeitada na identação dos fontes, mas prometo que vou estudar as funções criadas, muito bom. Eu acho que até dá para fazer etiquetas também. Valeu Rochinha ! Muito obrigado.

Re: Imprimir em PDF com Clipper Summer 87

Enviado: 05 Nov 2010 11:15
por rochinha
Amiguinhos,

Pablo Cesar
Qeu bom que agora deu certo. Todo trabalho será bem feito se usarmos a ferramenta certa. Lógico que é possivel parafusar usando uma faca de ponta redonda ou pregar um quadro com o martelo de carne.

Acho que nosso amiguinho SUMMER poderá ter um resultado com algumas funções desta biblioteca deste que ele transforme as instruções Clipper 53 para a forma mais didática e simplista do SUMMER.

Exemplos:

DEFAULT cUnits to "R" por iif( cUnits = NIL, "R", cUnits )

":=" e "==" por simplemeste "="

aReport[ PAGEBUFFER ] += CRLF por aReport[ PAGEBUFFER ] = aReport[ PAGEBUFFER ] + CRLF

++nCount por nCount = nCount + 1

--nRecno por nRecno = nRecno - 1

y1 += 0.5 por y1 = y1 + 0.5

"//" por "**" quando forem os primeiros caracteres na linha, exemplo:

//IF .not. lExact
// pdfCheckLine( nRow )
// nRow := nRow + aReportStyle[ PDFTOP ]
//ENDIF


depois:

**IF .not. lExact
** pdfCheckLine( nRow )
** nRow := nRow + aReportStyle[ PDFTOP ]
**ENDIF


"//" por "&&" quando estiverem logo após algum conteudo, exemplo:

aReport[ PDFTOP ] := 1 // top
aReport[ PDFLEFT ] := 10 // left & right


Depois:

aReport[ PDFTOP ] := 1 && top
aReport[ PDFLEFT ] := 10 && left & right


Sugiro que seja alteradas somente as funções que estão sendo chamadas no PDFDEMO.PRG

Re: Imprimir em PDF com Clipper Summer 87

Enviado: 09 Dez 2010 00:45
por Manuel Luis Modernel
Boa noite bons amigos Rochinha e Pablo César, acabei de abrir novo tópico, parecido com este, sobre Summer 86.

Tou com problema num programa algo antigo (só 14 anos), deu de parar agora, só por ter sido mudado de máquina onde não têm LPT!, dai parou de imprimir.

Aguardo as vossas sempr eótimas dicas.

Obrigado do veio Modernel

Imprimir em PDF com Clipper Summer 87

Enviado: 09 Dez 2010 09:33
por Pablo César
Sim, eu ja respondí naquele tópico. O exemplo do Rochinha deu certo para mim, só que eu compilei em Clipper 5.3. Agora se quiser resolver com a versão Summer, lá no tópico menciono outra solução que utiliza um utilitário para transformar arquivo texto em pdf.

Imprimir em PDF com Clipper Summer 87

Enviado: 12 Set 2012 10:19
por SandroBelarmino
Pablo César escreveu:Ahhh agora sim, deu certo ! Obrigado Rochinha, eu fiquei bastante molesto, pois quase tudo que tento fazer em Harbour não consigo, principalmente quando tem MiniGUI. Aliás essa rotinas em Clipper 5.3 eu ja tinha visto há alguns anos atrás, mas a minha cabeça não estava suficientemente madura para assumir a importãncia dos PDFs. Fiz algumas alterações onde utiliza o SWPRUNCMD para fazer uma copia de arquivo, substituí por COPY FILE() TO () e coloquei no final da função Main a linha SWPRUNCMD( 'explorer test.pdf', 0, "", "") para que abra o PDF com o PDF_READER default. Também dei uma ajeitada no PDF.PRG que tinha caracteres de cercaduras em cada inicio de função, removí para deixar mais claro. Também dei uma jeitada na identação dos fontes, mas prometo que vou estudar as funções criadas, muito bom. Eu acho que até dá para fazer etiquetas também. Valeu Rochinha ! Muito obrigado.
Caro Pablo, essa função para abrir o arquivo pdf gerado só funciona em harbour? Tem como eu abrir o pdf diretamente de minha aplicação clipper?
Estou gerando o pdf em clipper 5.2 usando essas funções que baixei do Rochinha, e gostaria de saber se teria como já abrir o arquivo.

Grato.

Imprimir em PDF com Clipper Summer 87

Enviado: 12 Set 2012 10:50
por Pablo César
Caro Pablo, essa função para abrir o arquivo pdf gerado só funciona em harbour?
Eu tinha compilado em Clipper 5.3 talvez pela necessidade de utilização do BLINKER. Mas se você conseguiu compilar com a versão 5.2 + BLINKER, beleza !
Tem como eu abrir o pdf diretamente de minha aplicação clipper?
Sim, alí no meu texto explico que pode utilizar através da função do BLINKER SWPRUNCMD( 'explorer test.pdf', 0, "", "") (o explorer é para que possa abrir pelo SO).
Estou gerando o pdf em clipper 5.2 usando essas funções que baixei do Rochinha, e gostaria de saber se teria como já abrir o arquivo.
Creio que abrir diretamente no Clipper não venha a ser possível. Em Harbour sim.

Imprimir em PDF com Clipper Summer 87

Enviado: 12 Set 2012 11:03
por SandroBelarmino
OK Pablo, obrigado pela ajuda, vou testar aqui.
Valeu.

Imprimir em PDF com Clipper Summer 87

Enviado: 15 Set 2015 18:05
por rochinha
Amiguinhos,

O link de download do inicio do tópico foi revitalizado. De tempos em tempos os servidores rodam anti-virus e acabam por apagar alguns de nossos arquivos.

@braços.

Imprimir em PDF com Clipper Summer 87

Enviado: 31 Mai 2018 07:11
por hermesjunior
Estou precisando de ajuda com um programa em clipper, depois de um problema no hd a gente cadastra uma coisa e ele imprime outra.

Imprimir em PDF com Clipper Summer 87

Enviado: 31 Mai 2018 12:38
por rochinha
Amiguinhos,

hermesjunior
Estou precisando de ajuda com um programa em clipper, depois de um problema no hd a gente cadastra uma coisa e ele imprime outra.
Abra outro tópico para o assunto pois se você não estiver falando de impressão em PDF não poderemos confundir os mesmos.

Imprimir em PDF com Clipper Summer 87

Enviado: 31 Mai 2018 14:22
por hermesjunior
Obrigado pela atenção

Imprimir em PDF com Clipper Summer 87

Enviado: 01 Jun 2018 07:54
por LDOSISTEMAS
Eu utilizo o DOSPRINTER http://dosprinter.net/ além de PDF ele permite inclusive usar qualquer impressora. Pode alterar seu código para chama lo ou mesmo usar sem alterar nada. Configurando inclusive para capturar da sua porta LPT1, no link tem exemplos e alguns aplicativos residentes que fazem esse trabalho de capturar da porta.