Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] ¿Cómo asigno un fichero PDF a un diálogo de "Guardar como"?

Estas en el tema de ¿Cómo asigno un fichero PDF a un diálogo de "Guardar como"? en el foro de Java en Foros del Web. Hola, sigo con mi aplicación en Swing, y lo que quiero es asignar un fichero PDF creado con iText (el fichero se crea correctamente) a ...
  #1 (permalink)  
Antiguo 23/12/2014, 10:35
Avatar de iDEVELOPwithGNUlinux  
Fecha de Ingreso: febrero-2012
Mensajes: 27
Antigüedad: 12 años, 2 meses
Puntos: 0
¿Cómo asigno un fichero PDF a un diálogo de "Guardar como"?

Hola, sigo con mi aplicación en Swing, y lo que quiero es asignar un fichero PDF creado con iText (el fichero se crea correctamente) a un diálogo en plan "Guardar como", cogiendo el fichero desde la carpeta del proyecto, con el fin de darle la posibilidad al usuario de guardarlo donde quiera.

Creo que tengo que usar un JFileChooser, pero he probado ya varias posibilidades, sin obtener el resultado que deseo.
  #2 (permalink)  
Antiguo 23/12/2014, 12:12
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 9 años, 8 meses
Puntos: 182
Respuesta: ¿Cómo asigno un fichero PDF a un diálogo de "Guardar como"?

Buenas,

El JFileChooser te servirá para que el usuario seleccione gráficamente una ruta.
Una vez obtenida la ruta, tienes que guardar el contenido del fichero PDF en el lugar deseado, no es algo que te haga automáticamente JFileChooser.

Si pones que lo que llevas hasta ahora creo que te podremos guiar.


Un saludo
__________________
If to err is human, then programmers are the most human of us
  #3 (permalink)  
Antiguo 26/12/2014, 11:02
Avatar de iDEVELOPwithGNUlinux  
Fecha de Ingreso: febrero-2012
Mensajes: 27
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: ¿Cómo asigno un fichero PDF a un diálogo de "Guardar como"?

Aquí tenéis el código.

Código:
JFileChooser JFCO = new JFileChooser();
File f2 = new File("ErFicheraco.pdf");
            
JFCO.setFileSelectionMode(JFileChooser.SAVE_DIALOG);
            
JFCO.showSaveDialog(null);
Justo encima está la creación del PDF con iText, que se genera bien, y he creado la variable File que se solo para asignar el PDF al diálogo.

Me da igual que no sea la solución más eficiente, a estas alturas con que funciona sin sobresaltos me basta.
  #4 (permalink)  
Antiguo 26/12/2014, 14:01
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 9 años, 8 meses
Puntos: 182
Respuesta: ¿Cómo asigno un fichero PDF a un diálogo de "Guardar como"?

Buenas,

¿Solución más eficiente? No entiendo muy bien a que te refieres. Por otro lado el File que declaras no tiene ningún sentido si lo que vas a hacer es precisamente pedir al usuario la ruta.
Lo normal sería que primero solicites la ruta y después generes el PDF en la ruta, pero bueno... partiendo de que cuando has generado el PDF tienes el handler ByteArrayOutputStream, quedaría así

Código Java:
Ver original
  1. //Generas el PDF con iText y lo almacenas en un ByteArrayOutputStream
  2. //ByteArrayOutputStream baos = new ByteArrayOutputStream();
  3. //PdfWriter.getInstance(document, baos);
  4. //[bla bla bla]
  5.  
  6. //Tu codigo
  7. JFCO.setFileSelectionMode(JFileChooser.SAVE_DIALOG);
  8.            
  9. int returnVal = JFCO.showSaveDialog(null);
  10. if (returnVal == JFileChooser.APPROVE_OPTION) {
  11.      File fichero = JFCO.getSelectedFile();
  12.  
  13.      FileOutputStream fos = new FileOutputStream(fichero);
  14.      fos.write(baos.toByteArray());
  15.      fos.close();
  16. }


Un saludo
__________________
If to err is human, then programmers are the most human of us
  #5 (permalink)  
Antiguo 27/12/2014, 12:32
Avatar de iDEVELOPwithGNUlinux  
Fecha de Ingreso: febrero-2012
Mensajes: 27
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: ¿Cómo asigno un fichero PDF a un diálogo de "Guardar como"?

De lo que hablo es que me da igual que haya código redundante, o que se pudiese hacer más corto.

He probado tu solución, pero no consigo el efecto deseado. Me gustaría tratar el fichero PDF como un fichero y no como un PDF, si es que se puede, creo que así ahorramos pasos.

Código:
JFileChooser JFCO = new JFileChooser();
            File f2 = new File(System.getProperty("user.dir")+"/"+"FICHERACO.pdf");
            JFCO.setCurrentDirectory(new File(System.getProperty("user.dir")));
            
            JFCO.setSelectedFile(f2);
            
            JFCO.setFileSelectionMode(JFileChooser.FILES_ONLY);

            int returnVal = JFCO.showSaveDialog(null);
            if (returnVal == JFileChooser.APPROVE_OPTION) {
                File fichero = JFCO.getSelectedFile();

                BufferedWriter bw = new BufferedWriter(new FileWriter(fichero));
                bw.flush();
            }
Este es mi código actual, perdona si si no he respetado mucho tu solución, pero es que he ido probando.

Con esto consigo que por fin me guarde un fichero con la extensión PDF, pero está vacío.

Lo que necesito es volcar el contenido del fichero PDF al lugar donde indique el usuario, pero como te digo, preferiría olvidar las clases y métodos de iText y tratarlo como un fichero normal, a ver si resulta.

El fichero ya se crea, solo quiero "clonarlo", como si fuese un TXT, en el lugar donde indica el usuario a través del diálogo. Da igual que quede una copia en el directorio del proyecto.
  #6 (permalink)  
Antiguo 28/12/2014, 11:01
Avatar de iDEVELOPwithGNUlinux  
Fecha de Ingreso: febrero-2012
Mensajes: 27
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: ¿Cómo asigno un fichero PDF a un diálogo de "Guardar como"?

Bien, he resuelto el problema yo mismo con este código.

Código:
JFileChooser JFCO = new JFileChooser();
            File f2 = new File(System.getProperty("user.dir"), "FICHERACO.pdf");
 
            JFCO.setCurrentDirectory(new File(System.getProperty("user.dir")));
            
            JFCO.setSelectedFile(f2);

            JFCO.setFileSelectionMode(JFileChooser.FILES_ONLY);

            int returnVal = JFCO.showSaveDialog(null);
            if (returnVal == JFileChooser.APPROVE_OPTION) {
                File fC = new File(JFCO.getSelectedFile().getAbsolutePath());
                InputStream in = new FileInputStream(f2);

                OutputStream out = new FileOutputStream(fC);

                byte[] buf = new byte[1024];
                int len;
                while ((len = in.read(buf)) > 0) {
                    out.write(buf, 0, len);
                }
                in.close();
                out.close();
            }
            
            f2.delete();
Con esto copio el fichero de origen y luego lo elimino. Es una chapuza, pero funciona .
  #7 (permalink)  
Antiguo 31/12/2014, 03:19
 
Fecha de Ingreso: febrero-2011
Mensajes: 672
Antigüedad: 13 años, 2 meses
Puntos: 78
Respuesta: ¿Cómo asigno un fichero PDF a un diálogo de "Guardar como"?

Hombre, yo creo que lo has resuelto con la ayuda de Profesor_Falken, no te parece?

Te ha dedicado tiempo suyo en ayudarte y se ha molestado en escribirte un código que has acabado usando en parte.

No me parece justa tu frase "he resuelto el problema yo mismo", habrías quedado mejor con un "gracias".

Etiquetas: jfilechooser, swing
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:17.