Word-Dokument drucken
-
Hi zusammen!
Ich bin solangsam am Verzweifeln. Ich habe ein Worddokument, welches ich mittels C# drucken möchte. An diesem Problem sitz ich nun schon seit heute morgen. Im Internet findet sich einiges, aber nichts brauchbares. Das vielversprechendste ist wohl das hier: http://www.codeproject.com/KB/printing/WordPrinting.aspx
Allerdings bleibt mein Programm beim Öffnen des Worddokuments hängen (der Quelltext auf der Seite beinhaltet einige syntaktische Fehler).
Es kann doch nicht so schwer sein, ein Worddokument zu drucken. Könnt ihr mir da auf die Sprünge helfen?
Ich bin für jeden Tip dankbar!
Viele Grüße,
Lukas
-
Versuch mal ShellExecute mit print und Pfad zum Document. (Eventuell abbildbar mit System.Diagnostic.Process - bitte mal in der MSDN nachschauen)
[edit] Edit erwischt , zitieren sollte es sein[/edit]
-
Hi!
Das funktioniert leider nicht. Die Eingabe "print C:\pfadzur\Datei.doc" funktioniert leider nicht. Es kommt eine Konsolenfenster indem behauptet wird, dass das Dokument gedruckt wird, ohne dass sich das irgendwann mal ändert. Am Drucker kommt nichts an
Trotzdem vielen Dank!
Viele Grüße,
Lukas
-
Knuddlbaer schrieb:
Versuch mal ShellExecute mit print und Pfad zum Document. (Eventuell abbildbar mit System.Diagnostic.Process - bitte mal in der MSDN nachschauen)
http://msdn.microsoft.com/en-us/library/bb762153(VS.85).aspx
-
-
Knuddlbaer schrieb:
Knuddlbaer schrieb:
Versuch mal ShellExecute mit print und Pfad zum Document. (Eventuell abbildbar mit System.Diagnostic.Process - bitte mal in der MSDN nachschauen)
http://msdn.microsoft.com/en-us/library/bb762153(VS.85).aspx
Hallo!
Danke, jetzt habe ich verstanden, was du meinst. Ich habe es jetzt so versucht:
[DllImport("shell32.dll")] protected static extern void ShellExecute(IntPtr hWndChild, string lpOperation, string lpFile, string lpParameters, string lpDirectory, int showCMD); public Form1() { InitializeComponent(); string print = "print"; string file = @"C:\blubb.doc"; IntPtr p2 = new IntPtr(); ShellExecute(p2, print, file, null, null, 0); }
Damit wird mein Dokument gedruckt. Allerdings wird dabei Word geöffnet, was nicht ideal ist. Geht das auch anders?
Vielen Dank und viele Grüße,
Lukas
-
NozzNazz schrieb:
http://msdn.microsoft.com/en-us/library/system.drawing.printing.printdocument.aspx
Hi!
Diese Klasse habe ich auch schon gefunden. Textdateien kann man damit auch wunderbar drucken. Allerdings öffnet er Worddokumente ebenfalls wie eine Textdatei (wie wenn man die Datei im Notepad öffnet) und druckt dann den Kauderwelsch aus.
Der Inhalt ist unkenntlich und die Formatierung komplett entfernt.
Viele Grüße,
Lukas
-
Nur zur Info:
System.Diagnostics.Process bildet auch ShellExecute ab. Dies kann als Option angegeben werden. Was bedeuted der P/Invoke import ist unnötig.
Simon
-
Hi zusammen,
dies scheint mit inzwischen die beste, wenn auch nicht zufriedenstellende, Lösung zu sein.
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using Microsoft.Office.Interop.Word; namespace Test { public partial class Form1 : Form { ApplicationClass wordApp = null; public Form1() { InitializeComponent(); object missingValue = Type.Missing; object myTrue = true; object oFaxFile = @"C:\path.doc"; wordApp = new ApplicationClass(); Document doc = wordApp.Documents.Open(ref oFaxFile, ref missingValue, ref missingValue, ref missingValue, ref missingValue, ref missingValue, ref missingValue, ref missingValue, ref missingValue, ref missingValue, ref missingValue, ref missingValue, ref missingValue, ref missingValue, ref missingValue, ref missingValue); FaxOutDoc(doc); doc.Close(ref missingValue, ref missingValue, ref missingValue); } private bool FaxOutDoc(Document doc) { object myTrue = true; object myFalse = false; object missingValue = Type.Missing; object range = WdPrintOutRange.wdPrintAllDocument; object items = WdPrintOutItem.wdPrintDocumentContent; object copies = "1"; object pages = "1"; object pageType = WdPrintOutPages.wdPrintAllPages; doc.PrintOut(ref myTrue, ref myFalse, ref range, ref missingValue, ref missingValue, ref missingValue, ref items, ref copies, ref pages, ref pageType, ref myFalse, ref myTrue, ref missingValue, ref myFalse, ref missingValue, ref missingValue, ref missingValue, ref missingValue); return true; } } }
Wenn jemand einen besseren Vorschlag hat wäre ich sehr dankbar