Acionar Guilhotina

11/03/2020

0

Bom Dia,

Estou imprimindo uns relatórios no FASTREPORT na impressora não fiscal e gostaria que a cada nova página fosse acionada o guilhotina (cortar o papel).

Detalhe - No final do relatório, a guilhotina já é acionada automaticamente.

Desde já agradeço.
Dirceu Morais

Dirceu Morais

Responder

Posts

07/05/2020

Dirceu Morais

Bom Dia,

Estou imprimindo uns relatórios no FASTREPORT na impressora não fiscal e gostaria que a cada nova página fosse acionada o guilhotina (cortar o papel).

Detalhe - No final do relatório, a guilhotina já é acionada automaticamente.

Desde já agradeço.



Andei pesquisando e não encontrei resposta para cortar o papel no meio pelo FASTREPORT.
Mas existe uma forma de fazer isto.

Passo 1: O driver da impressora ao ser instalado irá criar uma impressora no Windows como: MP-4200 TH ou MP-2500 TH, é necessário entrar nas Propriedades para iniciar a configuração. Para acessar as propriedades, clique com o botão direito do mouse sobre o driver de impressão e acesse a opção Propriedades.

Passo 2: Em seguida clique na aba Configurações do dispositivo, será aberta a janela que permite iniciar as configurações.

Passo 3: Na opção Paper Cut é possível encontrar as seguintes opções

- Full cut at Doc End: Corte Total - a guilhotina somente será acionada ao final da impressão do documento. (Exemplo: um documento com 3 páginas, o corte somente será realizado ao final da impressão de todas as páginas).

- Partial CUT at Doc End: Mesmo recurso que a opção anterior, porem realiza o corte parcial do documento.

- Full CUT at Page End: Corte total - a guilhotina sera acionada ao final de cada pagina, ou seja, em um documento com 3 páginas, o corte será realizado três vezes.

- Partial CUT at Page End: Mesmo recurso que a opção anterior, porém essa realiza o corte parcial.

- No cut: Ao final da emissão dos documentos a guilhotina não é acionada.

Após escolher uma das opções acima, apenas clique no botão OK, e todas as vezes que a impressão dos documentos for intermediada pelo driver de impressão, o acionamento da guilhotina será de acordo com o configurado.

Responder

08/05/2020

Guilherme Wiethaus

Olá amigo. a sua solução é um pouquinho trabalhosa. Não tenho como por um código pra você. Mas eu sei o caminho das pedras. O que você pdoe fazer é o seguinte:

1) Escreva uma função em delphi para fazer este corte, passando parâmetros a esta função que você precisa.
2) No componente FastReport, você declara esta função nova que criou (veja na documentação do FastReport)
3) Use esta função no Script do FastReport, por exemplo no evento OnAfterPrint a codificação necessária para gerenciar estes cortes usando a função criada no delphi.

Eu tive que fazer a mesma estratégia quando precisei enviar um formato texto de estrutura molecular do .mol do banco de dados para um script em JS que renderiza estruturas moléculares transforma para base64 e depois eu transformo a a partir do TStream em imagem png que então envio ao componente frxpricureview do fastreport.

Abaixo vou passar um fragmento de código que encontrei que te dará uma ideia de como fazer para declarar um user function para o FastReport:


This might help you. this is used in a db that creates a PDF file of small thumbnails of gfx in the db the FileExists function is added at runtime using the report.script.addmethod


type
  TMainForm = class(TForm)
   ....
  private
    { Private declarations }
  public
    { Public declarations }
    function FileExists(s: string): boolean;
    function CallMethod(Instance: TObject; ClassType: TClass;
      const MethodName: string; var Params: Variant): Variant;
  end;

function TMainForm.FileExists(s: string): boolean;
begin
  result := SysUtils.FileExists(s);
end;

function TMainForm.CallMethod(Instance: TObject; ClassType: TClass;
  const MethodName: string; var Params: Variant): Variant;
begin
  // dispatch the method call 
  if MethodName = 'FILEEXISTS' then
    result := FileExists(Params[0]);
  ...

procedure TMainForm.FormCreate(Sender: TObject);
const
  g='User Functions/Procedures';
begin
  // frGlobalUnit contains standard types and functions
  frxReport.Script.Parent := fsGlobalUnit;
  frxReport.Script.AddMethod('function FileExists(fName: String): Boolean',
    MainForm.CallMethod,g,'Checks if a given FileName <fName> Exists');
   ....

in the code of the report:

function CheckFileName(s: string): string;
begin
  s := VarToStr(s);
  s := Trim(s);
  if s > '' then begin
    result := s;
    if not FileExists(s) then begin
      //
      // filename given, but not found
      // so write to error log
      //if (dbg=TRUE) then begin
     //  s := 'file not found: ' + s + #13#10;
     //   fs.Write(s, Length(s));
     // end;
      // zero the string
      result := '';
    end;
  end;
end;

procedure BeforePrint(fName: string; img: TfrxPictureView);
begin
  fName := CheckFileName(fName);
  if (fName > '') then
    img.picture.LoadFromFile(fName)
  else
    img.Picture := nil;
// or add a gfx not found img?
//  img.picture.LoadFromFile('error.jpg')
end;

procedure imgBackOnBeforePrint(Sender: TfrxComponent);
begin
  BeforePrint(<DisksDB."Back">, imgBack);
end;

procedure imgBackOnAfterPrint(Sender: TfrxComponent);
begin
  // nil the component or it will carry over to next record
  imgBack.Picture := nil;
end;


Abraços
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar