Toon posts:

[javascript] inhoud rich text editor in Word openen

Pagina: 1
Acties:
  • 124 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Tweakers,

Voor een klus probeer ik voor elkaar te krijgen om de inhoud van een javascript rich text editor in Word te openen. Er zijn 2 varianten; de plain text en de rich text editor, welke beide werken via een textarea. Het openen van de plain text editor inhoud in word is mij al gelukt door de volgende code op te nemen:

javascript functie plain text:
code:
1
2
3
4
5
6
7
8
9
10
11
function CreateDocPlain() {
ta_1 = document.getElementById('ta_1');

var template  = 'C://Program Files//Microsoft Office//Templates//Mph//01 Algemene Huisstijldocumenten//Fax Nederlands.dot';
var w         = new ActiveXObject('Word.Application'); 
var doc       = w.Documents.Add(template);


w.Application.Visible=true;
w.Selection.TypeText(ta_1.innerText);
}


Bij de plain text textarea wordt de bovenstaande functie als volgt aangeroepen:
code:
1
2
3
4
<textarea name='text' id="ta_1" cols='80'>
<%=messageText%>
</textarea>
<button onClick="CreateDocPlain();">naar msword! (plain4)</button>


Dit werkt dus. Bij de rich text editor ligt het echter iets ingewikkelder, omdat de inhoud van de rich text editor in een andere variabele opgeslagen wordt. De textarea van de rich text editor ziet er als volgt uit:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    <div style='position:relative;top=0px;left=0px;height:250' width=100%>
    <textarea name='html' id="ta_1" style='visibility:hidden;position:absolute;top:0px;left:0px'>
    </textarea>
    <input type='hidden' name='text' value=''>
    <div id='messageContent' style='visibility:hidden;position:absolute;top:0px;left:0px'>
    <%=messageHTML%>
    </div>
    <script>
    var idGenerator = new IDGenerator(0);
    var editor = new Editor(idGenerator);
    editor.Instantiate(<%=agent.getEditorRows()%>);
    </script>
    </div>
    <button onClick="CreateDocRich();">naar msword! (rich4)</button>


Ik heb vervolgens de volgende functie om de HTML van de richtext editor in word te openen:

javascript functie rich text:
code:
1
2
3
4
5
6
7
8
9
10
function CreateDocRich() {

var holdtext  = EditorGetHTML(); // javascript functie van de richtext editor die de html op zou moeten halen
var template  = 'C://Program Files//Microsoft Office//Templates//Mph//01 Algemene Huisstijldocumenten//Fax Nederlands.dot';
var w         = new ActiveXObject('Word.Application'); 
var doc       = w.Documents.Add();

w.Application.Visible=true;
w.Selection.TypeText(holdtext.innerHTML);
}


De reden dat ik niet de inhoud van de textarea met id ta_1ophaal, maar deze functie gebruik is dat in het script gedeelte via javascript de richtexteditor met een body wordt opgebouwd. Volgens mij zou ik de inhoud van deze body via de gebruikte functie uit moeten kunnen lezen, maar dat werkt dus niet.

Om e.a. duidelijk te maken staat hieronder ook nog het relevante stuk uit het script wat de richtext editor opbouwt, dit script wordt overigens bovenaan de pagina geinclude.

code:
1
2
3
4
5
6
7
8
//hier gebeurt het opbouwen van de knoppen (copy, paste enz)
  html +="</table>";

  document.write(html);

  html = '';
  html +='<body style="font:10pt arial">'; //hier wordt volgens mij de uiteindelijke html in geplaatst
  html +='</body>';


Het volledige script is hier te vinden iemsa_htmleditor.js Met de huidige CreateDocRich functie krijg ik de volgende foutmelding:

Regel 651, teken 3: editorCompositionundefined is niet gedefinieerd

Ik kom er zelf niet echt uit (ben een hele dag aan het kloten geweest), maar heb wel het idee dat ik dicht bij ben. Als een van jullie mij weer op weg zou kunnen helpen dan zou dat top zijn!

Verwijderd

Topicstarter
iemand een idee?

  • Optix
  • Registratie: Maart 2005
  • Laatst online: 19-11 11:46
Ik heb het idee dat je topic in Webdesign, Markup & Clientside Scripting thuis hoort. (Waar hoort mijn topic?) :)

.


Verwijderd

Topicstarter
Iemand?

  • killercow
  • Registratie: Maart 2000
  • Laatst online: 28-11 15:56

killercow

eth0

Geen clue, activeX is ranzig en dus niet interessant genoeg om te onderzoeken, maar uhm, Wat is het voordeel van Word boven een richt text editor?
Word opstarten vanaf een website terweil daar al een editor staat lijkt me ZO niet nuttig.

Firefox biedt ook gewoon spellings controlle op richt text edit velden hoor.

[ Voor 17% gewijzigd door killercow op 17-04-2007 11:57 ]

openkat.nl al gezien?


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Maak dan in het vervolg even een topic report in plaats van het in het topic te melden, dan missen we dit soort topics niet zo snel. ;)

PRG>>WEB

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

Topicstarter
killercow schreef op dinsdag 17 april 2007 @ 11:56:
Geen clue, activeX is ranzig en dus niet interessant genoeg om te onderzoeken, maar uhm, Wat is het voordeel van Word boven een richt text editor?
Word opstarten vanaf een website terweil daar al een editor staat lijkt me ZO niet nuttig.

Firefox biedt ook gewoon spellings controlle op richt text edit velden hoor.
De reden dat we Word willen openen is dat de inhoud van de richtext editor in een bepaalde template geopend moet worden. In de word template zit vervolgens wat VB waarmee eenvoudig een bepaalde voettekst gekozen kan worden. ActiveX vormt overigens geen probleem omdat het openen van Word an sich goed gaaat. Het gebruikt van ActiveX in het algemeen is in dit geval ook geen probleem omdat dit gebruikt wordt voor een intranet applicatie.

[ Voor 7% gewijzigd door Verwijderd op 19-04-2007 18:07 ]


  • killercow
  • Registratie: Maart 2000
  • Laatst online: 28-11 15:56

killercow

eth0

Verwijderd schreef op dinsdag 17 april 2007 @ 15:29:
[...]

De reden dat we Word willen openen is dat de inhoud van de richtext editor in een bepaalde template geopend moet worden. In de word template zit vervolgens wat VB waarmee eenvoudig een bepaalde voettekst gekozen kan worden. ActiveX vormt overigens geen probleem omdat het openen van Word an sich goed gaaat. Het gebruikt van ActiveX in het algemeen is in dit geval ook gene probleem omdat dit gebruikt wordt voor een intranet applicatie.
En je webapp kan geen footer dropdown keuze optie geven? (des noods server side behandeld?)
Ik geloof gewoon niet dat je word nodig hebt.

Als je de data daarna weer vanuit word in de rich text editor gaat plakken ben je duf bezig, en als je de text niet meer naar je text-editor copied, waarom biedt je dan niet gewoon een .doc als download aan?

Ik snap het dus niet. intranet of niet, afhankelijk worden van een stukje proprietaire code is gewoon niet slim. Stel je voor dat de office licentie volgend jaar eigenlijk de deur wel uit kan, maar vanwege het intranet er nog een jaartje moet zijn, wat kost dat dan?

openkat.nl al gezien?


  • moozzuzz
  • Registratie: Januari 2005
  • Niet online
killercow schreef op dinsdag 17 april 2007 @ 20:02:
Als je de data daarna weer vanuit word in de rich text editor gaat plakken ben je duf bezig, en als je de text niet meer naar je text-editor copied, waarom biedt je dan niet gewoon een .doc als download aan?
Waarom denk je dat het vanuit word weer naar de rte gaat (dan heeft een footer selecteren nl geen zin, neen)?

@belgie, ik denk dat dit erg moeilijk wordt omdat MS Word wellicht een andere, incompatibele structuur heeft dan de rte-structuur.

  • killercow
  • Registratie: Maart 2000
  • Laatst online: 28-11 15:56

killercow

eth0

moozzuzz schreef op dinsdag 17 april 2007 @ 20:17:
[...]

Waarom denk je dat het vanuit word weer naar de rte gaat (dan heeft een footer selecteren nl geen zin, neen)?

@belgie, ik denk dat dit erg moeilijk wordt omdat MS Word wellicht een andere, incompatibele structuur heeft dan de rte-structuur.
Omdat het aanbieden via een rich-text editor dan kompleet nutteloos is, als het eindstation toch Word is.
Waarom biedt je de gebruikers eerst de mogelijkheid om het online aan te passen alvorens het naar Word te kopieren zodat ze het daarna in word nogmaals kunnen aanpassen.
Een van de 2 editors is overbodig.

openkat.nl al gezien?


  • moozzuzz
  • Registratie: Januari 2005
  • Niet online
killercow schreef op dinsdag 17 april 2007 @ 20:23:
Omdat het aanbieden via een rich-text editor dan kompleet nutteloos is, als het eindstation toch Word is.
Ik kan me perfect een app voorstellen dat online beheerd wordt, eventueel z'n content ook online toont maar evengoed moet kunnen "exporteren" naar MS Word voor klanten of leveranciers (2 eindstations dus). Een beetje zoals lijstjes ook vaak als xls ter download worden aangeboden (in dat laatste geval is het meestal een csv-file met een xls-mime-header). Echter dit filosofeer levert de TS niets op ;^D

@belgie, wat zeker mogelijk moet zijn is je rte-tekst te converteren naar een plaintext en die dan naar je office-document te transformeren. Maar wellicht is dat je doel niet ;-)

Verwijderd

Topicstarter
killercow schreef op dinsdag 17 april 2007 @ 20:23:
[...]


Omdat het aanbieden via een rich-text editor dan kompleet nutteloos is, als het eindstation toch Word is.
Waarom biedt je de gebruikers eerst de mogelijkheid om het online aan te passen alvorens het naar Word te kopieren zodat ze het daarna in word nogmaals kunnen aanpassen.
Een van de 2 editors is overbodig.
Het is in dit geval wel nodig omdat in het ene geval de rich text editor gebruikt wordt om een HTML email te versturen vanuit het Oracle Email Center, terwijl de andere keer de rich text editor gebruikt wordt om een brief op te maken.

Het idee is dat de gebruikers in de rich text editor de inhoud typen, dit geopend wordt in Word om de brief te printen en dat ze in Word de voettekst kunnen selecteren. Er zijn 2 redenen om in het geval van een brief Word te openen:

- Het selecteren van de voettekst gebeurt op dit moment al in Word, de gebruikers zijn hier bekend mee en het is redelijk complex om in de rich text editor te bouwen;
- Het plaatsen van de voettekst onderaan de pagina is vanuit een rich text editor bijna niet voor elkaar te krijgen omdat HTML geen paginering ondersteund;

Over het converteren van rte tekst. Mijn idee was om de HTML inhoud van de rich text editor te openen in Word, waarmee Word de HTML opmaak meeneemt. Dit kan toch of zie ik het verkeerd?

[ Voor 16% gewijzigd door Verwijderd op 17-04-2007 21:39 ]


Verwijderd

Topicstarter
Iemand?

Verwijderd

Waarom niet simpelweg naar PDF als het enkel om het printen gaat? Dan is het positioneren van die footer ook geen probleem.

Verwijderd

Topicstarter
Verwijderd schreef op donderdag 19 april 2007 @ 00:20:
Waarom niet simpelweg naar PDF als het enkel om het printen gaat? Dan is het positioneren van die footer ook geen probleem.
Het gaat niet enkel om printen, de inhoud van de brief moet ook in het Email Center opgeslagen worden omdat alle communicatie (email/klant ) bij de klant opgeslagen moet zijn. Voor de duidelijkheid: CTRL-A > CTRL-C > CTRL-V (van de richt text editor in MSWord) werkt. De COPY button in de editor ipv CTRL-C ook. Dit probleem moet op te lossen zijn lijkt me. Iemand nog suggesties?

  • moozzuzz
  • Registratie: Januari 2005
  • Niet online
Eigenlijk denk ik dat je er niet zal raken als je de (binaire?) opmaak-codes of "DOM" van een office-document kan emuleren met je JS. In jouw plaats zou ik proberen de "rte-DOM" (wellicht een iFrame) copieren naar je activeX.
De reden dat ik niet de inhoud van de textarea met id ta_1ophaal, maar deze functie gebruik is dat in het script gedeelte via javascript de richtexteditor met een body wordt opgebouwd. Volgens mij zou ik de inhoud van deze body via de gebruikte functie uit moeten kunnen lezen, maar dat werkt dus niet.
Al geprobeerd deze inhoud in een ander iframe te gooien?
Regel 651, teken 3: editorCompositionundefined is niet gedefinieerd
Waar wordt deze var gebruikt?

[ Voor 7% gewijzigd door moozzuzz op 19-04-2007 18:10 . Reden: TS al weer deels uit het hoofd geraakt ]


Verwijderd

Topicstarter
Ik ben nu al zover dat de HTML inhoud van de richtexteditor als HTML in Word wordt geplakt. Dit werkt doordat de CreateDocRich functie nu als volgt is:

code:
1
2
3
4
5
6
7
8
9
function CreateDocRich() {

var w         = new ActiveXObject('Word.Application'); 
var doc       = w.Documents.Add();
w.Application.Visible=true;

w.Selection.TypeText(messageContent.innerHTML);
//alert(message2);
}


Nu laat Wordt echter de daadwerkelijke HTML code zien en niet de text met opmaak. Iemand enig idee wat er veranderd moet worden om Word zo te openen dat de HTML opmaak meegenomen wordt?

Verwijderd

Topicstarter
Iemand nog suggesties?

Verwijderd

Topicstarter
Iemand?
Pagina: 1