AW: AW: Word COM Object

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Ok Ron, let's see:

Do you:
a) create a HTML document and rely on your users M$ Word being able to read 
and interpret it or
b) create a HTML doc, save and convert it to .doc on the server, finally 
presenting this .doc to your users?

Case a): your quite busted, because besides tg's brilliant solution the 
history of M$ Words understanding
of HTML is one of errors and really bad interpretation. So you won't ever 
know which version your user has
and so you cannot be sure what s/he will see.

So i'd consider it better to convert on the server, serving the .doc. This 
way you are sure about the final output.

Said this, you might just insert ||pagebreak|| or anything else not 
incidentally valid text into your HTML where a page
break should occur. Then, while converting on the server via COM, before 
$word->Document[n]->SaveAs(...) insert the
following:

// Parameters:
// 1st: Match what
// 2nd: Case sensitive ?
// 3rd: Whole word only ? ( False -> there need not be word breaking chars 
around a match)
// 4th: Wildcards ? (has to be true to let ^m be interpreted as a 
pagebreak)
// 5th: Match soundslike ? (special: doesn't go with Wildcards = true)
// 6th: Match all wordforms ? (special: doesn't go with Wildcards = true)
// 7th: Forward ?
// 8th: Wrap ? (we go thru doc just once)
// 9th: Format ? (Is 1st or 10th Parm a formatting special char like 
paragraph, tab, ... ?)
// 10th: Replace with: This is caret and small 'a' followed by caret and 
small 'm', the special formatting placeholder for a page break
// 11th: How many times ?

$word->Selection->Find->ClearFormatting();
$word->Selection->Find->Execute('||pagebreak||', False, False, True, False, 
False, True, wdFindStop, True, '^a^m', wdReplaceAll);

Note ^a^m : These are four letters, the carets standing on their own. Being 
picky, this is a new paragraph followed by a pagebreak.
But this is necessary because only automatic pagebreaks may occur within a 
paragraph. A forced pagebreak has to be preceeded
by the end-of-paragraph.

Note || as delimiters: One could be tempted to create a tag <pagebreak /> 
or the like (Should be ignored by any HTML processor not
knowing what it's for. But not so M$ Word: Its converters, at least some, 
consider the text not valid HTML,
- suppressing the tag (correctly, so far) and
- preventing Word to store it as genuine .doc (it will be saved as plain 
text, showing the HTML tags even when told to be stored as .doc)

HTH
--
Sven

> -----Ursprüngliche Nachricht-----
> Von:	tg-php@xxxxxxxxxxxxxxxxxxxxxx [SMTP:tg-php@xxxxxxxxxxxxxxxxxxxxxx]
> Gesendet am:	Freitag, 7. Januar 2005 15:51
> An:	php-windows@xxxxxxxxxxxxx
> Cc:	Ron.Herhuth@xxxxxxxxxxxxxxxxx
> Betreff:	RE: AW:  Word COM Object
>
> Creating a new document in Word, inserting Page Breaks then saving it as 
a web page revealed that Word seems to use CSS tags to show the line breaks 
in HTML. The only odditiy I see is that when I load the HTML back into 
Word, mine is still set to "View -> Web Page Layout" or something (Word 
2003) which doesn't show the page breaks (since you don't have page breaks 
in HTML) but if you set it to "View -> Normal" the page breaks are in 
there.
>
> Anyway, generating HTML like the following should give you page breaks 
when loaded into Word:
>
> <html>
>
> <head>
> <meta http-equiv=Content-Type content="text/html; charset=windows-1252">
> <meta name=Generator content="Microsoft Word 11 (filtered)">
> <title>Test 1</title>
> <style>
> <!--
>  /* Style Definitions */
>  p.MsoNormal, li.MsoNormal, div.MsoNormal
> ~{margin:0in;
> ~margin-bottom:.0001pt;
> ~font-size:12.0pt;
> ~font-family:"Times New Roman";}
> @page Section1
> ~{size:8.5in 11.0in;
> ~margin:1.0in 1.25in 1.0in 1.25in;}
> div.Section1
> ~{page:Section1;}
> -->
> </style>
> </head>
> <body lang=EN-US>
>
> <div class=Section1>
>
> <p class=MsoNormal>Test 1</p>
>
> <span style='font-size:12.0pt;font-family:"Times New Roman"'><br 
clear=all
> style='page-break-before:always'>
> </span>
>
> <p class=MsoNormal>Test 2</p>
>
> <span style='font-size:12.0pt;font-family:"Times New Roman"'><br 
clear=all
> style='page-break-before:always'>
> </span>
>
> <p class=MsoNormal>Test 3</p>
>
> </div>
>
> </body>
>
> </html>
>
>
> Really you probably just need this as the page break:
>
> <br clear=all style='page-break-before:always'>
>
> Not sure what "clear=all" does, but the "page-break-before" is standard 
CSS (CSS2 I believe) that's telling it to insert the page break before the 
<BR> tag (right? I think that's right).
>
> Maybe that helps.. if not, post again   "Ask again later" - Magic 8 Ball 
 :)
>
> -TG
>
>
> = = = Original message = = =
>
> Thank you for reply.  I figured out how to do that but now my issue is
> that since my styling is all done in HTML...I'm trying to bring over the
> HTML for each person's BIO, followed by a page break then the next
> person's BIO followed by a page break...and so on...
>
> The obvious problem is that if I use the Word COM object to insert the
> HTML...the HTML isnt parsed and all I get is the HTML source code...but
> the page breaks work great.  If I save the file first as HTML then open 
it
> using the Word COM object then save it as a doc, it parses 
correctly...but
> since there is no HTML page break function...all of the bios run one 
after
> the other, when what I really need is each Bio starting on a new page.
>
> This is killing me!
> Ron
>
> >From: Sven Schnitzke
> >To: ''
> >Sent: 01/07/2005 8:15 AM
> >Hi,
> >sorry for accidentally sending private mail first ! Now to  the  list:
> >
> >to insert a pagebreak just leave out the parameter entirely. It's
> default:
> >
> >~$word->Selection->InsertBreak();
> >
> >but for clarity you may want to specify it, so do it the positional way
> (it's the 1st one):
> >
> >~$word->Selection->InsertBreak(wdPageBreak);
> >
> >Named parms don't seem to be supported by PHP COM.
> >
> >HTH
> >--
> >Sven
> >
> >> -----Urspr~ngliche Nachricht-----
> >> Von:~Ron.Herhuth@xxxxxxxxxxxxxxxxx 
[SMTP:Ron.Herhuth@xxxxxxxxxxxxxxxxx]
> >> Gesendet am:~Mittwoch, 5. Januar 2005 18:55
> >> An:~php-windows@xxxxxxxxxxxxx
> >> Betreff:~ Word COM Object
> >>
> >>
> >> I have successfully made a PHP script that takes dynamically generated
> >> HTML and creates a Word Doc then saves it to the server and creates a
> link
> >> to itself.  This is fine and dandy but now I have to do a multipage
> >> document using several dynamically generated pages...this isnt a
> problem
> >> BUT I need to put a page break following each dynamically generated
> page.
> >> Is there some MS WORD command that I could embed in the HTML I am
> >> generating that will cause a page break?
> >>
> >> This seemingly simple task is killing me.
> >>
> >> Ron
> >>
> >>
> >>
> >>
> >>
> >>
> >
> >--
> >PHP Windows Mailing List (http://www.php.net/)
> >To unsubscribe, visit: http://www.php.net/unsub.php
> >
> >
> >
>
>
> ___________________________________________________________
> Sent by ePrompter, the premier email notification software.
> Free download at http://www.ePrompter.com.
>
> --
> PHP Windows Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
> 

-- 
PHP Windows Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[Index of Archives]     [PHP Home]     [PHP Users]     [PHP Database Programming]     [PHP Install]     [Kernel Newbies]     [Yosemite Forum]     [PHP Books]

  Powered by Linux