Fórum Impressão #257086
03/11/2004
0
tenho o seguinte problema.
Gero um spool de impressão através do delphi que ira imprimir um boleto bancário, sem quick report nem outro gerador de relatorios, até ai tudo bem, só que para ele funcionar devo colocar o papel nas propriedades da impressora como personalizado, continua tudo ok até aki. No 98 funciona que é uma beleza mas no xp não tem papel personalizado nas propriedades de impressora, somente A4, A3, A5, Carta....etc... Entao também descobri que tem como criar um tipo de papel entrando em iniciar / configurações / impressoras - dai vai no menu arquivo / Propriedades do Servidor e se cria um papel do tamanho que eu quero, só que eu seto tudo direito o novo tipo q defini e mando imprimir o doc ele ao terminar pula a folha como se fosse um a4, alguem sabe como resolver isto.
A função para alterar o tamanho da página vai abaixo.
Gero um spool de impressão através do delphi que ira imprimir um boleto bancário, sem quick report nem outro gerador de relatorios, até ai tudo bem, só que para ele funcionar devo colocar o papel nas propriedades da impressora como personalizado, continua tudo ok até aki. No 98 funciona que é uma beleza mas no xp não tem papel personalizado nas propriedades de impressora, somente A4, A3, A5, Carta....etc... Entao também descobri que tem como criar um tipo de papel entrando em iniciar / configurações / impressoras - dai vai no menu arquivo / Propriedades do Servidor e se cria um papel do tamanho que eu quero, só que eu seto tudo direito o novo tipo q defini e mando imprimir o doc ele ao terminar pula a folha como se fosse um a4, alguem sabe como resolver isto.
A função para alterar o tamanho da página vai abaixo.
procedure AlteraPagina(Comprimento, Larg:Integer);
var
Device, Driver, Port : array[0..255] of char;
hDMode : THandle;
PDMode : PDEVMODE;
Inf : array[0..309] of char;
Impres : String;
Len,Tam : Integer;
Reg : TRegistry;
begin
Printer.GetPrinter(Device, Driver, Port, hDMode);
If hDMode <> 0 then begin
pDMode := GlobalLock(hDMode);
If pDMode <> nil then begin
Impres:=StrPas(pDMode^.dmDeviceName);
Impres:=´\System\CurrentControlSet\Control\Print\Printers\´+Impres;
Reg := TRegistry.Create;
Reg.RootKey := HKEY_LOCAL_MACHINE;
Reg.OpenKeyReadOnly(Impres);
Len:=Reg.ReadBinaryData(´Default DevMode´, Inf, Tam);
//ShowMessage(IntToStr(pDMode^.dmOrientation)); 1 = Retrato; 2 = Paisagem
pDMode^.dmPaperSize := DMPAPER_USER;
{if Inf[228]=2 then
Comprimento:=Trunc((Comprimento/2.54)+0.49);}
pDMode^.dmPaperLength := Comprimento;
// pDMode^.dmPaperWidth := 2540;
pDMode^.dmPaperWidth:= Larg;
pDMode^.dmFields := pDMode^.dmFields or DM_PAPERSIZE;
GlobalUnlock(hDMode);
Reg.CloseKey;
Reg.Free;
end;
end;
end;Lucianols
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)