FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Dimensionar PDF417
Posts: 1
Joined: Sun Sep 23, 2012 04:13 AM

Dimensionar PDF417

Posted: Wed Feb 06, 2013 06:23 AM
Hola a todos. Es la primera vez que publico un tema, pero soy seguidor desde hace bastante tiempo del foro.
En esta oportunidad necesito de su apoyo ya que estoy generando un código PDF417 usando OCX y se imprime en un archivo .bmp
Eso lo hago sin problemas, pero el inconveniente se presenta al intentar delimitar las dimensiones de ancho y alto.
El fuente es:
Code (fw): Select all Collapse
#include "fivewin.ch"

static owinmain
REQUEST HB_LANG_ES         // Que todos los mensajes los saque en español
REQUEST HB_LANG_ESWIN
//REQUEST HB_CODEPAGE_ES
REQUEST HB_CODEPAGE_ESWIN  // Los codigos de pagina en español

function Main

   LOCAL odlg
   local oMenu
     hb_langselect("ESWIN")   //Selecciona lenguaje español
   HB_CDPselect( "ESWIN" )


   DEFINE window owinmain from 1,1 TO 30,100 title "probando" 

   activate window owinmain ON init (verdialogo())

   return nil
//---------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------
   PROCEDURE verdialogo()

   LOCAL odlg, oBmp
   LOCAL oactivex

   oactivex :=  CreateObject( "PDF417BarcodeControl.PDF417Barcode" )
   //oactivex:autosize:=.f.
   oactivex:dotsize:= 2        //10
   oactivex:ErrorLevel := 5
   oactivex:drawwithfixedcolumn:=.t.
   //oactivex:drawwithfixedrow:=.t.

   //oactivex:fixedcolumn:= 4          //9   mínimo 6.7 milesimas de pulgada
   //oactivex:fixedrow:=  10            //3    mínimo 6.7 / 3  milesimas de pulgada
   //oactivex:barcodeheight:= 1    // 5
         //oactivex:barcodewidth:= 1   // SE SUPONE QUE ESTO ES PARA DARLES LAS DIMENSIONES, PERO NO RESPONDE

         oactivex:lineheight:= 1

   oactivex:lines :=[<carácteres a codificar>]

     nuevobitmap(oactivex, 450,250) 

 RETURN NIL
//---------------------------------------------------------------------------------------------------------------------
PROCEDURE nuevobitmap(oactivex,nwidth,nheight)

   local hBmpOld
   local hDCDesk := GetDC( GetDesktopWindow() )
   local hDCMem  := CreateCompatibleDC( hDCDesk )
   local hBrush  := CreateSolidBrush( 0 )
   local hBack   := CreateSolidBrush( CLR_WHITE )
   LOCAL hcodebar
   LOCAL hDib,nmanejador
   LOCAL cdatos:="BM"


   hCodeBar = CreateCompatibleBitMap( hDCDesk, nWidth, nHeight )
   hBmpOld    = SelectObject( hDCMem, hCodeBar )


   FillRect( hDCMem, {0 , 0 , nHeight , nWidth }, hBack )
   //hb_zebra_draw( ::hData, {| x, y, w, h | FillRect( hDCMem, { y, x, y +  h, x + w }, hBrush ) }, 15, 10, ::nWidthCode, ::nHeightCode )

   oactivex:drawto( hDCMem, 5 , 5 ,1,.f. )

   SelectObject( hDCMem, hBmpOld )
   ReleaseDC( GetDesktopWindow(), hDCDesk )
   DeleteDC( hDCMem )
   DeleteObject( hBrush )
   DeleteObject( hBack )

   hDib := DibFromBitmap( hCodeBar )
   DibWrite( "ppp2.bmp" , hDib )
   GloBalFree( hDib )
   nmanejador:=FOpen("ppp2.bmp",1)
   FSeek(nmanejador,0,0)
   FWrite(nmanejador,@cdatos,2)
   FClose(nmanejador)

  MSGinfo("ARCHIVO CREADO SATISFACTORIAMENTE")

return NIL


Espero me puedan guiar en lo que me falta o estoy haciendo mal.
Gracias desde ya.
Posts: 336
Joined: Wed May 16, 2007 09:40 PM

Re: Dimensionar PDF417

Posted: Tue Feb 19, 2013 11:01 PM
Este programa utilizo para generar un pdf417.. aver si te sirve

Code (fw): Select all Collapse
#include "fivewin.ch"
#include "codebar.ch" 

static oCode, ovent

FUNCTION GENERAPDF417(pdf_tipo,pdf_acepta,pdf_siglo)

 LOCAL oMenu
   
 oCode := TCodeBars():New()   
 c_pdf417:=pdf_tipo+pdf_acepta+pdf_siglo
   
 BuildPdf417( CODEBAR_PDF417, c_pdf417 ) 

RETURN NIL

FUNCTION BuildPdf417( nCode, cCode, nFlags )

  DEFAULT nFlags := 1
   
  oCode:Reset()
  if nCode < CODEBAR_PDF417
   oCode:nHeightCode = oCode:nHeight - 50
   oCode:nWidthCode  = 1.5                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
  else
   oCode:nHeightCode = 5
   oCode:nWidthCode =  2
  endif
  oCode:SetType( nCode )
  oCode:SetCode( cCode )
  oCode:SetFlags( nFlags )
  oCode:Build()

  hDib := DibFromBitmap( ocode:hcodebar) 
  DibWrite( cpsve4+"\"+cCode+".bmp" , hDib )

  GloBalFree( hDib )
//  ovent:ReleaseDC()
   
RETURN NIL
Fivewin-Xharbour 24.09, Iquique, Chile

Continue the discussion