Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Abrir archivo pdf.

Estas en el tema de Abrir archivo pdf. en el foro de C/C++ en Foros del Web. Buen día. Necesito hacer una aplicación para mi empresa que me abra uno o varios archivos pdf´s desde c++. El programa buscará de una lista ...
  #1 (permalink)  
Antiguo 26/08/2015, 10:12
 
Fecha de Ingreso: agosto-2015
Mensajes: 4
Antigüedad: 8 años, 7 meses
Puntos: 0
Abrir archivo pdf.

Buen día.

Necesito hacer una aplicación para mi empresa que me abra uno o varios archivos pdf´s desde c++. El programa buscará de una lista en la ruta donde se ejecuta el programa el nombre del .pdf que escoja el usuario, uan vez encontrado debe abrirlo.

He mirado en internet y solo hay códigos para c#, Este es el código que tengo para abrir el archivo, como no he podido abrir el .pdf no me he pasado a codificar la búsqueda.

#include <iostream>
#include <fstream>
using namespace std;
int main () {
ofstream myfile("ejemplo.pdf");
if (myfile.is_open())
{
cout << "Archivo abierto";
myfile.close();
}
else cout << "No se puede abrir el archivo";
return 0;
}

Cualquier sugerencia ycorrección es bienvenida.

Desde ya gracias.

¡Saludos!
  #2 (permalink)  
Antiguo 26/08/2015, 12:53
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 5 meses
Puntos: 204
Respuesta: Abrir archivo pdf.

Buenas tardes.

Con abrir el PDF te refieres a lanzar un visor de pdf o te refieres a cargar su contenido con intención de modificarlo??

Si simplemente quieres leerlo basta con que lances con ejecutar el visor y pasarle como argument la ruta del pdf a abrir... la forma de hacer esto dependerá de si estás en Windows o en Linux.

Si tu intención es abrir el pdf para editarlo... tendrás que usar una librería que sea capaz de leer y modificar PDFs y, francamente, creo que todas las decentes son de pago.

Luego está una tercera opción que consiste en leerse el estándar del documento PDF y diseñar tu propia librería capaz de interpretar este tipo de documentos... en este caso espero que tengas buenos conocimientos de programación y bastante tiempo libre ;)

Un saludo.
  #3 (permalink)  
Antiguo 26/08/2015, 14:11
 
Fecha de Ingreso: agosto-2015
Mensajes: 4
Antigüedad: 8 años, 7 meses
Puntos: 0
Respuesta: Abrir archivo pdf.

Que tal Eferion.

Lo que quiero solo es lanzar el visor sin necesidad de hacer modificación, es para lectura, de acuerdo a tus comentarios ¿Cómo podría hacr que se ejecute el visor?. Es para windows.

¡Saludos!
  #4 (permalink)  
Antiguo 27/08/2015, 00:29
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 5 meses
Puntos: 204
Respuesta: Abrir archivo pdf.

Puedes abrir cualquier programa con la función ShellExecute... únicamente preocúpate de pasarle los argumentos adecuados:

Código C:
Ver original
  1. #include <windows.h>
  2.  
  3. // ...
  4.  
  5. ShellExecute(GetDesktopWindow(), "open", [RUTA_FICHERO_PDF], NULL, NULL, SW_SHOWNORMAL);

¿Cómo funciona? como le indicas que abra un fichero, el sistema operativo buscará el programa asociado a dicha extensión (que usualmente será el visor de pdf) y ejecutará dicho visor para poder abrir el fichero.

Un saludo.
  #5 (permalink)  
Antiguo 28/08/2015, 09:44
 
Fecha de Ingreso: agosto-2015
Mensajes: 4
Antigüedad: 8 años, 7 meses
Puntos: 0
Respuesta: Abrir archivo pdf.

Gracias eferion, me ha funcionado bastante bien, ahora es cuestión de pasarle el parámetro de búesqueda, cuando tenga algo ya hecho lo subo.

¡Saludos!
  #6 (permalink)  
Antiguo 31/08/2015, 12:57
 
Fecha de Ingreso: agosto-2015
Mensajes: 4
Antigüedad: 8 años, 7 meses
Puntos: 0
Respuesta: Abrir archivo pdf.

Ya pude abrir el fichero escibiendo la ruta completa, pero ahora solicito el nombre del archivo pdf y lo quiero concatenar a la ruta no ejecuta, me manda el siguiente error: operandos no válidos de tipos 'const char [88]' y 'char [6]' al operador binario +.

Este es mi código.

Código C++:
Ver original
  1. #include <cstdlib>
  2. #include <windows.h>
  3. #include<iostream>
  4. #include<stdio.h>
  5.  
  6. // ...
  7. using namespace std;
  8.  
  9. int main(int argc, char** argv) {
  10.     char e[6];
  11.     cout<<"Escribe el  número de la escritura: \r\n";
  12.     cin>>e;
  13.     //printf("Este es el número de escritura que escribiste:%c",e);
  14.     cout<<"Tu escritura es: ";
  15.     cout<<e;
  16. ShellExecute(GetDesktopWindow(),"open","C:\\"+e+".pdf", NULL, NULL, SW_SHOWNORMAL);
  17.  
  18.     return 0;
  19. }

¡Saludos!
  #7 (permalink)  
Antiguo 01/09/2015, 00:54
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 5 meses
Puntos: 204
Respuesta: Abrir archivo pdf.

Código C++:
Ver original
  1. "C:\\"+e+".pdf"

Esa estructura, como tal, te va a dar error... el tipo char* no es una clase de C++, por lo que no dispone de operadores sobrecargados que permitan hacer operaciones sobre este tipo de elementos.

Tienes dos opciones:

1. Usas funciones de C para manipular strings:

Código C++:
Ver original
  1. char ruta[1000];
  2. sprintf( ruta, "C:\\%s.pdf", e );
  3. ShellExecute(GetDesktopWindow(),"open",ruta, NULL, NULL, SW_SHOWNORMAL);

2. Usas un string de C++. En este caso no olvides que la función ShellExecute no espera recibir un std::string, sino un char*

Código C++:
Ver original
  1. // opcion 1:
  2. std::ostringstream os;
  3. os << "C:\\ " << e << ".pdf";
  4. std::string ruta = os.str( );
  5. ShellExecute(GetDesktopWindow(),"open",ruta.c_str(), NULL, NULL, SW_SHOWNORMAL);
  6.  
  7. // opcion 2:
  8. std::string ruta = "C:\\"; // No podemos concatenar char* directamente
  9. // No estamos concatenando char*
  10. // sino (string + char*) + char* => string + char* => string
  11. ruta = ruta + e + ".pdf";
  12. ShellExecute(GetDesktopWindow(),"open",ruta.c_str(), NULL, NULL, SW_SHOWNORMAL);

Un saludo

Etiquetas: int, programa
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 02:29.