Crear PDF usando PDFDocument Java Android Studio

Поделиться
HTML-код
  • Опубликовано: 21 дек 2024

Комментарии • 55

  • @ernestoridel7036
    @ernestoridel7036 2 года назад +1

    Muy buena explicación, crack!!!

  • @elmerishaocamposhuaman3420
    @elmerishaocamposhuaman3420 2 года назад +1

    Buen día amigo. tengo un error en la linea del try catch: pdfDocument.writeTo(new FileOutputStream(file)) el cual arroja un error en el Exception: java.io.FileNotFoundException: /storage/emulated/0/Archivo.pdf: open failed: EPERM (Operation not permitted). Tiene alguna idea de cual sea el problema? gracias.

    • @dev.xcheko51x
      @dev.xcheko51x  2 года назад

      Saludos, pueden ser los permisos para poder leer y escribir en el dispositivo, a partir de Android 6 esos permisos los tiene que aceptar el usuario.

  • @jeronimoagustinvazquez3435
    @jeronimoagustinvazquez3435 2 года назад

    Hola! que debería cambiar para que en el PDF se ponga un plot que se ha generado en la misma activity? gracias!

    • @dev.xcheko51x
      @dev.xcheko51x  2 года назад

      Saludos.
      Tendrías que generar una imagen de ese gráfico y posteriormente agregarlo al PDF como imagen.
      Espero haber aclarado la duda o por lo menos orientarte en tu búsqueda

    • @jeronimoagustinvazquez3435
      @jeronimoagustinvazquez3435 2 года назад

      @@dev.xcheko51x alguna pista de como generar la imagen a partir del grafico? Muchas gracias!

    • @dev.xcheko51x
      @dev.xcheko51x  2 года назад +1

      Hay una librería de gráficas que ya tiene un método para generar la imagen pero no recuerdo cual.
      Pero de momento se me ocurre que desde el código se haga una captura de pantalla y esta imagen que se genera se muestre en un ImageView, misma que sería la que se insertaria en el PDF.
      No es lo óptimo pero es una solución, igual voy a investigar cómo se podría hacer y hago un vídeo al respecto.

    • @jeronimoagustinvazquez3435
      @jeronimoagustinvazquez3435 2 года назад

      @@dev.xcheko51x esa solución me bastaría pero... como genero entonces la captura desde el codigo? gracias!

  • @luismiguelmartinezperez2926
    @luismiguelmartinezperez2926 2 года назад

    y si el texto viene de un control, por ejemplo yo tomo el descripcion.getText.toString.Split("
    ") pero sino tiene los saltos de linea, que procede?

    • @dev.xcheko51x
      @dev.xcheko51x  2 года назад

      Saludos, ya que obtienes el string del control por ejemplo del EditText solo concatena ell salto de línea. Por ejemplo:
      String texto = "hola"
      texto = texto + "
      "
      Espero haber aclarado tu duda

    • @luismiguelmartinezperez2926
      @luismiguelmartinezperez2926 2 года назад

      @@dev.xcheko51x
      TextPaint mTextPaint=new TextPaint();
      StaticLayout mTextLayout = new StaticLayout(observaciones.getText().toString(), mTextPaint, canvas.getWidth(),
      Layout.Alignment.ALIGN_NORMAL, 2.0f, 0.0f, false);
      int x=50;
      int y=530;
      for (String line: observaciones.getText().toString().split("
      ")){
      canvas.drawText(line,x,y,mTextPaint);
      y += mTextPaint.descent()-mTextPaint.ascent();
      }
      pero no me funciona

  • @YefersonJimenezSevilla
    @YefersonJimenezSevilla 5 месяцев назад

    Tienes algun curso en UDEMY o en alguna plataforma

    • @dev.xcheko51x
      @dev.xcheko51x  5 месяцев назад +1

      Saludos, en la descripción del video están los enlaces a los dos cursos que tengo en udemy, de igual forma te comparto los enlaces:
      Aprende Android con Ejemplos: bit.ly/40dIY4m
      Aprende Compose Android con Ejemplos: bit.ly/3zhiFle

    • @YefersonJimenezSevilla
      @YefersonJimenezSevilla 5 месяцев назад +1

      @@dev.xcheko51x Muchas gracias por tu gran ayuda

  • @diegoalejandromesavasquez5646
    @diegoalejandromesavasquez5646 2 года назад

    Buenas tardes, Excelente explicación!!! Vi como se creó el archivo. Ahora sería muy bueno si pudiera explicar como visualizarlo desde otra activity. Muchas gracias👍👍

    • @dev.xcheko51x
      @dev.xcheko51x  2 года назад +2

      Saludos, me parece que para eso se puede usar webview pero déjame investigo y realizó un vídeo sobre el tema, gracias por el comentario, 😁👍

    • @dev.xcheko51x
      @dev.xcheko51x  2 года назад +1

      Saludos, te dejo el enlace del video:
      ruclips.net/video/p1JIDMagCLw/видео.html
      Espero te sirva.

  • @LuisBravo182
    @LuisBravo182 Год назад

    Gracias buen video, ya habia utilizado este metodo antes, alguien sabe porque no me sale la ventana emergente para conceder los permisos?

    • @dev.xcheko51x
      @dev.xcheko51x  Год назад +1

      Saludos. Puede ser por qué estás ejecutando la aplicación en un dispositivo con Android 5 o inferior, ya que los permisos al usuario es desde Android 6 en adelante o en su defecto desinstala la aplicación y vuelvela a ejecutar

    • @LuisBravo182
      @LuisBravo182 Год назад +1

      @@dev.xcheko51x ya lo solucione, el primer programa que hice usando este metodo tenia un version targedSdk 32, en este programa al iniciar si me pedia el permiso para poder abrir y guardar el PDF, el nuevo programa que hice tiene una version targedSdk 33 y ahora ya no sale la ventana por que en automatico se validan los permisos

    • @dev.xcheko51x
      @dev.xcheko51x  Год назад

      Excelente, gracias compartir tu solución

  • @arismateo2371
    @arismateo2371 2 года назад

    @dev.xcheko51x buenas noches, he usado sus video de años anteriores y me funciona perfecto la creación del PDF en una tablet Samsung Galaxy, con una aplicación local. Actualmente en otras tablets Huawei mateoad 10 y una Lenovo la aplicación funciona pero no crea el pdf en downloads. Creo no reconoce la ruta con la rutinas creararchivo y getruta, favor si puede enviar alguna sugerencia

    • @dev.xcheko51x
      @dev.xcheko51x  2 года назад

      Saludos, posiblemente sea los permisos en los vídeos uso un emulador con Android 5 y para Android 6 en adelante de tiene que solicitar los permisos al usuario y que este los acepte o de lo contrario no se podrá acceder a lectura y escritura en el dispositivo.
      Comparto enlace de la documentación oficial:
      developer.android.com/training/permissions/requesting?hl=es-419

  • @sebasramiro
    @sebasramiro 7 месяцев назад

    Buenas amigo, tengo un error en el código, no me admiten los permisos, me deniega el permiso porque?

    • @dev.xcheko51x
      @dev.xcheko51x  7 месяцев назад

      Saludos, si estás usando un dispositivo o emulador con Android 6 en adelante necesitas pedirle los permisos al usuario, posiblemente eso sea lo que te este dando problemas

  • @abelgonzales7723
    @abelgonzales7723 2 года назад

    Hola, como puedo a ese mismo codigo poner una funcion para que agregue texto desde la app y lo guarde en el pdf?

    • @dev.xcheko51x
      @dev.xcheko51x  2 года назад

      Saludos, solo tienes que crear el método y dentro poner las líneas de código que capturan el texto que deseas insertar y generar el PDF.
      Solo que tienes que estar seguro de la información que vas a agregar ya que generado el PDF no lo puedes modificar, te tocaría capturar todo y volverlo a generar.
      Espero haberte aclarado tu duda o en su defecto si no es lo que buscabas puedes comentarlo.

  • @julithedrummer6159
    @julithedrummer6159 2 года назад

    amigo hola buenas excelente video pero a la hora de ejecutar me presenta problemas en esta parte
    pdfDocument.writeTo(new FileOutputStream(file));
    si depronto sabes que puede pasar

    • @dev.xcheko51x
      @dev.xcheko51x  2 года назад

      Saludos, que error es el que te manda??? Por qué el error puede dar indicio de dónde buscar para la solución

    • @julithedrummer6159
      @julithedrummer6159 2 года назад

      @@dev.xcheko51x amigooo mil gracias por tu respuesta bueno mira el problema ya lo resolvi creando una carpeta pero ahora el dilema es que esa carpeta mi celular no me la deja ver no se como crear una carpeta que se pueda ver y poder usar en mi propio celular no se si me entiendas mil gracias un saludo

    • @dev.xcheko51x
      @dev.xcheko51x  2 года назад +1

      No entiendo por qué tienes que crear una carpeta para que te funcione, pero en todo caso posiblemente se está creando en una ruta que es solo para el SO, intenta usando la siguiente línea:
      File ruta = new File(context.getExternalFilesDir( Environment.DIRECTORY_DOWNLOADS), "NOMBRE_CARPETA");
      Y la de debería crear en descargas la cuál si deberías tener acceso
      O usa:
      File ruta = new File(context.getExternalFilesDir(), "NOMBRE_CARPETA");
      Y te creara la carpeta en la ruta:
      Android/data/data/com.tucompany.descargas/NOMBRE_CARPETA

    • @julithedrummer6159
      @julithedrummer6159 2 года назад

      @@dev.xcheko51x hola migo que pena tanta molestia
      Android/data/data/com.tucompany.descargas/NOMBRE_CARPETA
      aca lo que me dices es cierto asi queda pero el dilema es que al yo buscar en mi celular esa ruta no me sale nada llego hasta el .data y la carpeta del package no aparece es muy extraño no se ahi que pasa

    • @dev.xcheko51x
      @dev.xcheko51x  2 года назад

      No sé si ya intentaste con un explorador de archivos que te permita ver las carpetas ocultas, si en tu dispositivo tienes una microsd revisa en las dos fuentes en las carpetas data.
      O se me ocurre que a lo mejor no se está creando la carpeta como tal si, tú dispositivo tiene Android 6 o superior hay que pedirle los permisos de lectura y escritura al usuario para poder realizar ese tipo de acciones.

  • @Lugio2009
    @Lugio2009 2 года назад

    buenos días como colocar varias paginas

    • @dev.xcheko51x
      @dev.xcheko51x  2 года назад

      Saludos, te comparto el enlace a la documentación donde está el proceso de creación del archivo y de las páginas.
      developer.android.com/reference/android/graphics/pdf/PdfDocument
      Igual existe otra librería que permite varias páginas la cual es itextpdf o droidtext
      Te comparte el vídeo donde uso el último
      ruclips.net/video/_cxYmwJArK4/видео.html

  • @robinson5654
    @robinson5654 2 года назад

    Buen Dia Estimado dev.xcheko me podrias ayudar con informacion sobre los permisos en android 11 , parece que no me crea el archivo pdf por los permisos nuevos de android 11, felicitaciones por tu canal sigue Adelante

    • @dev.xcheko51x
      @dev.xcheko51x  2 года назад

      Saludos, creo que la nueva forma de solicitar permisos en Android 11 es solo para algunos casos como localizacion, camara y micrófono, ya que da la opción que dichos permisos tengan un tiempo de vida.
      Para el caso de lectura y escritura puede ser la forma que se usa para Android 6 en adelante.
      De todas formas déjame reviso, y hago algunas pruebas para subir video al respecto en caso de ser necesario.

    • @arismateo2371
      @arismateo2371 2 года назад

      @@dev.xcheko51x buenas noches, he usado sus video de años anteriores y me funciona perfecto la creación del PDF en una tablet Samsung Galaxy, con una aplicación local. Actualmente en otras tablets Huawei mateoad 10 y una Lenovo la aplicación funciona pero no crea el pdf en downloads. Creo no reconoce la ruta con la rutinas creararchivo y getruta, favor si puede enviar alguna sugerencia.

  • @arismateo2371
    @arismateo2371 2 года назад

    Igual he realizado la prueba con el PDF de el actual video y tampoco genera el PDF

    • @dev.xcheko51x
      @dev.xcheko51x  2 года назад

      Saludos, posiblemente sea los permisos en los vídeos uso un emulador con Android 5 y para Android 6 en adelante de tiene que solicitar los permisos al usuario y que este los acepte o de lo contrario no se podrá acceder a lectura y escritura en el dispositivo.
      Comparto enlace de la documentación oficial:
      developer.android.com/training/permissions/requesting?hl=es-419
      de igual forma, tengo pensado actualizar algunos videos implementado las nuevas formas usando kotlin

  • @juanpablogomezkian6686
    @juanpablogomezkian6686 2 года назад +1

    Hola exelente video, pero seria fantastico que lo actualizaras para las versiones actuales, como la 11 o 12, gracias

    • @dev.xcheko51x
      @dev.xcheko51x  2 года назад

      Saludos.
      No creo que sea necesario ya que lo único que cambia es que a partir de Android 6 en adelante se tienen que pedir los permisos al usuario.
      Mismo video de como pedir los permisos lo tengo en el canal.
      Pero igual lo pienso y veo si lo realizó para subirlo.

    • @juanpablogomezkian6686
      @juanpablogomezkian6686 2 года назад

      @@dev.xcheko51x por favor, sería de gran ayuda, no he podido con ello :/

    • @dev.xcheko51x
      @dev.xcheko51x  2 года назад +1

      No te garantizo nada pero igual está pendiente del canal y en caso de hacerlo igual te comento por este medio.

    • @juanpablogomezkian6686
      @juanpablogomezkian6686 2 года назад

      Gracias, otra pregunta, es necesario pedir permisos a partir de Android 6? Y que permisos serían ?, Es que está muy limpio tu código y no lo quiero cambiar

    • @dev.xcheko51x
      @dev.xcheko51x  2 года назад +1

      Si es necesario ya que así lo pide Android de lo contrario no podrás usar esas funciones.
      Para escritura sería el WRITE_EXTERNAL_STORAGE
      Para leer seria READ_EXTERNAL_STORAGE
      Los tendrías que definir en el manifest y en el código pedir los permisos al usuario.
      Te comparto enlace a la documentación oficial:
      developer.android.com/training/permissions/requesting?hl=es-419#java
      Y te comparto el enlace al vídeo que tengo del canal (está en Kotlin pero puedes darte una idea de cómo hacerlo en Java):
      ruclips.net/video/3acIvhoJNVs/видео.html
      Espero te sirvan.