Ir para conteúdo
  • Cadastre-se

dev botao

Erro Imprimindo Relatorios Depois De Imprimirdanfepdf


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

Recommended Posts

Olá boa tarde.

 

Na verdade já encontrei a "minha" correção para o problema, gostaria de postar aqui para que os programadores da classe ACBrNFeDANFERave possam verificar se é possível aplicar isso ao fonte original para que próximas atualizações já venham corretas, o que acontece é que criamos um preview do rave personalizado para todo nosso sistema e também aplicamos esse preview para visualização de DANFE, para isso fizemos:

 

     NFeDanfe.dmDanfe.RvSystem1 := rvSystemPersonalizado;
 

Tem funcionado perfeitamente, conseguimos visualizar o DANFE em nosso preview personalizado e imprimir normalmente, o único problema que encontramos é quando usamos a função EnviarEmail, após chamar essa função e em seguida chamar algum relatório que é enviado diretamente para impressora (DefaultDest := rdPrinter) o relatório não é impresso.

 

Para correção do problema fiz alteração na unit ACBrNFeDANFERave na função ImprimirDANFEPdf de forma a voltar os valores padrões ao componente, como segue:

 

procedure TACBrNFeDANFERave.ImprimirDANFEPDF(NFE : TNFe = nil);
var
 i : Integer;
 NomeArq : String;
 wProjectStream: TStringStream;
begin
  {$IFDEF RAVE50VCL}
     RPDefine.DataID := IntToStr(Application.Handle);  // Evita msg de erro;...
  {$ENDIF}
 
   if FRaveFile = '' then
      raise EACBrNFeException.Create(' Arquivo de Relatório nao informado.') ;
 
   if not (uppercase(copy(FRaveFile,length(FRaveFile)-3,4))='.RAV') then
   begin
      wProjectStream:=TStringStream.Create(FRaveFile);
      dmDanfe.RvProject.ProjectFile := '';
      dmDanfe.RvProject.LoadRaveBlob(wProjectStream);
      wProjectStream.Free;
   end
   else
   begin
      if not FilesExists(FRaveFile) then
         raise EACBrNFeException.Create('Arquivo '+FRaveFile+' Nao encontrado');
 
      dmDanfe.RvProject.ClearRaveBlob;
      dmDanfe.RvProject.ProjectFile := FRaveFile;  //ExtractFileDir(application.ExeName)+'\Report\NotaFiscalEletronica.rav';
   end;
 
   /// ATRIBUINDO CONFIGURACOES ESPECIFICAS PARA PDF.
   dmDanfe.RvSystem1.DefaultDest    := rdFile;
   dmDanfe.RvSystem1.DoNativeOutput := false;
   //dmDanfe.RvSystem1.SystemPrinter.Collate := true;
   dmDanfe.RvSystem1.RenderObject   := dmDanfe.RvRenderPDF1;
   if not MostrarStatus then
      dmDanfe.RvSystem1.SystemOptions := dmDanfe.RvSystem1.SystemOptions - [soShowStatus];
   dmDanfe.RvSystem1.SystemSetups     := dmDanfe.RvSystem1.SystemSetups - [ssAllowSetup];
   dmDanfe.RvProject.Engine           := dmDanfe.RvSystem1;
   /// TERMINO -----   ATRIBUINDO CONFIGURACOES ESPECIFICAS PARA PDF.
 
   dmDanfe.RvRenderPDF1.EmbedFonts:=False;
   dmDanfe.RvRenderPDF1.ImageQuality:=90;
   dmDanfe.RvRenderPDF1.MetafileDPI:=300;
   dmDanfe.RvRenderPDF1.UseCompression:=False;
   dmDanfe.RvRenderPDF1.Active:=True;
 
   if NFE = nil then
   begin
      for i:= 0 to TACBrNFe(ACBrNFe).NotasFiscais.Count-1 do
      begin
         dmDanfe.NFe := TACBrNFe(ACBrNFe).NotasFiscais.Items.NFe;
 
         NomeArq := StringReplace(TACBrNFe(ACBrNFe).NotasFiscais.Items.NFe.infNFe.ID,'NFe', '', [rfIgnoreCase]);
         NomeArq := PathWithDelim(Self.PathPDF)+NomeArq+'.pdf';
 
         dmDanfe.RvSystem1.OutputFileName := NomeArq;
         ExecutaReport;
      end;
   end
   else
   begin
      dmDanfe.NFe := NFE;
      NomeArq := StringReplace(NFe.infNFe.ID,'NFe', '', [rfIgnoreCase]);
      NomeArq := PathWithDelim(Self.PathPDF)+NomeArq+'.pdf';
 
      dmDanfe.RvSystem1.OutputFileName := NomeArq;
      ExecutaReport;
   end;
 
   /// REMOVENDO CONFIGURACOES ESPECIFICAS PARA PDF.
   dmDanfe.RvRenderPDF1.Active      := False;
   dmDanfe.RvSystem1.DefaultDest    := rdPreview;
   dmDanfe.RvSystem1.DoNativeOutput := True;
   //dmDanfe.RvSystem1.SystemPrinter.Collate := true;
   dmDanfe.RvSystem1.RenderObject   := nil;
   if not MostrarStatus then
      dmDanfe.RvSystem1.SystemOptions  := dmDanfe.RvSystem1.SystemOptions + [soShowStatus];
   dmDanfe.RvSystem1.SystemSetups      := dmDanfe.RvSystem1.SystemSetups + [ssAllowSetup];
   dmDanfe.RvProject.Engine            := nil;
   /// TERMINO -----   REMOVENDO CONFIGURACOES ESPECIFICAS PARA PDF.
 
Bom, é isso ai, espero ter conseguido explicar o problema, qualquer dúvida estou a disposição
 
Grande Abraço a todos
 
Ricardo

Ricardo Lopes

TECNOSOFT - Solução em Informática

www.tecnosoft.com.br

Link para o comentário
Compartilhar em outros sites

  • Moderadores

anexa a unit alterada assim ficará mais fácil ao mantenedor do componente verificar se é possível ou não adicionar essa alteração!

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

  • 1 ano depois...
  • Este tópico foi criado há 3397 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.