Ir para conteúdo
  • Cadastre-se

dev botao

Gerar PDF DANFE, FortesReport, via IIS


edv4ld0
Ver Solução Respondido por Italo Giurizzato Junior,
  • Este tópico foi criado há 1121 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Bom dia, após tentar gerar o DANFE via servidor IIS, usando uma DLL recebemos a seguinte mensagem:

There is no default printer currently selected

No tópico:

https://www.projetoacbr.com.br/forum/topic/52337-gerar-pdf-nfcenfe-danfe-aplica%C3%A7%C3%A3o-isapi-com-fortes-report/

foi proposto usar o NumCopias := 0, mas mesmo assim o erro continuava.

Corrigimos o problema alterando a unit ACBrDFeReportFortes:

class procedure TDFeReportFortes.AjustarReport(FReport: TRLReport; AConfig: TACBrDFeReport);
...
if RLPrinter.SupportsDuplex Then
	RLPrinter.Duplex := false;
...

para:

class procedure TDFeReportFortes.AjustarReport(FReport: TRLReport; AConfig: TACBrDFeReport);
...
if (AConfig.NumCopias > 0) and RLPrinter.SupportsDuplex Then
	RLPrinter.Duplex := false;
...

 

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia,

Gerar o DANFE em PDF usando uma DLL, como assim?

Você se refere ao DANFE da NF-e usando o ACBrLibNFe, correto?

Se sim, você postou no lugar errado.

 

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

Não, DANFE da NFSe.
Nós não usamos ACBrLib, usamos uma DLL feita apenas para para gerar o PDF da nota. E essa DLL é chamada servidor IIS.
Vi que em outros tópicos teve gente com o mesmo problema. 

Editado por edv4ld0
Link para o comentário
Compartilhar em outros sites

É justamente do componente que estamos utilizando:

DANFSE.ImprimirDANFSePDF(stream)

Só que em:

class procedure TDFeReportFortes.AjustarReport(FReport: TRLReport; AConfig: TACBrDFeReport);
begin
  FReport.ShowProgress := AConfig.MostraStatus;
  FReport.PrintDialog := AConfig.MostraSetup and (not AConfig.MostraPreview);

  if NaoEstaVazio(AConfig.Impressora) then
    if RLPrinter.PrinterName <> AConfig.Impressora then
      RLPrinter.PrinterName := AConfig.Impressora;

  if RLPrinter.SupportsDuplex Then
     RLPrinter.Duplex := false;

  if (AConfig.NumCopias > 0) and (RLPrinter.Copies <> AConfig.NumCopias) then
    RLPrinter.Copies := AConfig.NumCopias;
end;

a linha, retorna o erro.

if RLPrinter.SupportsDuplex Then

Se você olhar abaixo já é verificado NumCopia > 0, proposto no tópico mencionado, para não setar o RLPrinter.Copies que dava o mesmo erro, só adicionamos para também não verificar o SupportsDuplex:

  if (AConfig.NumCopias > 0) and RLPrinter.SupportsDuplex Then
     RLPrinter.Duplex := false;

Caso queira fazer um teste, basta excluir todas as impressoras do windows e chamar DANFSE.ImprimirDANFSePDF, vai retornar que não tem impressora padrão, altere a linha indica e o PDF é gerado normalmente.

Editado por edv4ld0
  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Consultores

Se você fez uma correção / melhoria no código, por favor anexa a unit alterada para que possamos avaliar a sua contribuição.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...
  • Este tópico foi criado há 1121 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...