//Dudas en ferhuego(a)hotmail.com //Cancionero imprimido con este programa en https://ific.uv.es/~ferhue/guitar /* Programa para crear archivos pdf masivamente a partir de .doc (word): Es necesario utilizar PDF Creator. Hay que compilar el programa y moverlo a la carpeta donde estén los archivos .doc que quieras pasar. En el archivo input.txt debes escribir uno detrás de otro los nombres de los archivos sin especificar la extensión (.doc). Si tienen otra extensión, debes quitar el .doc de la variable string sf y ponerlo directamente en input.txt Si el archivo está en una subcarpeta, tienes que poner Subcarpeta/archivo.doc o bien dos líneas: SUB nombresubcarpeta y sigues ahí poniendo todos los archivos dentro de esa subcarpeta. cuando quieras salir: ENDSUB nombresubcarpeta comando especial: BLANK: introduce hoja en blanco (crea un archivo en la carpeta donde esté el programa, que se llame blank.doc y que esté vacía STOP impar ignora esas dos líneas (es para controlar en el .txt visualmente páginas pares e impares) EXIT para avisar al programa que ya no hay más archivos. Importan las mayúsculas. */ #include #include #include #include #include #include #include #include using namespace std; int TAM=300;//nº líneas documento //hacer bloques de pdf¿¿ int main() { ifstream f("input.txt"); ofstream g("output.txt"); string bas,si,sa,bl,sf,fn="IN"; si= "C:\\Archivos de programa\\Microsoft Office\\OFFICE11\\winword.exe \""; sf= ".doc\" /q /n /mFilePrintDefault /mFileExit";//aquí se puede eliminar la extensión e incluirla directamente en input.txt /*si= "C:\\Archivos de programa\\PDFCreator\\PDFCreator.exe /PF\""; sf= ".doc\"";*/ sa=""; bl="blank"; int i,j,max; getline(f,bas); f >> TAM; f.ignore(); i=1; max=TAM; getline(f,fn); if (fn!="EXIT") { cout << fn << endl; g << /*1 << ".- " <<*/ fn << endl; fn=si+fn+sf; WinExec(fn.c_str(), SW_HIDE); cout << "1er archivo preparado para imprimir.\n"; cout << "Pulsa en el monitor de PDF Creator en poner en cola de impresion.\n"; cout << "El resto iran todos seguidos.\n"; system("Pause"); getline(f,fn); } while (fn!="EXIT"&&fn!="SUB"&&i<=TAM) { cout << sa+fn << "\t" << i+1 << endl; if (fn=="BLANK") { fn=bl; } else { if (fn!="blank") { g << /*i << ".- " << */fn << endl; } fn=sa+fn; } fn=si+fn+sf; Sleep(3000); WinExec(fn.c_str(), SW_SHOWMINIMIZED); getline(f,fn); while(fn=="SUB"||fn=="ENDSUB"||fn=="STOP") { while(fn=="SUB") { getline(f,fn); sa=sa+fn; getline(f,fn); } while(fn=="ENDSUB") { getline(f,fn); j=sa.find(fn); sa.erase(j,fn.length()); getline(f,fn); } if(fn=="STOP") { getline(f,fn); getline(f,fn); } } i++;//tb en la condicional } f.close(); g.close(); cout << "\nTodos los " << i << " documentos estan ahora en cola de impresion.\n"; cout << "Entra en el monitor de PDF Creator y pulsa en Combinar Todo y luego en imprimir documento.\n"; cout << "Ya puedes cerrar esta ventana.\nRecuerda poner numeros de pagina al pdf, subirlo a la web con la fecha de actualizacion.\n"; system("Pause"); return 0; } //string s="C:\\Archivos de programa\\Microsoft Office\\OFFICE11\\winword.exe \"Índice 2.doc\" /q /n /mFilePrintDefault /mFileExit"; //WinExec(s.c_str(), SW_SHOWMINIMIZED); //cout << s << endl; //WinExec((LPCSTR)program, SW_SHOWMINIMIZED); //command.com /c tree /F /A > C:\Listing.txt