Buenas tardes, me he descargado tu aplicación Dani, muchísimas gracias. Necesito imprimir el contenido de un TMemo, y he intentado hacerlo desde tú código, he añadido un procedimiento nuevo para la impresion del Memo.
Código Delphi
[-]
procedure ImprimirMemo(Texto:string);
var
Impresor: JPrintHelper;
TextoAImprimir: JString;
Canvas: JCanvas;
Paint: JPaint;
Bitmap: JBitmap;
Altura, Anchura: integer;
TempFilePath :String;
Uri:JNet_Uri;
begin
Impresor := TJPrintHelper.JavaClass.init(TAndroidHelper.Context);
Impresor.setScaleMode(TJPrintHelper.TJPrintHelper_SCALE_MODE_FIT);
Impresor.setColorMode(TJPrintHelper.TJPrintHelper_COLOR_MODE_COLOR);
Impresor.setOrientation(TJPrintHelper.TJPrintHelper_ORIENTATION_PORTRAIT);
TextoAImprimir := StringToJString(Texto);
Anchura := 595; Altura := 842;
Bitmap := TJBitmap.JavaClass.createBitmap(Anchura, Altura, TJBitmap_Config.JavaClass.ARGB_8888);
Canvas := TJCanvas.JavaClass.init(Bitmap);
Paint := TJPaint.JavaClass.init;
Paint.setTextSize(12);
Canvas.drawText(TextoAImprimir, 10, 25, Paint);
TempFilePath := SaveBitmapToTempFile(Bitmap);
Uri := GetUriFromFile(TempFilePath);
Impresor.printBitmap(StringToJString('Impresion1'), Uri);
end;
y he añadido estas dos funciones
Código Delphi
[-]
function GetUriFromFile(const FilePath: string): Jnet_Uri;
var
FileObj: JFile;
begin
FileObj := TJFile.JavaClass.init(StringToJString(FilePath));
Result := TJnet_Uri.JavaClass.fromFile(FileObj);
end;
function SaveBitmapToTempFile(Bitmap: JBitmap): string;
var
OutputStream: JFileOutputStream;
FileName: string;
TempFile: JFile;
begin
FileName := TPath.Combine(TPath.GetDocumentsPath, 'temp_image.jpg');
TempFile := TJFile.JavaClass.init(StringToJString(FileName));
OutputStream := TJFileOutputStream.JavaClass.init(TempFile);
try
Bitmap.compress(TJBitmap_CompressFormat.JavaClass.JPEG, 100, OutputStream);
OutputStream.flush;
finally
OutputStream.close;
end;
Result := FileName;
end;
Al mandar la impresión en la previsualización se ve todo en negro, el código coge el texto del memo y lo pasa a un jbitmap que convierte en uri_jnet para lanzar la impresión igual que cuando lanzas la impresión de la imagen de la calavera. Seguro que hay una manera mucho más sencilla.
Por otro lado cuando lanzo la imagen de la calavera se previsualiza bien, selecciono la impresora que tengo en red, pero la impresora me bloquea la impresión. Hay que configurar algo en la impresora para poder imprimir desde mi móvil?
Muchisimas gracias, estoy a punto de terminar el proyecto y esto es lo último que me queda por programas. Así que toda ayuda será bienvenida.