[php] Text uit word

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • LoBbY_1
  • Registratie: Juli 2002
  • Laatst online: 17-09 20:43
Hoi,

Ik ben voor een bedrijf bezig met het maken van een website. Nu wilde ik een mogelijkheid maken om rechtstreeks vanuit word te kunnen copy/pasten naar de admin module van de site.

Nu bestaat (is nog maar een test versietje) uit het volgende: Een contentEditable div, en een stukje javascript om de inhoud van die div mee te sturen.

Dit werkt super mooi icm met gewone tekst en copy/pasten uit een website. Maar zodra ik wil copy/pasten vanuit word krijg ik een XML fout. Ik weet we dat dat moet kloppen aangezien word (als ik het goed heb?) werkt met xml. Gewoon normale (zwatre) tekst lijkt geen probleem maar zodra er maar iets van opmaak in zit gaat het mis:
code:
1
2
3
4
The XML page cannot be displayed 
Cannot view XML input using style sheet.
Please correct the error and then click the Refresh button, 
or try again later.


Nu heb ik al gebrobeerd om met XML headers te werken maar dat leek ook niet echt te werken, wie heeft er ooit al zo iets gemaakt en hoe?

Alvast bedankt.

[ Voor 3% gewijzigd door LoBbY_1 op 18-02-2004 12:41 ]

Een echte golver is nooit uitgeput


Acties:
  • 0 Henk 'm!

  • Anders
  • Registratie: December 2000
  • Laatst online: 13-09 18:52
Krijg je die error bij het submitten van het formulier, of al op het moment van pasten?

Ik spoor veilig of ik spoor niet.


Acties:
  • 0 Henk 'm!

  • LoBbY_1
  • Registratie: Juli 2002
  • Laatst online: 17-09 20:43
Het zijn gewoon 2 php bestanden, in de ene staat die bewerkbare div, en word vannaf die pagina naar de 2e doorgetuurt gewoon via een post. In die 2e word dan de verstuude data ge echo'd zodat je kan zien wat je had verstuurd. Dit werkt prima, maar zodra er dus rechtstreekse inhoud vanuit word wordt vertuurt krijg ik die melding. En dat of ik nou XML headers gebruik, of niet (of ik doe het natuurlijk fout met die headers:P)

complete melding:

PHP:
1
2
3
4
5
A string literal was expected, but no opening quote character was found.
Error processing resource 'inhoud.php'. Line 1, Position 53 

<?xml version="1.0" encoding="ISO-8859-1"?><P class=MsoNormal style=\"MARGIN: 0in 0in 0pt\">Blaadieblaadie</P>
----------------------------------------------------^

[ Voor 44% gewijzigd door LoBbY_1 op 18-02-2004 13:16 ]

Een echte golver is nooit uitgeput


Acties:
  • 0 Henk 'm!

  • rig0r
  • Registratie: Juli 2001
  • Laatst online: 11-03 16:08
Ik snap niet precies wat je wil met XML hier, maar dit is geen XML, maar HTML. Een XML header erboven zetten heeft geen zin zolang dit het geval is.

Waarom wil je hier iets met XML ?

Acties:
  • 0 Henk 'm!

  • LoBbY_1
  • Registratie: Juli 2002
  • Laatst online: 17-09 20:43
Waarom wil je hier iets met XML ?
Om de opmaak die in word is gemaakt te bewaren zodat je makkelijk een website aan kan passen. De beheer module is ook niet bedoeld voor iemand die verstand heeft van html :( Andes was het heel makkelijk geweest:) Iig kan ik nu al een stukje parsen met de xml parser van php. Ik kan me vergissen, maar Word maakt toch gebruik van XML Kijk maar eens naar een source :
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
<!--[if gte mso 9]><xml>
 <o:DocumentProperties>
  <o:Author>IK</o:Author>
  <o:LastAuthor>IK</o:LastAuthor>
  <o:Revision>1</o:Revision>
  <o:TotalTime>13</o:TotalTime>
  <o:Created>2004-02-18T12:14:00Z</o:Created>
  <o:LastSaved>2004-02-18T12:27:00Z</o:LastSaved>
  <o:Pages>1</o:Pages>
  <o:Company>mijn bedrijf</o:Company>
  <o:Lines>1</o:Lines>
  <o:Paragraphs>1</o:Paragraphs>
[.....]

Maar hoe dan ook, ik kan er natuurlijk ook totaal naast zitten 8)7
Voorbeeldje :
Typ maar eens gewone text, of copy paste iets uit een browser en er is niets aan de hand. Copy paste daarna eens iets uit een word document met een beetje opmaak zoals ander lettertype enz . Dan zie je wat ik bedoel. Print je trowens de opmaak uit word tussen html tags, dan is gelijk de complete opmaak weg, maar werkt het wel..
http://wyger.gotdns.com/usr/server/voorbeeld/

[ Voor 89% gewijzigd door LoBbY_1 op 18-02-2004 15:35 ]

Een echte golver is nooit uitgeput


Verwijderd

LoBbY_1 schreef op 18 februari 2004 @ 14:14:
Om de opmaak die in word is gemaakt te bewaren zodat je makkelijk een website aan kan passen. De beheer module is ook niet bedoeld voor iemand die verstand heeft van html :( Andes was het heel makkelijk geweest:) Iig kan ik nu al een stukje parsen met de xml parser van php. Ik kan me vergissen, maar Word maakt toch gebruik van XML
Als je iets plakt in een editable deel van een HTML pagina maakt Internet Explorer er HTML van. Als je dan de InnerHTML kopieert, krijg je gewoon de HTML die IE heeft afgebeeld.
IE herformateert de geplakte HTML geheel, zodat bijvoorbeeld <br /> in <BR> wordt gewijzigd!
Dat opmaak als lettertype, bold, etc. bewaard blijft is te danken aan het mechanisme waarmee het Windows klembord dingen kan converteren. De opgemaakte tekst wordt door IE verwerkt tot HTML formatted tekst en in de HTML boom gehangen...

  • LoBbY_1
  • Registratie: Juli 2002
  • Laatst online: 17-09 20:43
Dat klopt wel, alleen is het dan wel vreemd dat ik een xml fout krijg. Inderdaad voor de rest klopt het ook precies wat je zecht. Zet je de verstuurde inhoud uit word tussen html tags dan klopt de align nog wel, alleen is de verdere opmaak weg. Ik heb net even wat lopen spelen met een xml parser, en tot mn verbazing bleef de opmaak uit word bewaard, kleur, tabellen en dat soort dingen werkten redelijk ! In de post (2e hier boven) staat een link, kijk maar eens wat ik bedoel :) die opmaak word niet omgezet naar html.

Een echte golver is nooit uitgeput


  • mindcrash
  • Registratie: April 2002
  • Laatst online: 22-11-2019

mindcrash

Rebellious Monkey

rig0r schreef op 18 februari 2004 @ 13:54:
Ik snap niet precies wat je wil met XML hier, maar dit is geen XML, maar HTML. Een XML header erboven zetten heeft geen zin zolang dit het geval is.

Waarom wil je hier iets met XML ?
Dit is geen XML, en ook geen HTML maar WordML. Een sterk verbeterde versie hiervan (die ook 100% voldoet aan de XML standaard) is pas aanwezig in Word 2003.

Parsen van een naar HTML geconverteerd Word <= 2002 document gaat dan ook niet lukken (at least dat is mijn ervaring) omdat de code die WordML vóór versie 2003 uitbraakt domweg superbrak is.

Wat je wellicht bijvoorbeeld zou kunnen doen is met behulp van VBA een nieuwe functie aan Word toevoegd die nadat je een stuk tekst hebt geselecteerd in staat is om de bijbehorende stijl informatie om te zetten naar een XML formaat wat jouw CMS begrijpt. Misschien is zoiets wat? :)

[ Voor 20% gewijzigd door mindcrash op 19-02-2004 15:13 ]

"The people who are crazy enough to think they could change the world, are the ones who do." -- Steve Jobs (1955-2011) , Aaron Swartz (1986-2013)


  • LoBbY_1
  • Registratie: Juli 2002
  • Laatst online: 17-09 20:43
Zou je niet gewoon een parser voor WordML kunnen maken? of is zoiets beina onmogelijk?

Een echte golver is nooit uitgeput


  • TheDane
  • Registratie: Oktober 2000
  • Laatst online: 16:30

TheDane

1.618

Heb hier een code abstract die Microsoft Word text mooi opschoont.
Heb 't inmiddels in diverse projecten geimplementeerd, werkt prima.

De code is overigens © FCKeditor

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function cleanAndPaste( html )
{
    // Remove all SPAN tags
    html = html.replace(/<\/?SPAN[^>]*>/gi, "" );
    // Remove Class attributes
    html = html.replace(/<(\w[^>]*) class=([^ |>]*)([^>]*)/gi, "<$1$3") ;
    // Remove Style attributes
    html = html.replace(/<(\w[^>]*) style="([^"]*)"([^>]*)/gi, "<$1$3") ;
    // Remove Lang attributes
    html = html.replace(/<(\w[^>]*) lang=([^ |>]*)([^>]*)/gi, "<$1$3") ;
    // Remove XML elements and declarations
    html = html.replace(/<\\?\?xml[^>]*>/gi, "") ;
    // Remove Tags with XML namespace declarations: <o:p></o:p>
    html = html.replace(/<\/?\w+:[^>]*>/gi, "") ;
    // Replace the &nbsp;
    html = html.replace(/&nbsp;/, " " );
    // Transform <P> to <DIV>
    var re = new RegExp("(<P)([^>]*>.*?)(<\/P>)","gi") ;    
    html = html.replace( re, "<div$2</div>" ) ;

    insertHtml( html ) ;
}

[ Voor 17% gewijzigd door TheDane op 19-02-2004 18:15 ]


Acties:
  • 0 Henk 'm!

  • LoBbY_1
  • Registratie: Juli 2002
  • Laatst online: 17-09 20:43
:) hartstikke bedankt! Ik zal gelijk eens kijken!!!

Een echte golver is nooit uitgeput


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

// Transform

to


var re = new RegExp("(]*>.*?)(<\/P>)","gi") ;
html = html.replace( re, "" ) ;
Waarom zou je in hemelsnaam p-tags willen converten naar divs???

Maar goed.. je kunt ook net zo makkelijk paste- en drop-events afvangen en de tekst vervolgens plakken als plain tekst. Weet je zeker dat er geen gekke opmaak van Word meekomt en kun je het met de mogelijkheden van de editor (die jij dus hebt gedefineerd) weer opnieuw opmaken.

Acties:
  • 0 Henk 'm!

  • LoBbY_1
  • Registratie: Juli 2002
  • Laatst online: 17-09 20:43
Ik denk dat dat wel een van de beste oplossingen is. Dan weet je zeker dat je ook geen rare html codes enz krijgt :P En dat zal dan wel weer ten goede komen aan de snelheid.

Een echte golver is nooit uitgeput


Acties:
  • 0 Henk 'm!

  • TheDane
  • Registratie: Oktober 2000
  • Laatst online: 16:30

TheDane

1.618

Bosmonster schreef op 20 februari 2004 @ 09:58:
[...]


Waarom zou je in hemelsnaam p-tags willen converten naar divs???

Maar goed.. je kunt ook net zo makkelijk paste- en drop-events afvangen en de tekst vervolgens plakken als plain tekst. Weet je zeker dat er geen gekke opmaak van Word meekomt en kun je het met de mogelijkheden van de editor (die jij dus hebt gedefineerd) weer opnieuw opmaken.
daar kun je inderdaad (ook) voor kiezen.
't grappige is in mijn geval dat de klanten zulke stijfkoppen zijn dat ze perse hun teksten in Word willen opmaken.

copy/paste moet dan gewoon 1 op 1 dezelfde layout hebben, maar dan zonder de xml achtige troep (nofi) die Word erbij prakt. het komt ook vaak voor dat ze maar een abstract van een document nodig hebben, of wat dan ook.

Het hele document + opmaak in zo'n online editor maken schijnt dus nogal not-done te zijn helaas.

oh, en waarom P-tags converteren naar DIV ?geen idee ; default code , works fine :X

Acties:
  • 0 Henk 'm!

  • LoBbY_1
  • Registratie: Juli 2002
  • Laatst online: 17-09 20:43
:) Ik ga gewoon beide oplossingen proberen en kies dan gewoon de beste! bedankt !

Een echte golver is nooit uitgeput

Pagina: 1