Pregunta

Estoy teniendo un problema al intentar imprimir mediante programación un directorio de documentos de texto. En este ejemplo, estoy tratando de imprimir sólo los archivos con el prefijo "3_". El problema es que el archivo no se imprime a menos que haya dos archivos con el prefijo 3_. He estado buscando por siempre a entender este problema cabo. ¿Hay algo malo en la forma estoy abriendo el archivo? Sólo funciona cuando hay dos archivos en el directorio, en cuyo caso se imprimirá solamente uno de los dos archivos.

Edit: Yo probé un cuadro de mensaje y la ruta es correcta. El nombre del archivo es correcta. También, si estoy viendo la impresora en la carpeta Impresoras, un documento parpadeará hasta por un breve instante y luego desaparecen (He impresión en pausa para que pueda ver la salida). Si la palabra es que me da un error, ¿por qué no mostrar? Y por qué funciona esto si hay dos archivos en el directorio con el prefijo 3_?

Edit: Creo que es un problema con el método de impresión (). Cuando me puse la aplicación visible y ejecutarlo, el documento se abre bien, pero no se imprime nada. Puedo abrir el documento manualmente y de impresión (que funciona bien).

Edit: Gracias a todos por las respuestas. El parámetro de fondo en el método de impresión () era el problema. El programa se retiraría antes de la impresión podría plenamente carrete (que es por lo que sería ver un destello documento en la cola de impresión y desaparecer. Volviendo fondo imprimiendo el documento requerido para permanecer abierto y de impresión, que fue clave. Gracias

string[] filesToCheck = Directory.GetFiles(clientDirectoryPath);
    Object filename = null;
        for (int i = 0; i < filesToCheck.Count();i++ )
        {
            if(filesToCheck[i].Contains("3_"))
            {
                filename = filesToCheck[i];
                wrdDoc = wrdApp.Documents.Open(ref filename, ref oMissing, ref oTrue, ref oFalse,
                                               ref oMissing, ref oMissing,
                                               ref oMissing, ref oMissing, ref oMissing, ref oMissing,
                                               ref oMissing,
                                               ref oMissing, ref oMissing, ref oMissing, ref oMissing,
                                               ref oMissing);
                wrdDoc.PageSetup.FirstPageTray = letterHeadTray;
                wrdDoc.PageSetup.OtherPagesTray = defaultTray;
                wrdDoc.PrintOut(ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
                                ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
                                ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
                                ref oMissing, ref oMissing, ref oMissing);
                wrdDoc.Close(ref oFalse, ref oMissing, ref oMissing);
                wrdDoc = null;
            }
        }
¿Fue útil?

Solución

Trate de establecer el parámetro de fondo (primero param) de la PrintOut () a Falso.

Probablemente el último trabajo de impresión no está completamente spool y cancelados desde el objeto COM Palabra se libera demasiado pronto.

Otros consejos

probar el uso

string[] files = Directory.GetFiles(dir, "3_*.doc");
foreach(string file in files) { }

en lugar de

for (int i = 0; i < filesToCheck.Count(); i++ ) { }

No parece haber nada mal con su algoritmo publicado. Se puede tratar lo siguiente

  1. Añadir un punto de interrupción y asegúrese de que el objeto filesToCheck tiene todos los nombres de los archivos en ella? Es posible que este valor es incorrecto y lanzando fuera de su algoritmo
  2. En lugar de imprimir el documento, en lugar de cambiar el código de vomitar un cuadro de mensaje para cada nombre de archivo. Esto eliminará la impresión real de ser parte del problema (no ver cómo podría ser).

Además, ¿podría enviar el código que obtiene el objeto filesToCheck?

Editar

OP mencionó que todos los archivos están definitivamente conseguir a través. Trate de envolver la operación de impresión en un bloque try / catch y ver si hay algunas excepciones que son lanzadas que impiden los archivos se impriman.

Trate de no usar un "_" en el nombre del archivo. He visto algunas peculiaridades extrañas antes de que el cargador y la impresión.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top