Impression de document Word avec des marges hors de la zone imprimable

J’ai un code où j’imprime le document Word. Dans l’exemple de document, il y a une section avec picure qui a modifié les marges par utilisateur.

Lorsque j’exécute le code, je reçois le message suivant:

La marge de la section 1 est définie en dehors de la zone imprimable.

Après avoir traité le document, il commence à spouler et lance cette promesse entrer la description de l'image ici Comment désactiver la boîte de dialog de notification?

mon code jusqu’à présent:

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(); 

Où chemin de variable> est le chemin du nom de fichier

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

Selon cela, vous devez désactiver l’impression en arrière-plan, puis désactiver Application.DisplayAlerts.

MODIFIER

Vous ne pourrez pas le faire avec Process . Le verbe “print” utilise / x / dde pour indiquer à Word d’imprimer:

/ x Démarre une nouvelle instance de Word à partir du shell d’exploitation (par exemple, pour imprimer dans Word). Cette instance de Word répond à une seule demande DDE et ignore toutes les autres requêtes DDE et les multi-instances. Si vous démarrez une nouvelle instance de Word dans l’environnement d’exploitation (par exemple, sous Windows), il est recommandé d’utiliser le commutateur / w, qui démarre une instance entièrement opérationnelle.

Pour supprimer le message, vous devrez faire une interopérabilité à la place:

  1. Ajouter une référence à Microsoft.Office.Interop.Word
  2. Faire une méthode Print(ssortingng path) :
 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