Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Desarrollo en Delphi para Android
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos


Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-10-2024
jmbarrio jmbarrio is offline
Miembro
 
Registrado: may 2003
Posts: 102
Poder: 24
jmbarrio Va por buen camino
Buenos días, finalmente he encontrado esta solución por sí le sirve de ayuda a alguien. He pasado el contenido del memo a un fichero HTML y he empleado el código del botón de imprimir html del proyecto de Dani.
Código Delphi [-]
HtmlContent := TStringList.Create;
  try
    HtmlContent.Add('');
    HtmlContent.Add('');
    HtmlContent.Add('');
    HtmlContent.Add('    ');
    HtmlContent.Add('    Contenido del Memo');
    HtmlContent.Add('');
    HtmlContent.Add('');
    HtmlContent.Add('    
');
    HtmlContent.Add(Memo1.Lines.Text);  // Agregar el contenido del TMemo
    HtmlContent.Add('    
'
); HtmlContent.Add(''); HtmlContent.Add(''); // Obtener la ruta para guardar el archivo en el almacenamiento del dispositivo FilePath := TPath.Combine(TPath.GetDocumentsPath, 'Ticket1.html'); // Guardar el archivo HTML HtmlContent.SaveToFile(FilePath); // Mensaje opcional de éxito ShowMessage('Archivo HTML guardado en: ' + FilePath); finally HtmlContent.Free; end;

Un saludo.
Responder Con Cita
  #2  
Antiguo 02-10-2024
dani36652 dani36652 is offline
Miembro
 
Registrado: abr 2019
Posts: 78
Poder: 8
dani36652 Va camino a la fama
Hola qué tal.
apenas voy ingresando al foro ya que no había tenido el tiempo de hacerlo y poder responder.

el motivo por el cual la previsualización de la impresión de una imagen se mira en negro viene desde tu función:

Código Delphi [-]
function GetUriFromFile(const FilePath: string): Jnet_Uri;
var
  FileObj: JFile;
begin
  // Crear un objeto JFile con la ruta del archivo
  FileObj := TJFile.JavaClass.init(StringToJString(FilePath));

  // Obtener la URI desde el archivo
  Result := TJnet_Uri.JavaClass.fromFile(FileObj);
end;

Ya que desde android 7 la forma de obtener el URI de un archivo se hace mediante algo llamado "FileProvider".

Si tienes Delphi Sydney a Athens (10.4-12) tu función quedaría así:

Nota: Recuerda que para usar esta nueva forma de obtener el uri tienes que:
Marcar la casilla de "Secure File Sharing" en "Project>Options>Application>Entitlement List

Código Delphi [-]
uses
  {$IFDEF ANDROID}
  Androidapi.JNI.Webkit, FMX.Dialogs.Android,
  Androidapi.JNI.Print, System.Messaging,
  fmx.Platform.Android, Androidapi.jni,
  fmx.helpers.android, Androidapi.Jni.app,
  Androidapi.Jni.GraphicsContentViewText, Androidapi.JniBridge,
  Androidapi.JNI.Os, Androidapi.Jni.Telephony,
  Androidapi.JNI.JavaTypes,Androidapi.Helpers,
  Androidapi.JNI.Widget,System.Permissions,
  Androidapi.Jni.Provider,Androidapi.Jni.Net,
  AndroidAPI.JNI.Support;
 {$ENDIF}

function GetUriFromFile(const FilePath: string): Jnet_Uri;
var
  FileObj: JFile;
begin
  // Crear un objeto JFile con la ruta del archivo
  FileObj := TJFile.JavaClass.init(StringToJString(FilePath));

  // Obtener la URI desde el archivo
  Result := TAndroidHelper.JFileToJURI(FileObj);
end;

Embarcadero creó esa función del TAndroidHelper para dicho propósito.

Finalmente lo que mencionas de la disponibilidad de tu impresora me suena más a las configuraciones de la misma y no a la implementación desde Delphi.

Saludos.
Responder Con Cita
  #3  
Antiguo 03-10-2024
jmbarrio jmbarrio is offline
Miembro
 
Registrado: may 2003
Posts: 102
Poder: 24
jmbarrio Va por buen camino
Muchas gracias Dani, por responder y sobre todo por tus aportes y ayuda.

Un saludo.
Responder Con Cita
  #4  
Antiguo 27-01-2025
jmbarrio jmbarrio is offline
Miembro
 
Registrado: may 2003
Posts: 102
Poder: 24
jmbarrio Va por buen camino
Cita:
Empezado por jmbarrio Ver Mensaje
Buenos días, finalmente he encontrado esta solución por sí le sirve de ayuda a alguien. He pasado el contenido del memo a un fichero HTML y he empleado el código del botón de imprimir html del proyecto de Dani.
Código Delphi [-]
HtmlContent := TStringList.Create;
  try
    HtmlContent.Add('');
    HtmlContent.Add('');
    HtmlContent.Add('');
    HtmlContent.Add('    ');
    HtmlContent.Add('    Contenido del Memo');
    HtmlContent.Add('');
    HtmlContent.Add('');
    HtmlContent.Add('    
');
    HtmlContent.Add(Memo1.Lines.Text);  // Agregar el contenido del TMemo
    HtmlContent.Add('    
'
); HtmlContent.Add(''); HtmlContent.Add(''); // Obtener la ruta para guardar el archivo en el almacenamiento del dispositivo FilePath := TPath.Combine(TPath.GetDocumentsPath, 'Ticket1.html'); // Guardar el archivo HTML HtmlContent.SaveToFile(FilePath); // Mensaje opcional de éxito ShowMessage('Archivo HTML guardado en: ' + FilePath); finally HtmlContent.Free; end;

Un saludo.
Buenas tardes a tod@s, el código del botón que imprime el html es el siguiente

Código Delphi [-]
procedure ImprimirHTML(URL, NombreTrabajo: string);
begin
  CallInUIThread(
  procedure
  begin
    if doWebViewPrint then
    begin
      OnWebViewListener.NombreTrabajo := NombreTrabajo;
      WebClient.SetWebViewListener(OnWebViewListener);
      mWebView.setWebViewClient(WebClient);
      mWebview.getSettings.setAllowFileAccess(true); //ANDROID NIVEL DE API 30+
      mWebview.getSettings.setAllowFileAccessFromFileURLs(true); //ANDROID NIVEL DE API 30+
      mWebView.loadUrl(StringToJString(URL));
    end;
  end);
end;

La impresora imprime en formato A5, si el ticket tiene pocas líneas y cabe en un folio A5 lo imprime sin problemas, pero si tiene muchas lo deja cortado ya que solo imprime una hoja de A5 y deja la impresión cortada.

Dani, ¿sabes si hay que configurar algún parámetro en la unit UImpresion o algo similar?

Muchas gracias por vuestra atención.

Un saludo.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
TProgressBar cíclico nativo (marquee) (añadida solución 3) xEsk Trucos 11 04-12-2008 21:13:58
Al hacer debug me entra al codigo nativo radge Varios 4 04-09-2008 11:57:54
Office 12 integrará soporte nativo para PDF Al González Noticias 7 12-10-2005 01:54:36
PostgreSQL 8.0 (con soporte Win32 nativo) kinobi Noticias 0 27-02-2005 10:35:19
Driver Nativo de Oracle jfontane Oracle 0 22-10-2004 03:59:05


La franja horaria es GMT +2. Ahora son las 06:21:44.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi