Cita:
Empezado por Casimiro Notevi
¿Puede servir algo así?
Código Delphi [-]procedure TForm1.Button1Click(Sender: TObject);
var
RichEdit: TRichEdit;
HTMLDocument: IHTMLDocument2;
PrintRange: TFormatRange;
PrinterHandle: HDC;
FileName: string;
FileStream: TFileStream;
begin
RichEdit := TRichEdit.Create(Self);
try
RichEdit.Visible := False;
RichEdit.Parent := Self;
HTMLDocument := (WebBrowser1.Document as IHTMLDocument2);
RichEdit.PlainText := True;
RichEdit.Lines.Text := HTMLDocument.body.innerHTML;
FileName := 'C:\ruta\archivo.pdf';
FileStream := TFileStream.Create(FileName, fmCreate);
try
Printer.PrinterIndex := Printer.PrinterIndex; Printer.Title := FileName;
Printer.BeginDoc;
PrinterHandle := Printer.Canvas.Handle;
FillChar(PrintRange, SizeOf(PrintRange), 0);
PrintRange.hdc := PrinterHandle;
PrintRange.hdcTarget := PrinterHandle;
PrintRange.rc := Rect(0, 0,
Printer.PageWidth * Printer.PixelsPerInch div 1440,
Printer.PageHeight * Printer.PixelsPerInch div 1440);
PrintRange.rcPage := PrintRange.rc;
PrintRange.chrg.cpMax := -1;
SendMessage(RichEdit.Handle, EM_FORMATRANGE, 1, Longint(@PrintRange));
SendMessage(RichEdit.Handle, EM_FORMATRANGE, 0, 0);
Printer.EndDoc;
finally
FileStream.Free;
end;
finally
RichEdit.Free;
end;
end;
|
Gracias por tu respuesta Casimiro, pero no me funciono en Delphi 10.4, de entrada no me reconoce la propiedad Printer.PixelsPerInch
Código Delphi
[-]PrintRange.rc := Rect(0, 0,
Printer.PageWidth * Printer.PixelsPerInch div 1440,
Printer.PageHeight * Printer.PixelsPerInch div 1440);
Modifique un poco el código que me diste y como quiera sigue sin cumplirse el objetivo, me imprime el html (codigo) en el documento.
¿Sabrás si hay otra forma de hacerlo? Saludos.