Frage Drucken von Word-Dokumenten mit Rändern außerhalb des druckbaren Bereichs


Ich habe einen Code, wo ich Word-Dokument drucke. Im Beispieldokument gibt es einen Abschnitt mit Bildern, der die Ränder nach Benutzer geändert hat.

Wenn ich den Code ausführe, erhalte ich folgende Nachricht:

Der Rand von Abschnitt 1 ist außerhalb des bedruckbaren Bereichs festgelegt.

Nach dem Verarbeiten des Dokuments beginnt es mit dem Spooling und löst dieses Promt aus enter image description here Wie deaktiviere ich das Benachrichtigungsdialogfeld?

Mein Code bisher:

        Process printJob = new Process();
        printJob.StartInfo.Verb = "PrintTo";
        printJob.StartInfo.Arguments = printerName;
        printJob.StartInfo.ErrorDialog = false;
        printJob.StartInfo.CreateNoWindow = true;
        printJob.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
        printJob.StartInfo.FileName = path;
        printJob.StartInfo.UseShellExecute = true;
        printJob.StartInfo.Verb = "print";
        printJob.Start();

Wobei der variable Pfad> der Pfad des Dateinamens ist


5
2017-11-01 09:00


Ursprung


Antworten:


http://word.mvps.org/faqs/macrosvba/OutsidePrintableArea.htm

Daher müssen Sie den Hintergrunddruck deaktivieren und Application.DisplayAlerts deaktivieren.

BEARBEITEN

Du wirst das nicht mit machen können Process. Das Verb "print" verwendet / x / dde, um Word mitzuteilen, dass es gedruckt werden soll:

/ x Startet eine neue Instanz von Word aus der Operating Shell (z. B. um in Word zu drucken). Diese Instanz von Word antwortet nur auf eine DDE-Anforderung und ignoriert alle anderen DDE-Anforderungen und Multi-Instanzen. Wenn Sie eine neue Instanz von Word in der Betriebsumgebung (z. B. in Windows) starten, wird empfohlen, dass Sie die Option / w verwenden, die eine voll funktionsfähige Instanz startet.

Um die Nachricht zu unterdrücken, müssen Sie stattdessen Interop durchführen:

  1. Fügen Sie einen Verweis auf Microsoft.Office.Interop.Word hinzu
  2. Mach ein Print(string path) Methode:
Application wordApp = new Application();
wordApp.Visible = false;

//object missing = Type.Missing;

wordApp.Documents.Open(path); //for VS 2008 and earlier - just give missing for all the args

wordApp.DisplayAlerts = WdAlertLevel.wdAlertsNone;
wordApp.ActiveDocument.PrintOut(false); //as before - missing for remaining args, if using VS 2008 and earlier

wordApp.Quit(WdSaveOptions.wdDoNotSaveChanges); //ditto

7
2017-11-01 09:25