Página 1 de 2

Problemas com falta da HBOLE.LIB

Enviado: 30 Jan 2019 15:04
por momente
Amigos,

Boa tarde!

Estou com um problema para gerar PDF a partir de um xml de Nota Fiscal Eletrônica com a BioPDF (Impressora Virtual), sempre utilizei esta Função em xHarbour/Console e MiniGUI Ext./Harbour, sempre funcionou bem, porém, agora com a atualização da MinGUI Ext., verifiquei que a HBOLE.LIB foi descartada e fiz uma atualização de minha função para manter a compatibilidade com a MiniGUI. Mas esta causando erro de Método não Exportado na PrinterName. Segue o Código:


#define SET_PROGID "biopdf.PDFSettings"
#define UTIL_PROGID "biopdf.PDFUtil"

Function ConfigPDF(cArquivoPDF)
LOCAL prtidx,sPrinterName,oSettings,oUtil,cArqPDF
LOCAL lOk

If ( oUtil := win_oleCreateObject( UTIL_PROGID ) ) != NIL

sPrinterName = oUtil:defaultprintername

// Configuração do documento a ser impressão em PDF
If ( oSettings = win_oleCreateObject(SET_PROGID) ) != NIL
oSettings:PrinterName( sPrinterName )
oSettings:setValue("Output" , cArquivoPDF )
oSettings:setValue("ConfirmOverwrite" , "no" )
oSettings:setValue("ShowSaveAS" , "never" )
oSettings:setValue("ShowSettings" , "never" )
oSettings:setValue("ShowPDF" , "no" )
oSettings:setValue("RememberLastFileName" , "no" )
oSettings:setValue("RememberLastFolderName", "no" )
oSettings:WriteSettings(.T.)
Else
MsgInfo("Erro na configuração do PDF","ATENÇÃO")
Return NIL
Endif
Else
MsgInfo("Erro ao gerar PDF","ATENÇÃO")
Return NIL
Endif

Return nil

Já tentei de tudo, mas não estou conseguindo resolver, será que alguém poderia me ajudar?

Obrigado desde já pela atenção meus amigos!

Problemas com falta da HBOLE.LIB

Enviado: 31 Jan 2019 21:30
por momente
Amigos,

Desculpe pela insistência, eu utilizo a xDevstudio, depois que atualizei minha MiniGUI, não consegui mais resolver. :'( . Não consigo entender o que esta acontecendo. Segui as instruções para utilizar a hbwin e xhb, mas o erro continua. E agora tentando voltar nas edições anteriores e nada.

Seguindo as instruções da atualização da erro Método não Exportado: PrinterName (BioPDF)

Será que alguém poderia me dar uma luz?

Valeu pessoal! :xau

Rogério Momente
LookSystem

Problemas com falta da HBOLE.LIB

Enviado: 01 Fev 2019 08:14
por asimoes
sPrinterName está retornando alguma coisa ?

Problemas com falta da HBOLE.LIB

Enviado: 01 Fev 2019 17:54
por momente
olá asimoes,

Sim, retorna o nome da Impressora virtual no caso, a BioPDF, até a versão 18.4 gerava normalmente o PDF, utilizo o UNIDANFE. Ontem consegui voltar para esta versão e voltou a funcionar normalmente, mas com a atualização não deu mais certo. Eles pedem para não utilizar mais a HBOLE.LIb. Mas não funciona ou não estou sabendo fazer funcionar :|

Obrigado pelo retorno

Problemas com falta da HBOLE.LIB

Enviado: 03 Fev 2019 11:53
por tales
Bom dia, estou com um prolema parecido. Depois da atualização a minha impressora virtual PDF parou de funcionar. Só que eu uso a Bullzip ....

Grato

Tales

Problemas com falta da HBOLE.LIB

Enviado: 04 Fev 2019 10:53
por momente
Tales,

Poste aqui pra gente parte do seu código para analisarmos, eu utilizava a HBOLE.LIB, porém ela foi dada como obsoleta, indicaram para este caso utilizar xhb.lib e a hbwin.lib. Mas não funciona assim mesmo.

Problemas com falta da HBOLE.LIB

Enviado: 04 Fev 2019 20:12
por asimoes
Tem esse exemplo na HbWin usando PDFCreator

Código: Selecionar todos

/*
 * Demonstration code for generating .pdf documents using PDFCreator
 *   COM interface.
 *
 * You should install PDFCreator to be able to run this test
 *
 * COM interface docs:
 * https://www.pdfforge.org/pdfcreator/manual/com-interface
 *
 * Copyright 2010 Mindaugas Kavaliauskas <dbtopas / at / dbtopas.lt>
 *
 */

#require "hbwin"

PROCEDURE Main()

   LOCAL oPC, nTime, cDefaultPrinter, oPrinter, nEvent := 0

   IF Empty( oPC := win_oleCreateObject( "PDFCreator.clsPDFCreator" ) )
      ? "Could not create PDFCreator COM object"
      RETURN
   ENDIF

   /* Setup event notification */
   oPC:__hSink := __axRegisterHandler( oPC:__hObj, {| X | nEvent := X } )

   oPC:cStart( "/NoProcessingAtStartup" )
   oPC:_cOption( "UseAutosave", 1 )
   oPC:_cOption( "UseAutosaveDirectory", 1 )
   oPC:_cOption( "AutosaveDirectory", hb_DirSepDel( hb_DirBase() ) )
   oPC:_cOption( "AutosaveFilename", "pdfcreat.pdf" )
   oPC:_cOption( "AutosaveFormat", 0 )

   cDefaultPrinter := oPC:cDefaultPrinter
   oPC:cDefaultPrinter := "PDFCreator"
   oPC:cClearCache()

   /* You can do any printing here using WinAPI or
      call a 3rd party application to do printing */
#if 1
   oPrinter := win_Prn():New( "PDFCreator" )
   oPrinter:Create()
   oPrinter:startDoc( "Harbour print job via PDFCreator" )
   oPrinter:NewLine()
   oPrinter:NewLine()
   oPrinter:TextOut( "Hello, PDFCreator! This is Harbour :)" )
   oPrinter:EndDoc()
   oPrinter:Destroy()
#else
   oPrinter := NIL
   ? "Do some printing to PDFCreator printer and press any key..."
   Inkey( 0 )
#endif

   oPC:cPrinterStop := .F.

   nTime := hb_MilliSeconds()
   DO WHILE nEvent == 0 .AND. hb_MilliSeconds() - nTime < 10000
      hb_idleSleep( 0.5 )
      /* The following dummy line is required to allow COM server to send event [Mindaugas] */
      oPC:cOption( "UseAutosave" )
   ENDDO

   SWITCH nEvent
   CASE 0
      ? "Print timeout"
      EXIT
   CASE 1
      ? "Printed successfully"
      EXIT
   CASE 2
      ? "Error:", oPC:cError():Description
      EXIT
   OTHERWISE
      ? "Unknown event"
   ENDSWITCH

   oPC:cDefaultPrinter := cDefaultPrinter
   oPC:cClose()

   RETURN

Problemas com falta da HBOLE.LIB

Enviado: 04 Fev 2019 21:03
por asimoes
Talvez seja case sensitive

settings.printerName = sPrinterName

Vendo um exemplo:
http://www.biopdf.com/guide/examples/vb6/

O seu código está assim:

oSettings:PrinterName( sPrinterName )

Eu trocaria por

oSettings:printerName := sPrinterName

Problemas com falta da HBOLE.LIB

Enviado: 05 Fev 2019 21:15
por momente
asimoes,

Não havia pensado nisso, Testei, mas deu Error BASE/1004 Método não exportado: PRINTERNAME

Coloquei assim:
osettings:printerName(sPrinterName)

Muito estranho! :(Neg

Problemas com falta da HBOLE.LIB

Enviado: 05 Fev 2019 22:29
por asimoes
Pode ser algum problema de registro desse objectcom

Problemas com falta da HBOLE.LIB

Enviado: 05 Fev 2019 22:33
por asimoes
Esse recurso que está tentando usar é free?

Problemas com falta da HBOLE.LIB

Enviado: 06 Fev 2019 07:49
por momente
asimoes,

Eu instalo a BioPDF, uma impressora virtual, já utilizo a bastante tempo, utilizo com xharbour console e aplicativos com a MiniGUI, sempre funcionou e funciona muito bem. Como disse, passei a ter este problema com as atualizações da MiniGUI de um tempo pra cá.

Problemas com falta da HBOLE.LIB

Enviado: 06 Fev 2019 07:53
por asimoes
Só testando, onde tem pra instalar e Free?

Problemas com falta da HBOLE.LIB

Enviado: 06 Fev 2019 15:36
por momente
aSimoes,

Pode baixar e instalar deste http://www.biopdf.com/download.php

Ele vai instalar uma impressora virtual, vc pode direcionar as impressões pra ela, normalmente, que irá pedir a pasta para salvar o arquivo PDF. Similar ao PDFCreator

Valeu meu amigo!

Problemas com falta da HBOLE.LIB

Enviado: 06 Fev 2019 20:46
por asimoes
Momente,

Baixei a impressora pdf

e funcionou.

Código: Selecionar todos

 cArquivoPDF := Hb_DirBase() + "TESTE.PDF"
   
   oUtil       := Win_OleCreateObject( UTIL_PROGID )

   oSettings   := Win_OleCreateObject(SET_PROGID) 

   sPrinterName := oUtil:defaultprintername

// Configuração do documento a ser impressão em PDF

   With Object oSettings
      :PrinterName := sPrinterName
      :setValue("Output" , cArquivoPDF )
      :setValue("ConfirmOverwrite" , "no" )
      :setValue("ShowSaveAS" , "never" )
      :setValue("ShowSettings" , "never" )
      :setValue("ShowPDF" , "no" )
      :setValue("RememberLastFileName" , "no" )
      :setValue("RememberLastFolderName", "no" )
      :WriteSettings(.T.)
   End
   
   With Object oPrinter := win_Prn():New( sPrinterName )
      :Create()
      :startDoc( "Harbour print job via PDFCreator" )
      :NewLine()
      :NewLine()
      :TextOut( "Hello, " + sPrinterName + "! This is Harbour :)" )
      :EndDoc()
      :Destroy()
   End
   
   nEvent := 0
   nTime := Hb_MilliSeconds()
   
   DO WHILE nEvent == 0 .AND. Hb_MilliSeconds() - nTime < 10000
      Hb_idleSleep( 0.5 )
      /* The following dummy line is required to allow COM server to send event [Mindaugas] */
   ENDDO
2019-02-06 20_43_49-.png