Frage

Ich habe ein problem beim Versuch, programmatisch drucken Sie ein Verzeichnis von word-Dokumenten.In diesem Beispiel bin ich versucht zu drucken, werden nur die Dateien mit dem "3_" - Präfix.Das problem ist, dass die Datei nicht gedruckt, es sei denn, es sind zwei Dateien mit dem 3_ Präfix.Ich war auf der Suche rund um für immer zu Abbildung dieses problem aus.Gibt es etwas falsch mit der Art, wie ich die Datei öffnen?Es funktioniert nur, wenn es zwei Dateien in dem Verzeichnis, in welchem Fall es wird drucken Sie nur eine der beiden Dateien.

Edit:Ich habe versucht, eine messagebox und der Pfad korrekt ist.Der Dateiname korrekt ist.Auch, wenn ich beobachte den Drucker im Ordner Drucker wird ein Dokument flash, für eine kurze Sekunde und verschwindet dann ( ich habe Druck angehalten, damit ich sehen kann, die Ausgabe).Wenn Wort gibt mir einen Fehler, warum es nicht zeigen?Und warum funktioniert das, wenn dort sind zwei Dateien in dem Verzeichnis mit dem 3_ Präfix?

Edit:Ich denke, es ist ein problem mit dem Ausdruck () - Methode.Wenn ich die app sichtbar und ausführen, wird das Dokument öffnet sich in Ordnung, aber nichts wird gedruckt.Ich kann öffnen Sie das Dokument manuell und drucken (was gut funktioniert).

Edit:Ich danke Euch allen für die Antworten.Hintergrund-parameter im Ausdruck () - Methode hat, war die Frage.Würde das Programm beenden, bevor der Druckvorgang konnte voll Spule (das ist der Grund, warum ich sehen würde, ein flash-Dokument in der Druckerwarteschlange und verschwinden.Das drucken im hintergrund ab erforderlich, das Dokument geöffnet bleiben und drucken, das war der Schlüssel.Vielen Dank

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;
            }
        }
War es hilfreich?

Lösung

Versuchen Sie, und legen Sie die Hintergrund-parameter (1. Parameter) der Ausdruck()- Aufruf auf False.

Wahrscheinlich der Letzte Druckauftrag wird nicht vollständig gespoolt und abgebrochen, da die Word-COM-Objekt freigegeben wird, zu früh.

Andere Tipps

versuchen, zu verwenden

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

statt

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

Es scheint nicht etwas falsch mit Ihrem gepostet Algorithmus.Können Sie versuchen, die folgenden

  1. Fügen Sie einen Haltepunkt und stellen Sie sicher, dass die filesToCheck Objekt hat alle die Dateinamen in es?Es ist möglich, dieser Wert ist falsch und wirft Ihr Algorithmus
  2. Anstatt das Dokument zu drucken, anstatt den code ändern zu werfen, bis eine Nachricht box für jede Datei name.Beseitigen die Druck Teil des Problems zu sein (weiß nicht, wie es sein könnte).

Auch könnten Sie nach dem code, der bekommt die filesToCheck Objekt?

BEARBEITEN

OP erwähnt, dass alle Dateien sind auf jeden Fall immer durch.Versuchen Sie Geschenkpapier drucken Vorgang in einen try/catch-block und sehen, ob es irgendwelche Ausnahmen geworfen, die verhindern, dass die Dateien gedruckt werden.

Versuchen Sie nicht mit einem "_" im Namen der Datei.Ich habe gesehen, einige seltsame Macken vor mit Ladegerät und Ausdruck.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top