Win32prn para PDF
Moderador: Moderadores
- Linguagemclipper
- Usuário Nível 3

- Mensagens: 240
- Registrado em: 16 Abr 2016 17:33
- Localização: Maceió/AL
- Contato:
Win32prn para PDF
Existe alguma forma de salvar um objeto criado com Win32prn() como PDF sem apelar para imprimir na MICROSOFT PRINT TO PDF ou não tem como?
Tem como salvar esse objeto criado com a Win32prn em arquivo? Qual seria a sua extensão apropriada (o que ele é? GhostScript? PostScript?) ? Como abrir ele depois?
Tem como salvar esse objeto criado com a Win32prn em arquivo? Qual seria a sua extensão apropriada (o que ele é? GhostScript? PostScript?) ? Como abrir ele depois?
Usando xHarbour v1.2.3 Rev. 10264 + BCC 5.8, Elchs' LetoDBf, DBFCDX e SIBRA para imprimir relatórios.
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
Win32prn para PDF
Olá!
O código fonte mostrado no tópico a seguir mostra como gerar e salvar o arquivo PDF: Gerar PDF
Espero que ajude.
O código fonte mostrado no tópico a seguir mostra como gerar e salvar o arquivo PDF: Gerar PDF
Espero que ajude.
[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
- Linguagemclipper
- Usuário Nível 3

- Mensagens: 240
- Registrado em: 16 Abr 2016 17:33
- Localização: Maceió/AL
- Contato:
Win32prn para PDF
Não era bem isso. Já sei dessa lib.
Eu quero salvar o arquivo da WIN32PRN, mas não consigo sem um driver de impressora PDF.
Tentei mexer no fonte, mas não deu certo...
METHOD StartDoc(cDocName,lSAVE)
...
No método:
No C#:
Descobrí que esse "sDoc.lpszOutput = NULL ;" manda pra impressora porque é NULL, mas para gravar em arquivo é só colocar o nome do arquivo aí.
Acontece que tinha que ver como fica esse "sDoc.lpszDatatype= NULL ;" pra colocar um EMF, PS, sei lá... e nessa parte complicou.
Está dando "Error BASE/1004 Método não exportado: NEW"... entendí nada.
Não entendo bem dessas coisas de classe/metodo e C, mas acho que seria mexendo por aí, mas nem conseguí testar o bicho que deu erro logo no início.
Eu quero salvar o arquivo da WIN32PRN, mas não consigo sem um driver de impressora PDF.
Tentei mexer no fonte, mas não deu certo...
METHOD StartDoc(cDocName,lSAVE)
...
No método:
Código: Selecionar todos
METHOD StartDoc(cDocName, lSAVE) CLASS WIN32PRN
LOCAL Result:= .F.
IF cDocName == NIL
cDocName:= GetExeFileName()+" ["+DTOC(DATE())+' - '+TIME()+"]"
ENDIF
IF EMPTY(lSAVE)
lSAVE := .F.
ENDIF
IF (Result:= StartDoc(::hPrinterDc, cDocName, lSAVE))
IF !(Result:= ::StartPage(::hPrinterDc))
::EndDoc(.T.)
ELSE
::Printing:= .T.
ENDIF
ENDIF
RETURN(Result)Código: Selecionar todos
HB_FUNC_STATIC( STARTDOC )
{
HDC hDC = (HDC) hb_parnl(1) ;
DOCINFO sDoc ;
BOOL Result = FALSE;
BOOL lSAVE = hb_parnl(3) ;
if (hDC )
{
sDoc.cbSize= sizeof(DOCINFO) ;
sDoc.lpszDocName= hb_parc(2) ;
sDoc.lpszOutput = NULL ;
if (lSAVE) {
sDoc.lpszOutput = hb_parc(2) ;
}
sDoc.lpszDatatype= NULL ;
sDoc.fwType = 0 ;
Result = (BOOL) (StartDoc(hDC, &sDoc) >0 ) ;
}
hb_retl(Result);
}Acontece que tinha que ver como fica esse "sDoc.lpszDatatype= NULL ;" pra colocar um EMF, PS, sei lá... e nessa parte complicou.
Está dando "Error BASE/1004 Método não exportado: NEW"... entendí nada.
Não entendo bem dessas coisas de classe/metodo e C, mas acho que seria mexendo por aí, mas nem conseguí testar o bicho que deu erro logo no início.
Usando xHarbour v1.2.3 Rev. 10264 + BCC 5.8, Elchs' LetoDBf, DBFCDX e SIBRA para imprimir relatórios.
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
Win32prn para PDF
Amiguinhos,
Linguagemclipper, não tenho este .PRG comigo mas te pergunto se você criou o método StartDoc e a função StarDoc.
Pode acontecer uma recursividade e o método tentar chamar a si mesmo.
Mude a função para StartDocC e no método StartDoc mude a chamada desta função para StartDocC.
Recompile e teste.
Linguagemclipper, não tenho este .PRG comigo mas te pergunto se você criou o método StartDoc e a função StarDoc.
Pode acontecer uma recursividade e o método tentar chamar a si mesmo.
Mude a função para StartDocC e no método StartDoc mude a chamada desta função para StartDocC.
Recompile e teste.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Win32prn para PDF
Olá!
Para transformar em PDF, é preciso que o sistema operacional tenha o "engenho" que faça a leitura do que é enviado para o gerenciador de impressão.
O Windows não tem, por isso precisamos instalar algum "engenho" extra. Quem sabe se o win11 vai ter isso ?
Então essa conversão não é possível. A mesma coisa querer usar via sistema operacional DBF, PNG, SVG, CAD, DOCX, XMLX etc... precisa de um programa extra para isso.
Saudações,
Itamar M. Lins Jr.
Para transformar em PDF, é preciso que o sistema operacional tenha o "engenho" que faça a leitura do que é enviado para o gerenciador de impressão.
O Windows não tem, por isso precisamos instalar algum "engenho" extra. Quem sabe se o win11 vai ter isso ?
Então essa conversão não é possível. A mesma coisa querer usar via sistema operacional DBF, PNG, SVG, CAD, DOCX, XMLX etc... precisa de um programa extra para isso.
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Win32prn para PDF
Olá!
Outra coisa C# "Cê SHARP" é uma linguagem que não tem nada a ver com C nem com C++
Harbour usa C, não usa C# ok? C ANSI, não é qualquer sintaxe C(particular) que existem em vários compiladores pelo mundo.
C# é uma linguagem nos moldes do Object Pascal + Java... Quando vc escreve C# é para tecnologia .NET da Microsoft.
Estou escrevendo isso, pq vc postou no grupo internacional e um rapaz disse que tinha um exemplo em C#... Que é outra coisa EXTERNA ao Harbour.
Vai precisar usar (!)RUN, hb_processRun... para a dica do rapaz lá em C#.
Saudações,
Itamar M. Lins Jr.
Outra coisa C# "Cê SHARP" é uma linguagem que não tem nada a ver com C nem com C++
Harbour usa C, não usa C# ok? C ANSI, não é qualquer sintaxe C(particular) que existem em vários compiladores pelo mundo.
C# é uma linguagem nos moldes do Object Pascal + Java... Quando vc escreve C# é para tecnologia .NET da Microsoft.
Estou escrevendo isso, pq vc postou no grupo internacional e um rapaz disse que tinha um exemplo em C#... Que é outra coisa EXTERNA ao Harbour.
Vai precisar usar (!)RUN, hb_processRun... para a dica do rapaz lá em C#.
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Win32prn para PDF
Olá!
Me corrigindo!
Saudações,
Itamar M. Lins Jr.
Me corrigindo!
Então via OLE usando Harbour vai. É Harbour não é xHarbour.I use COM to do this kind of thing with C#. I have a C# project with the basics to get started with creating a C# COM dll. On the Harbour side you use win_oleCreateObject() to create the COM object and then call methods on the object.
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
Win32prn para PDF
Amiguinhos,
Nativamente código-puro é possivel gerar PDF à partir de uma saída TeXTo.
nfPDF - Gera arquivos Portable Document File. PDF
De outras formas usando bibliotecas como HaruPDF etc.
A Automação OLE usando Word e passando o conteúdo e acionando SaveAs com saída PDF.
De qualquer forma os driver de impressora possibilitam estas saídas mas criam dependência de tê-las instaladas nas máquinas alvo.
Possibilidades existem, só dá trabaio pra encontrar.
Nativamente código-puro é possivel gerar PDF à partir de uma saída TeXTo.
nfPDF - Gera arquivos Portable Document File. PDF
De outras formas usando bibliotecas como HaruPDF etc.
A Automação OLE usando Word e passando o conteúdo e acionando SaveAs com saída PDF.
De qualquer forma os driver de impressora possibilitam estas saídas mas criam dependência de tê-las instaladas nas máquinas alvo.
Possibilidades existem, só dá trabaio pra encontrar.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Win32prn para PDF
Olá!
Mas o sistema operacional não tem.
Ele quer mandar imprimir em PDF pelo sistema operacional em arquivo e o windows não tem isso. Alias o windows não tem nem para ele mesmo. Não é possível salvar uma impressão na extensão nativa(da impressora) que nem sei qual é. Será convertido para alguma extensão. XPS etc...
Usando a Microsoft Print to PDF, pergunta o nome do arquivo por exemplo. Mas é uma coisa EXTRA.
Saudações,
Itamar M. Lins Jr.
Pois é, nativamente o Harbour tem isso.HaruPDF
Mas o sistema operacional não tem.
Ele quer mandar imprimir em PDF pelo sistema operacional em arquivo e o windows não tem isso. Alias o windows não tem nem para ele mesmo. Não é possível salvar uma impressão na extensão nativa(da impressora) que nem sei qual é. Será convertido para alguma extensão. XPS etc...
Usando a Microsoft Print to PDF, pergunta o nome do arquivo por exemplo. Mas é uma coisa EXTRA.
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- Linguagemclipper
- Usuário Nível 3

- Mensagens: 240
- Registrado em: 16 Abr 2016 17:33
- Localização: Maceió/AL
- Contato:
Win32prn para PDF
A linguagem é PostScript (.ps) mesmo que GhostScript.
Eu compilo cpp com o BCC55 ou 58 e achei que era C#
Se vocês verem o fonte do win32prn vai ver que tem um "sDoc.lpszOutput" que é o que salva em arquivo.
Eu tentei fazer uma manobra aqui, mas não deu certo... acho que só se eu mudar direto no fonte do Harbour mesmo.
Mas, eu teria esbarrado nesse "sDoc.lpszDatatype= NULL ;", pois não saberia completar a rotina para substituir NULL.
Eu compilo cpp com o BCC55 ou 58 e achei que era C#
Se vocês verem o fonte do win32prn vai ver que tem um "sDoc.lpszOutput" que é o que salva em arquivo.
Eu tentei fazer uma manobra aqui, mas não deu certo... acho que só se eu mudar direto no fonte do Harbour mesmo.
Código: Selecionar todos
// SALVAR EM ARQUIVO .PS
#pragma BEGINDUMP
#include <windows.h>
#include <winspool.h>
#include "hbapiitm.h"
HB_FUNC_STATIC( StartEMF )
{
HDC hDC = (HDC) hb_parnl(1) ;
DOCINFO sDoc ;
BOOL Result = FALSE;
if (hDC )
{
sDoc.cbSize= sizeof(DOCINFO) ;
sDoc.lpszDocName= hb_parc(2) ;
sDoc.lpszOutput = hb_parc(2) ;
// sDoc.lpszDatatype= NULL ;
sDoc.fwType = 0 ;
Result = (BOOL) (StartDoc(hDC, &sDoc) >0 ) ;
}
hb_retl(Result);
}
#pragma ENDDUMP
METHOD StartEMF(cDocName) CLASS WIN32PRN
LOCAL Result:= .F.
IF cDocName == NIL
cDocName:= GetExeFileName()+" ["+DTOC(DATE())+' - '+TIME()+"]"
ENDIF
IF (Result:= StartEMF(::hPrinterDc, cDocName))
IF !(Result:= ::StartPage(::hPrinterDc))
::EndDoc(.T.)
ELSE
::Printing:= .T.
ENDIF
ENDIF
RETURN(Result)
Usando xHarbour v1.2.3 Rev. 10264 + BCC 5.8, Elchs' LetoDBf, DBFCDX e SIBRA para imprimir relatórios.
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Win32prn para PDF
Acho que está procurando a coisa errada.
Se tem o fonte pra winprn, só deixá-lo compatível com PDF.
Olhe em OOHG, porque lá pode escolher saída em winprn, pdf, excel, e sei lá mais o que.
Se tem o fonte pra winprn, só deixá-lo compatível com PDF.
Olhe em OOHG, porque lá pode escolher saída em winprn, pdf, excel, e sei lá mais o que.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/