Domanda

Sto avendo un problema quando si cerca di stampare di codice un elenco dei documenti di Word. In questo esempio, sto cercando di stampare solo i file con il prefisso "3_". Il problema è che il file non viene stampato a meno che non ci sono due file con il prefisso 3_. Ho cercato in giro per sempre di capire questo problema fuori. C'è qualcosa di sbagliato con il modo in cui sto aprendo il file? Funziona solo quando ci sono due file nella directory, nel qual caso verrà stampata solo una delle due file.

Edit: ho provato un MessageBox e il percorso sia corretto. Il nome del file è corretto. Inoltre, se sto guardando la stampante nella cartella delle stampanti, un documento lampeggia per un breve istante e poi scompare (ho stampa in pausa in modo che posso vedere l'output). Se parola mi sta dando un errore, perché non si vede? E perché fa questo lavoro se ci sono due file nella directory con il prefisso 3_?

Modifica: Penso che sia un problema con il metodo di stampa (). Quando ho creato l'applicazione per visibile ed eseguirlo, il documento si apre bene, ma non viene stampato nulla. Posso aprire il documento manualmente e la stampa (che funziona bene).

Edit: Grazie a tutti per le risposte. Il parametro di fondo nel metodo stampa () è stato il problema. Il programma dovrebbe uscire prima che la stampa potesse pienamente spool (che è il motivo per cui vorrei vedere un lampo documenti nella coda di stampa e scomparire. Girando la stampa in background necessario il documento di rimanere aperti e di stampa, che è stato fondamentale. Grazie

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;
            }
        }
È stato utile?

Soluzione

Provare e impostare il parametro di sfondo (1 ° param) del PrintOut () chiamata false.

Probabilmente l'ultimo lavoro di stampa non è completamente lo spooling e annullato in quanto l'oggetto di Word COM viene rilasciato troppo presto.

Altri suggerimenti

Prova Usa

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

anziché

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

Non sembra essere qualcosa di sbagliato con l'algoritmo pubblicato. Si può provare il seguente

  1. Aggiungi un punto di interruzione e assicurarsi che l'oggetto filesToCheck ha tutti i nomi dei file in essa? E 'possibile questo valore non è corretto e gettando via l'algoritmo
  2. Invece di stampare il documento, invece modificare il codice a vomitare una finestra di messaggio per ogni nome di file. Che eliminerà la stampa effettiva di essere parte del problema (non si vede come potrebbe essere).

Inoltre, potrebbe inviare il codice che ottiene l'oggetto filesToCheck?

Modifica

OP detto che tutti i file sono sicuramente ottenere attraverso. Provare avvolgendo l'operazione di stampa in un blocco try / catch e vedere se ci sono delle eccezioni gettati che impediscono i file vengano stampati.

Cercate di non utilizzare un "_" nel nome del file. Ho visto alcuni strani capricci prima con quella caricabatterie e stampa.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top