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.
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
Curtir tópico
+ 0
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.
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
Abraços
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
Clique aqui para fazer login e interagir na Comunidade :)