Question

J'ai un problème lorsque vous essayez d'imprimer un répertoire de programmation des documents Word. Dans cet exemple, je suis en train d'imprimer uniquement les fichiers avec le préfixe « 3_ ». Le problème est que le fichier n'imprime pas moins qu'il y ait deux fichiers avec le préfixe 3_. Je cherche toujours à comprendre autour de ce problème sur. Y at-il quelque chose de mal avec la façon dont j'ouvre le fichier? Il ne fonctionne que quand il y a deux fichiers dans le répertoire, auquel cas il affichera seulement l'un des deux fichiers.

Edit: J'ai essayé messageBox et le chemin est correct. Le nom de fichier est correct. De plus, si je regarde l'imprimante dans le dossier imprimantes, un document clignote pour une brève seconde et puis disparaissent (j'ai l'impression mis en pause pour que je puisse voir la sortie). Si le mot me donne une erreur, pourquoi ne pas montrer? Et pourquoi cela fonctionne s'il y a deux fichiers dans le répertoire avec le préfixe 3_?

Edit: Je pense qu'il est un problème avec la méthode impression (). Quand je tournerai l'application visible et à l'exécuter, le document ouvre bien, mais rien est imprimé. Je peux ouvrir le document manuellement et impression (qui fonctionne très bien).

Edit: Merci à tous pour les réponses. Le paramètre d'arrière-plan dans la méthode impression () a été la question. Le programme quitterait avant l'impression pourrait complètement la bobine (ce qui est la raison pour laquelle je voir un éclair de documents dans la file d'attente d'impression et disparaître. En ce fond imprimant nécessaire le document de rester ouvert et impression, qui a été la clé. Merci

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;
            }
        }
Était-ce utile?

La solution

Essayez et définir le paramètre de base (1er param) du PrintOut () pour False.

Probablement le dernier travail d'impression est pas complètement bobiné et annulé depuis l'objet Word COM est libéré trop tôt.

Autres conseils

essayez d'utiliser

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

au lieu de

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

Il ne semble pas être quelque chose de mal avec votre algorithme posté. Pouvez-vous les opérations suivantes

  1. Ajoutez un point d'arrêt et assurez-vous que l'objet filesToCheck a tous les noms de fichiers en elle? Il est possible que cette valeur est incorrecte et de lancer votre algorithme
  2. Au lieu d'imprimer le document, modifier le code au lieu de lancer une boîte de message pour chaque nom de fichier. Cela éliminera l'impression réelle faisant partie du problème (ne voit pas comment il pourrait être).

, pourriez-vous aussi poster le code qui est l'objet filesToCheck?

EDIT

OP a mentionné que tous les fichiers sont certainement passer à travers. Essayez d'envelopper l'opération d'impression dans un bloc try / catch et voir s'il y a des exceptions jetés qui empêchent les fichiers d'être imprimés.

Essayez de ne pas utiliser un « _ » au nom du fichier. Je l'ai vu quelques bizarreries étranges avant avec ce chargeur et PrintOut.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top