Udskrive word dokumenter fra hjemmeside

Tags:    asp.net

Hej

Jeg forsøger at få lavet en funktion til min hjemmeside hvor det skal være muligt at skabe et worddokument i koden og derefter printe det ud på klientens printer. Jeg skal printe på en bon printer og det har vist sig at word er det bedste til at printe med af hensyn til format på bogstaver, papirets længde mm.
Er lidt i tvivl om hvordan man sender word filen over til klienten og derfter printer det ud, dog uden at selve word programmet åbner dokumentet. Print dialogboksen skal automatisk komme op når klienten vil printe word dokumentet.

På forhånd tak.. mange tak!



6 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 5 karma
Sorter efter stemmer Sorter efter dato
Dårlig valg af strategi!

Det vil jo betyde at den bruger der skal skrive ud SKAL have word installeret. Det kan du vel ikke garantere? Vælg hellere en anden løsning.

Hvis det er noget du skal levere, så ville jeg dele det op i nogle faser. Fase eet, selv kunne skrive det ud, uden smarte fonte osv. bare almindelige fonte. Så er "hovedopgaven" løst og du kan skabe resultater. Nu har du så tid til at gå i tænkeboks og finde ud af hvordan du vil gøre det med fonte, farver og andet lir.

P.S. Hvis du absolut VIL gå den vej skal du genskabe et word dokument (tror det hedder WordML, et XML format word bruger, let at genskabe) Du laver et word dokument der ser ud som du skal bruge det, gemmer det som xml og laver en applikation der kan genskabe (lav et word dokument, og der hvor du skal have indsat noget tekst mv. skriver du bare fx. #FIRMA# og laver en søg og erstat i filen bagefter) med advarsel, det er nemmere sagt end gjort.

Igen, så synes jeg ikke det er den rigtige vej at gå, du binder dig 100% til word (i værste tilfælde til een bestemt word version)



Hej,

Nu kan jeg lige kommet med lidt input.
Det er utrolig svært at lave et word dokument ud fra kode, det kræver du har adgang til office com+ objekter, hvilket kræver at du enten har fået dem lagt på serveren og eller at office pakken er installeret på serveren. Det er ikke altid muligt og normalt en dårlig ide at få det installeret.

Hvis du skal arbejde med Word, er det nemmest du arbejder med Office 2007 og ikke andre versioner. Office 2007 har nemlig lavet om på hvordan dokumentstrukturen er. Det vil sige at hvert docx dokument basalt set er en xml fil, som du kan læse. Jeg mener du kan ændre filnavnet til *.cab i stedet for .docx og derved se hvordan det ser ud. Her har du mulighed for at lave en skabelon som du kan bruge til dine bon's der skal udskrives. Dette kræver dog at brugeren har office 2007.

Hvis du skal have den til at printe ud automatisk, kræver det at filen bliver åbnet. Dette kræver under alle omstændigheder en brugerinteraktion, i form af "Åben" når brugeren har fået sendt dokumentet til sig. Når dette er sket kræver det yderligere at du har lagt en macro ind i dokumentet, som sørger for det bliver skrevet ud, hvilket også på brugerens side, kræver det er aktiveret.

Som du nok kan forstå begynder det at blive en mere og mere avanceret løsning hvis du skal bruge word com+ api. Har arbejdet lidt med det og kan kun sige at det bestemt ikke er den vej du ønsker at arbejde dig hen imod.

Vil klart anbefale dig, at finde en måde at ordne det web baseret. Lave en XML struktur og binde det op med noget xslt så det kommer til at passe til din bon maskine. Hvis du kan få det til at virke i word, kan du også få det til at virke med web. Hvis ikke du kan få det til at virke, har du ikke arbejdet nok med det :)

Konklusion:
Brug en webbaseret løsning, andet vil være alt for besværligt.



Kan godt følge dig i det du siger men den printer jeg bruger er en bonprinter og efter at have avet lidt forskellige tests (printet fra word, pdf, html) er word det eneste som sikre at printet får den fulde papirlængde og rette størrelse på tekst. Har siddet og rodet lidt med de klasser der er i .net omkring word og det er ikke lige til at gennemskue.
Anden del af problemet er at printopgaven skal starte automatisk således brugeren blot skal trykke ok på den almindelig printskærm man får frem. Vil det være muligt at angive klienten som printserver vha ip og printernavn og så sende besked om at der skal printes?



En løsning til problemet med kravet om at word skal være installeret kunne evt vær blot at installere word viewer måske??



En løsning til problemet med kravet om at word skal være installeret kunne evt vær blot at installere word viewer måske??


Det ændrer ikke problemet, du risikerer stadig af være bundet til en bestemt versino af word. Du kan jo også risikere at word "popper" din printdialog op. Jeg tror løsningen er at lave det i .NET og så lade din .NET kode oprette en side der er ligeså lang og bred som din bonprinter.

Jeg er ikke helt sikker på om du må have lov til at tilgå printfunktionaliteten i .NET fra din asp.net side. Men det er da et eksperiment værd. Ellers er den eneste måde at gøre det på jo ved at lave en document.print() javascript, men så får du den grimme explorer dialog op.



Indlæg senest redigeret d. 21.01.2010 08:58 af Bruger #2730
Jeg vil give Brian ret mht. til det med Word.
Det ville være en dårlig idé. Det gør at kunden SKAL være bundet af et stykke software som koster penge.



t