You are viewing a plain text version of this content. The canonical link for it is here.
Posted to odf-dev@incubator.apache.org by "Joseph D. Wagner" <jo...@josephdwagner.info> on 2018/01/09 02:32:18 UTC

Trouble with Footer Font Size - Adding Page X of Y to Footer

I am trying to add a "Page X of Y" footer to the bottom of a text 
document.  I got everything working *EXCEPT* the font size.

I wrote this code:

         // Adds Page X of Y to the footer
         Font fontsmaller = new Font("Arial", 
StyleTypeDefinitions.FontStyle.REGULAR, 8);
         Footer footer = doc.getFooter();
         Section footersection = footer.appendSection("Page Numbers");
         Paragraph footerparagraph = 
footersection.addParagraph("Page\u00A0");
         footerparagraph.setFont(fontsmaller); // Doesn't work here either
Fields.createCurrentPageNumberField(footerparagraph.getOdfElement());
         footerparagraph.appendTextContent("\u00A0of\u00A0");
Fields.createPageCountField(footerparagraph.getOdfElement());
         footerparagraph.setFont(fontsmaller); // Doesn't work here either

It seems to work EXCEPT the part of changing the font size.  In Word, 
the font ends up being the default size of 12.  (Works as expected in 
LibreOffice.)

Interesting, counterexample.  It works when I set the font larger, like 
16, but it doesn't work when I set the font smaller, like 10 or 8.

I performed a diff comparison on the output form odftoolkit(-) and the 
output from Word(+).  It seems the key difference is lines like these in 
styles.xml:

-    <style:style style:family="paragraph" style:name="a2b0e5e">
-      <style:paragraph-properties fo:text-align="center" 
style:line-break="strict" style:punctuation-wrap="hanging" 
style:text-autospace="ideograph-alpha" style:writing-mode="page"/>
-      <style:text-properties fo:color="#000000" fo:country="US" 
fo:font-size="10.0pt" fo:language="en" style:font-name="Courier New" 
style:font-name-asian="Lucida Sans Unicode" 
style:font-name-complex="Tahoma"
style:font-size-asian="12pt" style:font-size-complex="12pt"/>
+    <style:style style:name="P2" style:parent-style-name="Normal" 
style:family="paragraph">
+      <style:paragraph-properties fo:text-align="center"/>
+      <style:text-properties style:font-name="Courier New"/>
+    </style:style>
+    <style:style style:name="T3" 
style:parent-style-name="DefaultParagraphFont" style:family="text">
+      <style:text-properties style:font-name="Courier New" 
fo:color="#FF0000" fo:font-size="8pt" style:font-size-asian="8pt" 
style:font-size-complex="8pt"/>
+    </style:style>
+    <style:style style:name="T4" 
style:parent-style-name="DefaultParagraphFont" style:family="text">
+      <style:text-properties style:font-name="Courier New" 
fo:color="#FF0000" fo:font-size="8pt" style:font-size-asian="8pt" 
style:font-size-complex="8pt"/>
+    </style:style>
+    <style:style style:name="T5" 
style:parent-style-name="DefaultParagraphFont" style:family="text">
+      <style:text-properties style:font-name="Courier New" 
fo:color="#FF0000" fo:font-size="8pt" style:font-size-asian="8pt" 
style:font-size-complex="8pt"/>
+    </style:style>
+    <style:style style:name="T6" 
style:parent-style-name="DefaultParagraphFont" style:family="text">
+      <style:text-properties style:font-name="Courier New" 
fo:color="#FF0000" fo:font-size="8pt" style:font-size-asian="8pt" 
style:font-size-complex="8pt"/>
      </style:style>


-      <style:footer>
-        <text:section text:display="true" text:name="Page Numbers" 
text:style-name="aec74e3">
-          <text:p 
text:style-name="a32e835">Page <text:span><text:page-number 
style:num-format="" 
text:select-page="current"/> of </text:span><text:span><text:page-count 
style:num-format=""/></text:span></text:p>
-        </text:section>
-      </style:footer>

+      <style:footer>
+        <text:p text:style-name="Normal">
+          <text:span text:style-name="T3">Page </text:span>
+          <text:span text:style-name="T4">
+            <text:page-number text:fixed="false">1</text:page-number>
+          </text:span>
+          <text:span text:style-name="T5"> of </text:span>
+          <text:span text:style-name="T6">
+            <text:page-count>14</text:page-count>
+          </text:span>
+        </text:p>
+      </style:footer>

Unfortunately, I don't know what code I should write to force odftoolkit 
to generate appropriate styles and text properties fields.

Could someone please help me figure this one out?

Thanks.

Joseph D. Wagner


Re: Trouble with Footer Font Size - Adding Page X of Y to Footer

Posted by Svante Schubert <sv...@gmail.com>.
There should be issues for the mentioned problems, where further details on
the problems and their patches can be added to:

https://issues.apache.org/jira/browse/ODFTOOLKIT-469 - Setting Local
results to invalid ODF documents
https://issues.apache.org/jira/browse/ODFTOOLKIT-470 - Font size change
does not work in Microsoft Office 2016

Hope you are at the beginning of a great week!
Svante
ᐧ

2018-01-14 11:49 GMT+01:00 Svante Schubert <sv...@gmail.com>:

> Hello Joseph,
>
> The problem is an incompatibility of Microsoft Office, which needs a
> different handling and in addition a missing feature/bug in the Simple API.
>
> Let me tell you what I did:
> As you are working with the Simple API, I added a regression test of your
> scenario to this project.
>
>    1. Therefore I cloned myself a fresh copy of the project, see
>    http://incubator.apache.org/odftoolkit/source.html
>    <http://incubator.apache.org/odftoolkit/source.html>
>    2. Copied your test files into the (typical Maven) test file folder of
>    the project: simple\src\test\resources (I actually only need your
>    given text file)
>    3. Copied your source code at the end of a test class of Simple API,
>    i.e. I have used org.odftoolkit.simple.text.FooterTest.java within the
>    Simple API
>       - Exchanged you main function with a JUnit test function
>       - Exchanged the input and output files names coming from the main
>       function as arguments with fixed names
>       - Exchanged the access to the files from simple string to access
>       the test files folder path (it was aside the command line call and is now
>       at runtime  "simple\target\test-classes") with
>       IN => ResourceUtilities.getAbsolutePath(TEXT_DATA_INPUT_FILE_NAME)
>       OUT => doc.save(ResourceUtilities.newTestOutputFile(ODT_DATA_
>       OUTPUT_FILE_NAME));
>
> I have validated your given output file and the new output file of the
> test and both only showed me the problems having text property of language
> and locale within a table and table-row default styles. The header/footer
> is now correct.
> I have saved the ODT document right after creation before applying your
> test changes and the local problem does not exist, so the issue is within
> the test.
>
> Unfortunately, when manually fixing it, Word still does not show the
> correct font size. I have tried several things to work on the Microsoft
> Office bug:
>
>    1. Removed sections
>    2. Moved the text properties from the paragraphs to an own text style
>    using spans
>    3. ..
>
> Then I spotted accidentally the problem. It is possible to set different
> font attributes for three types of fonts: Western, CJK (Chinese Japanese
> and Korean) and complex (e.g. Arabian):
>  style:font-size-asian="12pt" style:font-size-complex="12pt" were still
> using a different size, which results into an error in MS Office, but works
> fine with Microsoft.
> see http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part1.
> html#property-style_font-size-complex
>
> Fixing those manually solved the problem.
> I was deliberating if changing one font property, shall change the
> property of all three language groups, but it would remove ODF
> functionality.
> Instead, to be able to be compatible with Microsoft Office, I have
> extended the test to add the same new font size for a South Korean and
> Saudi Arabian Java Locale.
>
> Well, what shall I say? It does not work :/ But now it comes down to debug
> Simple API code, which is as alien source code to me as to you.
> As mentioned before I am focused on the ODFDOM project with its source
> code generation within the ODF Toolkit.
> So you - or anyone interested in helping you - should take over from here,
> as I have to continue on projects, bringing income for my family :/
> To make it easy for anyone to continue, I have simply pushed the test to
> the SVN trunk. So simply pull a fresh copy from the project (see URL above)
> and you may find the test method at the end of org.odftoolkit.simple.text.
> FooterTest
>
> As proof I have attached a document working in MS Office resulting from
> the test document, with only manually (via JEdit) fixed font size
> properties, e.g. style:font-size-asian="8.0pt" style:font-size-complex="8.0pt"
> (quite at the end, the last page of the text file)
>
> Good luck, Joseph!
> Svante
>
>
>
>
>
>
>
> ᐧ
>
> 2018-01-14 3:28 GMT+01:00 Joseph D. Wagner <jo...@josephdwagner.info>:
>
>> The first document, attached, is created with the SimpleAPI.  I
>> rearranged the header and footer code to put them in the "proper" order as
>> you previously suggested.  However, it had no impact.
>>
>> If you look at the .odt file in Word, you'll notice the only line that
>> has the Font Size correctly set is the first line of the main body.  All
>> other fonts are set to size 12.  I think this has something to do with the
>> addParagraph function and setFont on the Paragraph class.  Below is my code
>> for my entire program (relatively short).
>>
>> Here are some couter-examples of it working:
>>
>> 1) You'll notice the first line uses appendTextContent, and that one set
>> the Font Size correctly.  However, all subsequent calls using addParagraph
>> do not set the Font Size correctly, at least not in Word.
>>
>> 2) If I put the footer inside of a table, like on your website's
>> examples, it will set the Font Size correctly then.  (However, I couldn't
>> figure out how to put the PageNumber and PageCount variables inside a cell.)
>>
>> 3) If I set the font size LARGER than 12, like 16, it will set the Font
>> Size correctly.
>>
>> I think this is the root of the problem.  If we figure out why Word isn't
>> recognizing the Font Size when setFont is called on a Paragraph and fix it,
>> I think that will fix it in the header, footer, and main body.
>>
>> One more note: I would have thought that TextDocument.save() would
>> correctly handle the ordering of elements within a document, like header
>> before footer.  If it doesn't, I would like to suggest making that happen
>> as a future feature.  The SimpleAPI is much less useful if developers not
>> familiar with the ODF specs have to know proper ordering.  HOWEVER,
>> something makes me think this isn't the real problem.
>>
>> Thanks again for your help.
>>
>>     public static void main(String[] args) throws Exception {
>>         // Verifies two files were passed to the command line arguments
>>         if(args.length != 2) {
>>             System.err.println("usage: plaintext2odt infile outfile");
>>             System.exit(1);
>>         }
>>
>>         // Opens infile
>>         BufferedReader infile = new BufferedReader(new
>> FileReader(args[0]));
>>
>>         // Creates new doc and sets defaults
>>         Locale locale = new Locale("en", "US");
>>         Font font = new Font("Courier New", StyleTypeDefinitions.FontStyle.REGULAR,
>> 10, locale);
>>         TextDocument doc = TextDocument.newTextDocument();
>>         MasterPage master = MasterPage.getOrCreateMasterPage(doc,
>> "Standard");
>>         master.setPageHeight(279.4);
>>         master.setPageWidth(215.9);
>>         master.setMargins(19.05, 19.05, 19.05, 19.05); // 19.05 mm = 0.75
>> in
>>         doc.setPageColumns(2, 0.635); // 0.635 cm = 0.25 in
>>         doc.setLocale(locale);
>>
>>         // Adds header
>>         Header header = doc.getHeader();
>>         Section headersection = header.appendSection("Title");
>>         Paragraph headerparagraph = headersection.addParagraph(null);
>>         headerparagraph.setFont(font);
>>         headerparagraph.appendTextContent(infile.readLine());
>>         headerparagraph.setHorizontalAlignment(StyleTypeDefinitions.
>> HorizontalAlignmentType.CENTER);
>>
>>         // Adds Page X of Y to the footer
>>         Font fontsmaller = new Font("Courier New",
>> StyleTypeDefinitions.FontStyle.ITALIC, 8, Color.RED, locale);
>>         Footer footer = doc.getFooter();
>>         Section footersection = footer.appendSection("Page Numbers");
>>         Paragraph footerparagraph = footersection.addParagraph("Pa
>> ge\u00A0");
>>         Fields.createCurrentPageNumberField(footerparagraph.
>> getOdfElement());
>>         footerparagraph.appendTextContent("\u00A0of\u00A0");
>>         Fields.createPageCountField(footerparagraph.getOdfElement());
>>         footerparagraph.setFont(fontsmaller); // Doesn't work here
>>         footerparagraph.setHorizontalAlignment(StyleTypeDefinitions.
>> HorizontalAlignmentType.CENTER);
>>
>>         // Special handling for first line
>>         Paragraph p = doc.getParagraphByIndex(0, false);
>>         p.setFont(font);
>>         infile.readLine();
>>         p.appendTextContent(infile.readLine());
>>
>>         // Loops over all other lines
>>         String inline = new String();
>>         while ((inline = infile.readLine()) != null) {
>>             // p.appendTextContent("\r\n" + inline.replaceAll("\n",
>> "\r\n")); // Works, because it doesn't use addParagraph
>>             p = doc.addParagraph(inline.replaceAll("\n", "\r\n"));
>>             p.setFont(font); // Does not work, because it uses
>> addParagraph
>>         }
>>         infile.close();
>>
>>         // Saves outfile
>>         FileOutputStream outfile = new FileOutputStream(args[1]);
>>         doc.save(outfile);
>>     }
>>
>> On 01/13/2018 09:29 AM, Svante Schubert wrote:
>>
>> Both documents created with SimpleAPI? I might be able to take a look at
>> it tomorrow. Are you able to add a test creating the erraneous document?
>> Just copy from the existing tests.
>>
>> Cheers
>> Svante
>>
>> Am 13.01.2018 13:26 schrieb "Joseph D. Wagner" <jo...@josephdwagner.info>:
>>
>>> Thanks. The document was created with the Simple API. So what are the
>>> implications? Bug in Simple API, ODFDOM, or the java I wrote that called
>>> the Simple API?
>>>
>>> Joseph D. Wagner
>>> --
>>> Sent from my Android device.
>>>
>>> ------------------------------
>>> *From:* Svante Schubert <sv...@gmail.com>
>>> *Sent:* January 13, 2018 2:37:21 AM PST
>>> *To:* "Joseph D. Wagner" <jo...@josephdwagner.info>
>>> *Cc:* odf-dev@incubator.apache.org
>>> *Subject:* Re: Trouble with Footer Font Size - Adding Page X of Y to
>>> Footer
>>>
>>> Hello Joseph,
>>>
>>> first step is usually to check for validation problems.
>>> There is a free online validator from The Document Foundation, which is
>>> using our Apache ODF Toolkit project (incubating) Validator with their own
>>> logo (which is fine, as they are paying the server bill).
>>>
>>> You 'broken' document - you had called "works in libreoffice - not in
>>> word.odt" document is also invalid at various points, (the working one has
>>> 'only' the common version attribute problem, which is a known and long
>>> story).
>>>
>>> The broken document shows the following errors
>>> works in libreoffice - not in word.odt/styles.xml[2,3901]: Error: element
>>> "style:text-properties" was found where no element may occur
>>> ties fo:country="US" fo:language="en"/></style:default-style><style:default-sty
>>> ----^
>>> works in libreoffice - not in word.odt/styles.xml[2,4079]: Error: element
>>> "style:text-properties" was found where no element may occur
>>> ties fo:country="US" fo:language="en"/></style:default-style><style:style
>>> style ----^
>>> works in libreoffice - not in word.odt/styles.xml[2,90333]: Error: tag
>>> name "style:header" is not allowed. Possible tag names are:
>>> <a>,<animate>,<animateColor>,<animateMotion>,<animateTransfo
>>> rm>,<audio>,<caption>,<circle>,<command>,<connector>,<contro
>>> l>,<custom-shape>,<ellipse>,<footer-left>,<forms>,<frame>,<
>>> g>,<iterate>,<layer-set>,<line>,<measure>,<notes>,<page-
>>> thumbnail>,<par>,<path>,<polygon>,<polyline>,<rect>,<re
>>> gular-polygon>,<scene>,<seq>,<set>,<transitionFilter>
>>> t:section></style:footer><style:header><text:section
>>> text:display="true" text:n ----^ works in libreoffice - not in
>>> word.odt/styles.xml: Info: 3 errors, no warnings
>>>
>>>
>>> As this is not very helpful as everything is in a single 2nd line, I
>>> have loaded the document into JEdit opening the styles.xml using the JEdit
>>> archive extension and doing an indent using the Jedit XML extension and
>>> saving the new file into the ZIP with Jedit back again.
>>>
>>> Now it is easier to find within a text editor:
>>> works in libreoffice - not in word.odt/styles.xml[25,61]: Error: element
>>> "style:text-properties" was found where no element may occur
>>> <style:text-properties fo:country="US" fo:language="en"/> ----^ works
>>> in libreoffice - not in word.odt/styles.xml[29,61]: Error: element
>>> "style:text-properties" was found where no element may occur
>>> <style:text-properties fo:country="US" fo:language="en"/> ----^ works
>>> in libreoffice - not in word.odt/styles.xml[1082,18]: Error: tag name
>>> "style:header" is not allowed. Possible tag names are:
>>> <a>,<animate>,<animateColor>,<animateMotion>,<animateTransfo
>>> rm>,<audio>,<caption>,<circle>,<command>,<connector>,<contro
>>> l>,<custom-shape>,<ellipse>,<footer-left>,<forms>,<frame>,<
>>> g>,<iterate>,<layer-set>,<line>,<measure>,<notes>,<page-
>>> thumbnail>,<par>,<path>,<polygon>,<polyline>,<rect>,<re
>>> gular-polygon>,<scene>,<seq>,<set>,<transitionFilter>
>>>
>>> The first two problem is only about text properties within a table and
>>> paragraph style, where they are not allowed. What application created this
>>> document? We should file an issue. :)
>>> To check if kind of problem, you may look into the specification
>>> <http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part1.html>
>>> or the ODF XML grammar
>>> <http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-schema.rng>
>>> .
>>> You may find all required specification files among
>>> http://docs.oasis-open.org/office/v1.2/os/
>>>
>>> The third is the problem interesting to us, see
>>> http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-
>>> os-part1.html#element-style_master-page
>>> Unfortunately, the spec does not show the order of elements, therefore
>>> you need to look into the ODF XML RelaxNG grammar.
>>> Within http://docs.oasis-open.org/office/v1.2/os/OpenDocumen
>>> t-v1.2-os-schema.rng
>>> you search for the element name (with ending quotation as there are some
>>> longer names with this as prefix) style:master-page" and find:
>>> <define name="style-master-page">
>>> <element name="style:master-page">
>>> <ref name="style-master-page-attlist"/>
>>> <optional>
>>> <ref name="style-header"/>
>>> <optional>
>>> <ref name="style-header-left"/>
>>> </optional>
>>> </optional>
>>> <optional>
>>> <ref name="style-footer"/>
>>> <optional>
>>> <ref name="style-footer-left"/>
>>> </optional>
>>> </optional>
>>> Voila, first the header than the footer in strict order. See
>>> relaxng.org/tutorial.html
>>> In the file is it the other way around.
>>>
>>> Switch the elements and you may succeed! :)
>>>
>>> Have a nice week-end,
>>> Svante
>>>
>>>
>>>
>>>
>>> ᐧ
>>>
>>> 2018-01-13 3:49 GMT+01:00 Joseph D. Wagner <jo...@josephdwagner.info>:
>>>
>>>> Thank you for your generous offer to help.
>>>>
>>>> The "works in libreoffice - not in word" file is the direct output from
>>>> your library.
>>>>
>>>> The "works in both libreoffice and word" file is the output of when I
>>>> take that file, fix it in word, and then save it again.  (Oddly, word does
>>>> something with the footer margin, and reopening this file in libreoffice
>>>> reveals that the last line of the main area is cutoff by the footer.
>>>> However, I'm hoping to ignore this.)
>>>>
>>>> I am using Word 2016.
>>>>
>>>> Thanks for all your time and effort.
>>>>
>>>> Joseph D. Wagner
>>>>
>>>>
>>>> -----Original Message-----
>>>> From: Svante Schubert [mailto:svante.schubert@gmail.com]
>>>> Sent: Tuesday, January 9, 2018 1:50 AM
>>>> To: odf-dev@incubator.apache.org
>>>> Subject: Re: Trouble with Footer Font Size - Adding Page X of Y to
>>>> Footer
>>>>
>>>> Hello Joeseph,
>>>>
>>>> the first interesting thing to mention from ODF perspective is that the
>>>> text of a footer and header is part of the page style within the styles.xml.
>>>> Therefore any automatic styles being used for header and footer are not
>>>> within the content.xml, but styles.xml - and only those.
>>>> Let us not discuss the pro and con of this design, let me simply state,
>>>> that I am not a fan of it of the overall result :)
>>>>
>>>> In your example, it seems that the LibreOffice styles are not
>>>> connecting to each other, ie. a32e835 at the paragraph and a2b0e5e at the
>>>> paragraph style should be the same string, but this might be as well a copy
>>>> paste error from different files.
>>>> To alter the ODF styles, you might want to go a level deeper into the
>>>> ODFDOM project <http://incubator.apache.org/o
>>>> dftoolkit/odfdom/ProjectOverview.html>.
>>>> Again take a look at the regression tests, where to find the desired
>>>> elements.
>>>>
>>>> In general, every XML element has a generated DOM class with the prefix
>>>> local name and either Attribute or Element suffix, for instance,
>>>> TextSpanElement class.
>>>>
>>>> Hope it helps!
>>>>
>>>> Cheers,
>>>> Svante
>>>> ᐧ
>>>>
>>>> 2018-01-09 3:32 GMT+01:00 Joseph D. Wagner <jo...@josephdwagner.info>:
>>>>
>>>> > I am trying to add a "Page X of Y" footer to the bottom of a text
>>>> > document.  I got everything working *EXCEPT* the font size.
>>>> >
>>>> > I wrote this code:
>>>> >
>>>> >         // Adds Page X of Y to the footer
>>>> >         Font fontsmaller = new Font("Arial",
>>>> > StyleTypeDefinitions.FontStyle.REGULAR,
>>>> > 8);
>>>> >         Footer footer = doc.getFooter();
>>>> >         Section footersection = footer.appendSection("Page Numbers");
>>>> >         Paragraph footerparagraph = footersection.addParagraph("Pa
>>>> > ge\u00A0");
>>>> >         footerparagraph.setFont(fontsmaller); // Doesn't work here
>>>> > either Fields.createCurrentPageNumberField(footerparagraph.getOdfEl
>>>> ement());
>>>> >         footerparagraph.appendTextContent("\u00A0of\u00A0");
>>>> > Fields.createPageCountField(footerparagraph.getOdfElement());
>>>> >         footerparagraph.setFont(fontsmaller); // Doesn't work here
>>>> > either
>>>> >
>>>> > It seems to work EXCEPT the part of changing the font size.  In Word,
>>>> > the font ends up being the default size of 12.  (Works as expected in
>>>> > LibreOffice.)
>>>> >
>>>> > Interesting, counterexample.  It works when I set the font larger,
>>>> > like 16, but it doesn't work when I set the font smaller, like 10 or
>>>> 8.
>>>> >
>>>> > I performed a diff comparison on the output form odftoolkit(-) and the
>>>> > output from Word(+).  It seems the key difference is lines like these
>>>> > in
>>>> > styles.xml:
>>>> >
>>>> > -    <style:style style:family="paragraph" style:name="a2b0e5e">
>>>> > -      <style:paragraph-properties fo:text-align="center"
>>>> > style:line-break="strict" style:punctuation-wrap="hanging"
>>>> > style:text-autospace="ideograph-alpha" style:writing-mode="page"/>
>>>> > -      <style:text-properties fo:color="#000000" fo:country="US"
>>>> > fo:font-size="10.0pt" fo:language="en" style:font-name="Courier New"
>>>> > style:font-name-asian="Lucida Sans Unicode"
>>>> > style:font-name-complex="Tahom a"
>>>> > style:font-size-asian="12pt" style:font-size-complex="12pt"/>
>>>> > +    <style:style style:name="P2" style:parent-style-name="Normal"
>>>> > style:family="paragraph">
>>>> > +      <style:paragraph-properties fo:text-align="center"/>
>>>> > +      <style:text-properties style:font-name="Courier New"/>
>>>> > +    </style:style>
>>>> > +    <style:style style:name="T3" style:parent-style-name="Defau
>>>> ltParagraphFont"
>>>> > style:family="text">
>>>> > +      <style:text-properties style:font-name="Courier New"
>>>> > fo:color="#FF0000" fo:font-size="8pt" style:font-size-asian="8pt"
>>>> > style:font-size-complex="8pt"/>
>>>> > +    </style:style>
>>>> > +    <style:style style:name="T4" style:parent-style-name="Defau
>>>> ltParagraphFont"
>>>> > style:family="text">
>>>> > +      <style:text-properties style:font-name="Courier New"
>>>> > fo:color="#FF0000" fo:font-size="8pt" style:font-size-asian="8pt"
>>>> > style:font-size-complex="8pt"/>
>>>> > +    </style:style>
>>>> > +    <style:style style:name="T5" style:parent-style-name="Defau
>>>> ltParagraphFont"
>>>> > style:family="text">
>>>> > +      <style:text-properties style:font-name="Courier New"
>>>> > fo:color="#FF0000" fo:font-size="8pt" style:font-size-asian="8pt"
>>>> > style:font-size-complex="8pt"/>
>>>> > +    </style:style>
>>>> > +    <style:style style:name="T6" style:parent-style-name="Defau
>>>> ltParagraphFont"
>>>> > style:family="text">
>>>> > +      <style:text-properties style:font-name="Courier New"
>>>> > fo:color="#FF0000" fo:font-size="8pt" style:font-size-asian="8pt"
>>>> > style:font-size-complex="8pt"/>
>>>> >      </style:style>
>>>> >
>>>> >
>>>> > -      <style:footer>
>>>> > -        <text:section text:display="true" text:name="Page Numbers"
>>>> > text:style-name="aec74e3">
>>>> > -          <text:p text:style-name="a32e835">Page
>>>> <text:span><text:page-number
>>>> > style:num-format="" text:select-page="current"/> o f
>>>> > </text:span><text:span><text:page-count
>>>> style:num-format=""/></text:sp
>>>> > an></text:p>
>>>> > -        </text:section>
>>>> > -      </style:footer>
>>>> >
>>>> > +      <style:footer>
>>>> > +        <text:p text:style-name="Normal">
>>>> > +          <text:span text:style-name="T3">Page </text:span>
>>>> > +          <text:span text:style-name="T4">
>>>> > +            <text:page-number text:fixed="false">1</text:pag
>>>> e-number>
>>>> > +          </text:span>
>>>> > +          <text:span text:style-name="T5"> of </text:span>
>>>> > +          <text:span text:style-name="T6">
>>>> > +            <text:page-count>14</text:page-count>
>>>> > +          </text:span>
>>>> > +        </text:p>
>>>> > +      </style:footer>
>>>> >
>>>> > Unfortunately, I don't know what code I should write to force
>>>> > odftoolkit to generate appropriate styles and text properties fields.
>>>> >
>>>> > Could someone please help me figure this one out?
>>>> >
>>>> > Thanks.
>>>> >
>>>> > Joseph D. Wagner
>>>> >
>>>> >
>>>>
>>>
>>>
>>
>

Re: Trouble with Footer Font Size - Adding Page X of Y to Footer

Posted by Svante Schubert <sv...@gmail.com>.
Hello Joseph,

The problem is an incompatibility of Microsoft Office, which needs a
different handling and in addition a missing feature/bug in the Simple API.

Let me tell you what I did:
As you are working with the Simple API, I added a regression test of your
scenario to this project.

   1. Therefore I cloned myself a fresh copy of the project, see
   http://incubator.apache.org/odftoolkit/source.html
   <http://incubator.apache.org/odftoolkit/source.html>
   2. Copied your test files into the (typical Maven) test file folder of
   the project: simple\src\test\resources (I actually only need your given
   text file)
   3. Copied your source code at the end of a test class of Simple API,
   i.e. I have used org.odftoolkit.simple.text.FooterTest.java within the
   Simple API
      - Exchanged you main function with a JUnit test function
      - Exchanged the input and output files names coming from the main
      function as arguments with fixed names
      - Exchanged the access to the files from simple string to access the
      test files folder path (it was aside the command line call and is now at
      runtime  "simple\target\test-classes") with
      IN => ResourceUtilities.getAbsolutePath(TEXT_DATA_INPUT_FILE_NAME)
      OUT
      => doc.save(ResourceUtilities.newTestOutputFile(ODT_DATA_OUTPUT_FILE_NAME));

I have validated your given output file and the new output file of the test
and both only showed me the problems having text property of language and
locale within a table and table-row default styles. The header/footer is
now correct.
I have saved the ODT document right after creation before applying your
test changes and the local problem does not exist, so the issue is within
the test.

Unfortunately, when manually fixing it, Word still does not show the
correct font size. I have tried several things to work on the Microsoft
Office bug:

   1. Removed sections
   2. Moved the text properties from the paragraphs to an own text style
   using spans
   3. ..

Then I spotted accidentally the problem. It is possible to set different
font attributes for three types of fonts: Western, CJK (Chinese Japanese
and Korean) and complex (e.g. Arabian):
 style:font-size-asian="12pt" style:font-size-complex="12pt" were still
using a different size, which results into an error in MS Office, but works
fine with Microsoft.
see
http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part1.html#property-style_font-size-complex

Fixing those manually solved the problem.
I was deliberating if changing one font property, shall change the property
of all three language groups, but it would remove ODF functionality.
Instead, to be able to be compatible with Microsoft Office, I have extended
the test to add the same new font size for a South Korean and Saudi Arabian
Java Locale.

Well, what shall I say? It does not work :/ But now it comes down to debug
Simple API code, which is as alien source code to me as to you.
As mentioned before I am focused on the ODFDOM project with its source code
generation within the ODF Toolkit.
So you - or anyone interested in helping you - should take over from here,
as I have to continue on projects, bringing income for my family :/
To make it easy for anyone to continue, I have simply pushed the test to
the SVN trunk. So simply pull a fresh copy from the project (see URL above)
and you may find the test method at the end of
org.odftoolkit.simple.text.FooterTest

As proof I have attached a document working in MS Office resulting from the
test document, with only manually (via JEdit) fixed font size properties,
e.g. style:font-size-asian="8.0pt" style:font-size-complex="8.0pt" (quite
at the end, the last page of the text file)

Good luck, Joseph!
Svante







ᐧ

2018-01-14 3:28 GMT+01:00 Joseph D. Wagner <jo...@josephdwagner.info>:

> The first document, attached, is created with the SimpleAPI.  I rearranged
> the header and footer code to put them in the "proper" order as you
> previously suggested.  However, it had no impact.
>
> If you look at the .odt file in Word, you'll notice the only line that has
> the Font Size correctly set is the first line of the main body.  All other
> fonts are set to size 12.  I think this has something to do with the
> addParagraph function and setFont on the Paragraph class.  Below is my code
> for my entire program (relatively short).
>
> Here are some couter-examples of it working:
>
> 1) You'll notice the first line uses appendTextContent, and that one set
> the Font Size correctly.  However, all subsequent calls using addParagraph
> do not set the Font Size correctly, at least not in Word.
>
> 2) If I put the footer inside of a table, like on your website's examples,
> it will set the Font Size correctly then.  (However, I couldn't figure out
> how to put the PageNumber and PageCount variables inside a cell.)
>
> 3) If I set the font size LARGER than 12, like 16, it will set the Font
> Size correctly.
>
> I think this is the root of the problem.  If we figure out why Word isn't
> recognizing the Font Size when setFont is called on a Paragraph and fix it,
> I think that will fix it in the header, footer, and main body.
>
> One more note: I would have thought that TextDocument.save() would
> correctly handle the ordering of elements within a document, like header
> before footer.  If it doesn't, I would like to suggest making that happen
> as a future feature.  The SimpleAPI is much less useful if developers not
> familiar with the ODF specs have to know proper ordering.  HOWEVER,
> something makes me think this isn't the real problem.
>
> Thanks again for your help.
>
>     public static void main(String[] args) throws Exception {
>         // Verifies two files were passed to the command line arguments
>         if(args.length != 2) {
>             System.err.println("usage: plaintext2odt infile outfile");
>             System.exit(1);
>         }
>
>         // Opens infile
>         BufferedReader infile = new BufferedReader(new
> FileReader(args[0]));
>
>         // Creates new doc and sets defaults
>         Locale locale = new Locale("en", "US");
>         Font font = new Font("Courier New", StyleTypeDefinitions.FontStyle.REGULAR,
> 10, locale);
>         TextDocument doc = TextDocument.newTextDocument();
>         MasterPage master = MasterPage.getOrCreateMasterPage(doc,
> "Standard");
>         master.setPageHeight(279.4);
>         master.setPageWidth(215.9);
>         master.setMargins(19.05, 19.05, 19.05, 19.05); // 19.05 mm = 0.75
> in
>         doc.setPageColumns(2, 0.635); // 0.635 cm = 0.25 in
>         doc.setLocale(locale);
>
>         // Adds header
>         Header header = doc.getHeader();
>         Section headersection = header.appendSection("Title");
>         Paragraph headerparagraph = headersection.addParagraph(null);
>         headerparagraph.setFont(font);
>         headerparagraph.appendTextContent(infile.readLine());
>         headerparagraph.setHorizontalAlignment(StyleTypeDefinitions.
> HorizontalAlignmentType.CENTER);
>
>         // Adds Page X of Y to the footer
>         Font fontsmaller = new Font("Courier New", StyleTypeDefinitions.FontStyle.ITALIC,
> 8, Color.RED, locale);
>         Footer footer = doc.getFooter();
>         Section footersection = footer.appendSection("Page Numbers");
>         Paragraph footerparagraph = footersection.addParagraph("
> Page\u00A0");
>         Fields.createCurrentPageNumberField(footerparagraph.getOdfElement(
> ));
>         footerparagraph.appendTextContent("\u00A0of\u00A0");
>         Fields.createPageCountField(footerparagraph.getOdfElement());
>         footerparagraph.setFont(fontsmaller); // Doesn't work here
>         footerparagraph.setHorizontalAlignment(StyleTypeDefinitions.
> HorizontalAlignmentType.CENTER);
>
>         // Special handling for first line
>         Paragraph p = doc.getParagraphByIndex(0, false);
>         p.setFont(font);
>         infile.readLine();
>         p.appendTextContent(infile.readLine());
>
>         // Loops over all other lines
>         String inline = new String();
>         while ((inline = infile.readLine()) != null) {
>             // p.appendTextContent("\r\n" + inline.replaceAll("\n",
> "\r\n")); // Works, because it doesn't use addParagraph
>             p = doc.addParagraph(inline.replaceAll("\n", "\r\n"));
>             p.setFont(font); // Does not work, because it uses addParagraph
>         }
>         infile.close();
>
>         // Saves outfile
>         FileOutputStream outfile = new FileOutputStream(args[1]);
>         doc.save(outfile);
>     }
>
> On 01/13/2018 09:29 AM, Svante Schubert wrote:
>
> Both documents created with SimpleAPI? I might be able to take a look at
> it tomorrow. Are you able to add a test creating the erraneous document?
> Just copy from the existing tests.
>
> Cheers
> Svante
>
> Am 13.01.2018 13:26 schrieb "Joseph D. Wagner" <jo...@josephdwagner.info>:
>
>> Thanks. The document was created with the Simple API. So what are the
>> implications? Bug in Simple API, ODFDOM, or the java I wrote that called
>> the Simple API?
>>
>> Joseph D. Wagner
>> --
>> Sent from my Android device.
>>
>> ------------------------------
>> *From:* Svante Schubert <sv...@gmail.com>
>> *Sent:* January 13, 2018 2:37:21 AM PST
>> *To:* "Joseph D. Wagner" <jo...@josephdwagner.info>
>> *Cc:* odf-dev@incubator.apache.org
>> *Subject:* Re: Trouble with Footer Font Size - Adding Page X of Y to
>> Footer
>>
>> Hello Joseph,
>>
>> first step is usually to check for validation problems.
>> There is a free online validator from The Document Foundation, which is
>> using our Apache ODF Toolkit project (incubating) Validator with their own
>> logo (which is fine, as they are paying the server bill).
>>
>> You 'broken' document - you had called "works in libreoffice - not in
>> word.odt" document is also invalid at various points, (the working one has
>> 'only' the common version attribute problem, which is a known and long
>> story).
>>
>> The broken document shows the following errors
>> works in libreoffice - not in word.odt/styles.xml[2,3901]: Error: element
>> "style:text-properties" was found where no element may occur
>> ties fo:country="US" fo:language="en"/></style:default-style><style:default-sty
>> ----^
>> works in libreoffice - not in word.odt/styles.xml[2,4079]: Error: element
>> "style:text-properties" was found where no element may occur
>> ties fo:country="US" fo:language="en"/></style:default-style><style:style
>> style ----^
>> works in libreoffice - not in word.odt/styles.xml[2,90333]: Error: tag
>> name "style:header" is not allowed. Possible tag names are:
>> <a>,<animate>,<animateColor>,<animateMotion>,<animateTransfo
>> rm>,<audio>,<caption>,<circle>,<command>,<connector>,<
>> control>,<custom-shape>,<ellipse>,<footer-left>,<forms>
>> ,<frame>,<g>,<iterate>,<layer-set>,<line>,<measure>,<notes>,
>> <page-thumbnail>,<par>,<path>,<polygon>,<polyline>,<rect>,<
>> regular-polygon>,<scene>,<seq>,<set>,<transitionFilter>
>> t:section></style:footer><style:header><text:section text:display="true"
>> text:n ----^ works in libreoffice - not in word.odt/styles.xml: Info: 3
>> errors, no warnings
>>
>>
>> As this is not very helpful as everything is in a single 2nd line, I have
>> loaded the document into JEdit opening the styles.xml using the JEdit
>> archive extension and doing an indent using the Jedit XML extension and
>> saving the new file into the ZIP with Jedit back again.
>>
>> Now it is easier to find within a text editor:
>> works in libreoffice - not in word.odt/styles.xml[25,61]: Error: element
>> "style:text-properties" was found where no element may occur
>> <style:text-properties fo:country="US" fo:language="en"/> ----^ works in
>> libreoffice - not in word.odt/styles.xml[29,61]: Error: element
>> "style:text-properties" was found where no element may occur
>> <style:text-properties fo:country="US" fo:language="en"/> ----^ works in
>> libreoffice - not in word.odt/styles.xml[1082,18]: Error: tag name
>> "style:header" is not allowed. Possible tag names are:
>> <a>,<animate>,<animateColor>,<animateMotion>,<animateTransfo
>> rm>,<audio>,<caption>,<circle>,<command>,<connector>,<
>> control>,<custom-shape>,<ellipse>,<footer-left>,<forms>
>> ,<frame>,<g>,<iterate>,<layer-set>,<line>,<measure>,<notes>,
>> <page-thumbnail>,<par>,<path>,<polygon>,<polyline>,<rect>,<
>> regular-polygon>,<scene>,<seq>,<set>,<transitionFilter>
>>
>> The first two problem is only about text properties within a table and
>> paragraph style, where they are not allowed. What application created this
>> document? We should file an issue. :)
>> To check if kind of problem, you may look into the specification
>> <http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part1.html>
>> or the ODF XML grammar
>> <http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-schema.rng>
>> .
>> You may find all required specification files among
>> http://docs.oasis-open.org/office/v1.2/os/
>>
>> The third is the problem interesting to us, see
>> http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-
>> os-part1.html#element-style_master-page
>> Unfortunately, the spec does not show the order of elements, therefore
>> you need to look into the ODF XML RelaxNG grammar.
>> Within http://docs.oasis-open.org/office/v1.2/os/OpenDocumen
>> t-v1.2-os-schema.rng
>> you search for the element name (with ending quotation as there are some
>> longer names with this as prefix) style:master-page" and find:
>> <define name="style-master-page">
>> <element name="style:master-page">
>> <ref name="style-master-page-attlist"/>
>> <optional>
>> <ref name="style-header"/>
>> <optional>
>> <ref name="style-header-left"/>
>> </optional>
>> </optional>
>> <optional>
>> <ref name="style-footer"/>
>> <optional>
>> <ref name="style-footer-left"/>
>> </optional>
>> </optional>
>> Voila, first the header than the footer in strict order. See
>> relaxng.org/tutorial.html
>> In the file is it the other way around.
>>
>> Switch the elements and you may succeed! :)
>>
>> Have a nice week-end,
>> Svante
>>
>>
>>
>>
>> ᐧ
>>
>> 2018-01-13 3:49 GMT+01:00 Joseph D. Wagner <jo...@josephdwagner.info>:
>>
>>> Thank you for your generous offer to help.
>>>
>>> The "works in libreoffice - not in word" file is the direct output from
>>> your library.
>>>
>>> The "works in both libreoffice and word" file is the output of when I
>>> take that file, fix it in word, and then save it again.  (Oddly, word does
>>> something with the footer margin, and reopening this file in libreoffice
>>> reveals that the last line of the main area is cutoff by the footer.
>>> However, I'm hoping to ignore this.)
>>>
>>> I am using Word 2016.
>>>
>>> Thanks for all your time and effort.
>>>
>>> Joseph D. Wagner
>>>
>>>
>>> -----Original Message-----
>>> From: Svante Schubert [mailto:svante.schubert@gmail.com]
>>> Sent: Tuesday, January 9, 2018 1:50 AM
>>> To: odf-dev@incubator.apache.org
>>> Subject: Re: Trouble with Footer Font Size - Adding Page X of Y to Footer
>>>
>>> Hello Joeseph,
>>>
>>> the first interesting thing to mention from ODF perspective is that the
>>> text of a footer and header is part of the page style within the styles.xml.
>>> Therefore any automatic styles being used for header and footer are not
>>> within the content.xml, but styles.xml - and only those.
>>> Let us not discuss the pro and con of this design, let me simply state,
>>> that I am not a fan of it of the overall result :)
>>>
>>> In your example, it seems that the LibreOffice styles are not connecting
>>> to each other, ie. a32e835 at the paragraph and a2b0e5e at the paragraph
>>> style should be the same string, but this might be as well a copy paste
>>> error from different files.
>>> To alter the ODF styles, you might want to go a level deeper into the
>>> ODFDOM project <http://incubator.apache.org/o
>>> dftoolkit/odfdom/ProjectOverview.html>.
>>> Again take a look at the regression tests, where to find the desired
>>> elements.
>>>
>>> In general, every XML element has a generated DOM class with the prefix
>>> local name and either Attribute or Element suffix, for instance,
>>> TextSpanElement class.
>>>
>>> Hope it helps!
>>>
>>> Cheers,
>>> Svante
>>> ᐧ
>>>
>>> 2018-01-09 3:32 GMT+01:00 Joseph D. Wagner <jo...@josephdwagner.info>:
>>>
>>> > I am trying to add a "Page X of Y" footer to the bottom of a text
>>> > document.  I got everything working *EXCEPT* the font size.
>>> >
>>> > I wrote this code:
>>> >
>>> >         // Adds Page X of Y to the footer
>>> >         Font fontsmaller = new Font("Arial",
>>> > StyleTypeDefinitions.FontStyle.REGULAR,
>>> > 8);
>>> >         Footer footer = doc.getFooter();
>>> >         Section footersection = footer.appendSection("Page Numbers");
>>> >         Paragraph footerparagraph = footersection.addParagraph("Pa
>>> > ge\u00A0");
>>> >         footerparagraph.setFont(fontsmaller); // Doesn't work here
>>> > either Fields.createCurrentPageNumberField(footerparagraph.getOdfEl
>>> ement());
>>> >         footerparagraph.appendTextContent("\u00A0of\u00A0");
>>> > Fields.createPageCountField(footerparagraph.getOdfElement());
>>> >         footerparagraph.setFont(fontsmaller); // Doesn't work here
>>> > either
>>> >
>>> > It seems to work EXCEPT the part of changing the font size.  In Word,
>>> > the font ends up being the default size of 12.  (Works as expected in
>>> > LibreOffice.)
>>> >
>>> > Interesting, counterexample.  It works when I set the font larger,
>>> > like 16, but it doesn't work when I set the font smaller, like 10 or 8.
>>> >
>>> > I performed a diff comparison on the output form odftoolkit(-) and the
>>> > output from Word(+).  It seems the key difference is lines like these
>>> > in
>>> > styles.xml:
>>> >
>>> > -    <style:style style:family="paragraph" style:name="a2b0e5e">
>>> > -      <style:paragraph-properties fo:text-align="center"
>>> > style:line-break="strict" style:punctuation-wrap="hanging"
>>> > style:text-autospace="ideograph-alpha" style:writing-mode="page"/>
>>> > -      <style:text-properties fo:color="#000000" fo:country="US"
>>> > fo:font-size="10.0pt" fo:language="en" style:font-name="Courier New"
>>> > style:font-name-asian="Lucida Sans Unicode"
>>> > style:font-name-complex="Tahom a"
>>> > style:font-size-asian="12pt" style:font-size-complex="12pt"/>
>>> > +    <style:style style:name="P2" style:parent-style-name="Normal"
>>> > style:family="paragraph">
>>> > +      <style:paragraph-properties fo:text-align="center"/>
>>> > +      <style:text-properties style:font-name="Courier New"/>
>>> > +    </style:style>
>>> > +    <style:style style:name="T3" style:parent-style-name="Defau
>>> ltParagraphFont"
>>> > style:family="text">
>>> > +      <style:text-properties style:font-name="Courier New"
>>> > fo:color="#FF0000" fo:font-size="8pt" style:font-size-asian="8pt"
>>> > style:font-size-complex="8pt"/>
>>> > +    </style:style>
>>> > +    <style:style style:name="T4" style:parent-style-name="Defau
>>> ltParagraphFont"
>>> > style:family="text">
>>> > +      <style:text-properties style:font-name="Courier New"
>>> > fo:color="#FF0000" fo:font-size="8pt" style:font-size-asian="8pt"
>>> > style:font-size-complex="8pt"/>
>>> > +    </style:style>
>>> > +    <style:style style:name="T5" style:parent-style-name="Defau
>>> ltParagraphFont"
>>> > style:family="text">
>>> > +      <style:text-properties style:font-name="Courier New"
>>> > fo:color="#FF0000" fo:font-size="8pt" style:font-size-asian="8pt"
>>> > style:font-size-complex="8pt"/>
>>> > +    </style:style>
>>> > +    <style:style style:name="T6" style:parent-style-name="Defau
>>> ltParagraphFont"
>>> > style:family="text">
>>> > +      <style:text-properties style:font-name="Courier New"
>>> > fo:color="#FF0000" fo:font-size="8pt" style:font-size-asian="8pt"
>>> > style:font-size-complex="8pt"/>
>>> >      </style:style>
>>> >
>>> >
>>> > -      <style:footer>
>>> > -        <text:section text:display="true" text:name="Page Numbers"
>>> > text:style-name="aec74e3">
>>> > -          <text:p text:style-name="a32e835">Page
>>> <text:span><text:page-number
>>> > style:num-format="" text:select-page="current"/> o f
>>> > </text:span><text:span><text:page-count style:num-format=""/></text:sp
>>> > an></text:p>
>>> > -        </text:section>
>>> > -      </style:footer>
>>> >
>>> > +      <style:footer>
>>> > +        <text:p text:style-name="Normal">
>>> > +          <text:span text:style-name="T3">Page </text:span>
>>> > +          <text:span text:style-name="T4">
>>> > +            <text:page-number text:fixed="false">1</text:page-number>
>>> > +          </text:span>
>>> > +          <text:span text:style-name="T5"> of </text:span>
>>> > +          <text:span text:style-name="T6">
>>> > +            <text:page-count>14</text:page-count>
>>> > +          </text:span>
>>> > +        </text:p>
>>> > +      </style:footer>
>>> >
>>> > Unfortunately, I don't know what code I should write to force
>>> > odftoolkit to generate appropriate styles and text properties fields.
>>> >
>>> > Could someone please help me figure this one out?
>>> >
>>> > Thanks.
>>> >
>>> > Joseph D. Wagner
>>> >
>>> >
>>>
>>
>>
>

Re: Trouble with Footer Font Size - Adding Page X of Y to Footer

Posted by "Joseph D. Wagner" <jo...@josephdwagner.info>.
The first document, attached, is created with the SimpleAPI.  I 
rearranged the header and footer code to put them in the "proper" order 
as you previously suggested.  However, it had no impact.

If you look at the .odt file in Word, you'll notice the only line that 
has the Font Size correctly set is the first line of the main body.  All 
other fonts are set to size 12.  I think this has something to do with 
the addParagraph function and setFont on the Paragraph class.  Below is 
my code for my entire program (relatively short).

Here are some couter-examples of it working:

1) You'll notice the first line uses appendTextContent, and that one set 
the Font Size correctly.  However, all subsequent calls using 
addParagraph do not set the Font Size correctly, at least not in Word.

2) If I put the footer inside of a table, like on your website's 
examples, it will set the Font Size correctly then.  (However, I 
couldn't figure out how to put the PageNumber and PageCount variables 
inside a cell.)

3) If I set the font size LARGER than 12, like 16, it will set the Font 
Size correctly.

I think this is the root of the problem.  If we figure out why Word 
isn't recognizing the Font Size when setFont is called on a Paragraph 
and fix it, I think that will fix it in the header, footer, and main body.

One more note: I would have thought that TextDocument.save() would 
correctly handle the ordering of elements within a document, like header 
before footer.  If it doesn't, I would like to suggest making that 
happen as a future feature.  The SimpleAPI is much less useful if 
developers not familiar with the ODF specs have to know proper 
ordering.  HOWEVER, something makes me think this isn't the real problem.

Thanks again for your help.

     public static void main(String[] args) throws Exception {
         // Verifies two files were passed to the command line arguments
         if(args.length != 2) {
             System.err.println("usage: plaintext2odt infile outfile");
             System.exit(1);
         }

         // Opens infile
         BufferedReader infile = new BufferedReader(new 
FileReader(args[0]));

         // Creates new doc and sets defaults
         Locale locale = new Locale("en", "US");
         Font font = new Font("Courier New", 
StyleTypeDefinitions.FontStyle.REGULAR, 10, locale);
         TextDocument doc = TextDocument.newTextDocument();
         MasterPage master = MasterPage.getOrCreateMasterPage(doc, 
"Standard");
         master.setPageHeight(279.4);
         master.setPageWidth(215.9);
         master.setMargins(19.05, 19.05, 19.05, 19.05); // 19.05 mm = 
0.75 in
         doc.setPageColumns(2, 0.635); // 0.635 cm = 0.25 in
         doc.setLocale(locale);

         // Adds header
         Header header = doc.getHeader();
         Section headersection = header.appendSection("Title");
         Paragraph headerparagraph = headersection.addParagraph(null);
         headerparagraph.setFont(font);
         headerparagraph.appendTextContent(infile.readLine());
headerparagraph.setHorizontalAlignment(StyleTypeDefinitions.HorizontalAlignmentType.CENTER);

         // Adds Page X of Y to the footer
         Font fontsmaller = new Font("Courier New", 
StyleTypeDefinitions.FontStyle.ITALIC, 8, Color.RED, locale);
         Footer footer = doc.getFooter();
         Section footersection = footer.appendSection("Page Numbers");
         Paragraph footerparagraph = 
footersection.addParagraph("Page\u00A0");
Fields.createCurrentPageNumberField(footerparagraph.getOdfElement());
         footerparagraph.appendTextContent("\u00A0of\u00A0");
Fields.createPageCountField(footerparagraph.getOdfElement());
         footerparagraph.setFont(fontsmaller); // Doesn't work here
footerparagraph.setHorizontalAlignment(StyleTypeDefinitions.HorizontalAlignmentType.CENTER);

         // Special handling for first line
         Paragraph p = doc.getParagraphByIndex(0, false);
         p.setFont(font);
         infile.readLine();
         p.appendTextContent(infile.readLine());

         // Loops over all other lines
         String inline = new String();
         while ((inline = infile.readLine()) != null) {
             // p.appendTextContent("\r\n" + inline.replaceAll("\n", 
"\r\n")); // Works, because it doesn't use addParagraph
             p = doc.addParagraph(inline.replaceAll("\n", "\r\n"));
             p.setFont(font); // Does not work, because it uses addParagraph
         }
         infile.close();

         // Saves outfile
         FileOutputStream outfile = new FileOutputStream(args[1]);
         doc.save(outfile);
     }


On 01/13/2018 09:29 AM, Svante Schubert wrote:
> Both documents created with SimpleAPI? I might be able to take a look 
> at it tomorrow. Are you able to add a test creating the erraneous 
> document?
> Just copy from the existing tests.
>
> Cheers
> Svante
>
> Am 13.01.2018 13:26 schrieb "Joseph D. Wagner" <joe@josephdwagner.info 
> <ma...@josephdwagner.info>>:
>
>     Thanks. The document was created with the Simple API. So what are
>     the implications? Bug in Simple API, ODFDOM, or the java I wrote
>     that called the Simple API?
>
>     Joseph D. Wagner
>     -- 
>     Sent from my Android device.
>
>     ------------------------------------------------------------------------
>     *From:* Svante Schubert <svante.schubert@gmail.com
>     <ma...@gmail.com>>
>     *Sent:* January 13, 2018 2:37:21 AM PST
>     *To:* "Joseph D. Wagner" <joe@josephdwagner.info
>     <ma...@josephdwagner.info>>
>     *Cc:* odf-dev@incubator.apache.org
>     <ma...@incubator.apache.org>
>     *Subject:* Re: Trouble with Footer Font Size - Adding Page X of Y
>     to Footer
>
>     Hello Joseph,
>
>     first step is usually to check for validation problems.
>     There is a free online validator from The Document Foundation,
>     which is using our Apache ODF Toolkit project (incubating)
>     Validator with their own logo (which is fine, as they are paying
>     the server bill).
>
>     You 'broken' document - you had called "works in libreoffice - not
>     in word.odt" document is also invalid at various points, (the
>     working one has 'only' the common version attribute problem, which
>     is a known and long story).
>
>     The broken document shows the following errors
>     works in libreoffice - not in word.odt/styles.xml[2,3901]:
>     Error: element "style:text-properties" was found where no element
>     may occur
>     ties fo:country="US"
>     fo:language="en"/></style:default-style><style:default-sty ----^
>     works in libreoffice - not in word.odt/styles.xml[2,4079]:
>     Error: element "style:text-properties" was found where no element
>     may occur
>     ties fo:country="US"
>     fo:language="en"/></style:default-style><style:style style ----^
>     works in libreoffice - not in word.odt/styles.xml[2,90333]:
>     Error: tag name "style:header" is not allowed. Possible tag names
>     are:
>     <a>,<animate>,<animateColor>,<animateMotion>,<animateTransform>,<audio>,<caption>,<circle>,<command>,<connector>,<control>,<custom-shape>,<ellipse>,<footer-left>,<forms>,<frame>,<g>,<iterate>,<layer-set>,<line>,<measure>,<notes>,<page-thumbnail>,<par>,<path>,<polygon>,<polyline>,<rect>,<regular-polygon>,<scene>,<seq>,<set>,<transitionFilter>
>     t:section></style:footer><style:header><text:section
>     text:display="true" text:n ----^ works in libreoffice - not in
>     word.odt/styles.xml: Info: 3 errors, no warnings
>
>
>     As this is not very helpful as everything is in a single 2nd line,
>     I have loaded the document into JEdit opening the styles.xml using
>     the JEdit archive extension and doing an indent using the Jedit
>     XML extension and saving the new file into the ZIP with Jedit back
>     again.
>
>     Now it is easier to find within a text editor:
>     works in libreoffice - not in word.odt/styles.xml[25,61]:
>     Error: element "style:text-properties" was found where no element
>     may occur
>     <style:text-properties fo:country="US" fo:language="en"/> ----^
>     works in libreoffice - not in word.odt/styles.xml[29,61]:
>     Error: element "style:text-properties" was found where no element
>     may occur
>     <style:text-properties fo:country="US" fo:language="en"/> ----^
>     works in libreoffice - not in word.odt/styles.xml[1082,18]:
>     Error: tag name "style:header" is not allowed. Possible tag names
>     are:
>     <a>,<animate>,<animateColor>,<animateMotion>,<animateTransform>,<audio>,<caption>,<circle>,<command>,<connector>,<control>,<custom-shape>,<ellipse>,<footer-left>,<forms>,<frame>,<g>,<iterate>,<layer-set>,<line>,<measure>,<notes>,<page-thumbnail>,<par>,<path>,<polygon>,<polyline>,<rect>,<regular-polygon>,<scene>,<seq>,<set>,<transitionFilter>
>
>     The first two problem is only about text properties within a table
>     and paragraph style, where they are not allowed. What application
>     created this document? We should file an issue. :)
>     To check if kind of problem, you may look into the specification
>     <http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part1.html>
>     or the ODF XML grammar
>     <http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-schema.rng>.
>     You may find all required specification files among
>     http://docs.oasis-open.org/office/v1.2/os/
>     <http://docs.oasis-open.org/office/v1.2/os/>
>
>     The third is the problem interesting to us, see
>     http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part1.html#element-style_master-page
>     <http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part1.html#element-style_master-page>
>
>     Unfortunately, the spec does not show the order of elements,
>     therefore you need to look into the ODF XML RelaxNG grammar.
>     Within
>     http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-schema.rng
>     <http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-schema.rng>
>     you search for the element name (with ending quotation as there
>     are some longer names with this as prefix) style:master-page" and
>     find:
>     <define name="style-master-page">
>     <element name="style:master-page">
>     <ref name="style-master-page-attlist"/>
>     <optional>
>     <ref name="style-header"/>
>     <optional>
>     <ref name="style-header-left"/>
>     </optional>
>     </optional>
>     <optional>
>     <ref name="style-footer"/>
>     <optional>
>     <ref name="style-footer-left"/>
>     </optional>
>     </optional>
>     Voila, first the header than the footer in strict order. See
>     relaxng.org/tutorial.html <http://relaxng.org/tutorial.html>
>     In the file is it the other way around.
>
>     Switch the elements and you may succeed! :)
>
>     Have a nice week-end,
>     Svante
>
>
>
>
>     ᐧ
>
>     2018-01-13 3:49 GMT+01:00 Joseph D. Wagner <joe@josephdwagner.info
>     <ma...@josephdwagner.info>>:
>
>         Thank you for your generous offer to help.
>
>         The "works in libreoffice - not in word" file is the direct
>         output from your library.
>
>         The "works in both libreoffice and word" file is the output of
>         when I take that file, fix it in word, and then save it
>         again.  (Oddly, word does something with the footer margin,
>         and reopening this file in libreoffice reveals that the last
>         line of the main area is cutoff by the footer.  However, I'm
>         hoping to ignore this.)
>
>         I am using Word 2016.
>
>         Thanks for all your time and effort.
>
>         Joseph D. Wagner
>
>
>         -----Original Message-----
>         From: Svante Schubert [mailto:svante.schubert@gmail.com
>         <ma...@gmail.com>]
>         Sent: Tuesday, January 9, 2018 1:50 AM
>         To: odf-dev@incubator.apache.org
>         <ma...@incubator.apache.org>
>         Subject: Re: Trouble with Footer Font Size - Adding Page X of
>         Y to Footer
>
>         Hello Joeseph,
>
>         the first interesting thing to mention from ODF perspective is
>         that the text of a footer and header is part of the page style
>         within the styles.xml.
>         Therefore any automatic styles being used for header and
>         footer are not within the content.xml, but styles.xml - and
>         only those.
>         Let us not discuss the pro and con of this design, let me
>         simply state, that I am not a fan of it of the overall result :)
>
>         In your example, it seems that the LibreOffice styles are not
>         connecting to each other, ie. a32e835 at the paragraph and
>         a2b0e5e at the paragraph style should be the same string, but
>         this might be as well a copy paste error from different files.
>         To alter the ODF styles, you might want to go a level deeper
>         into the ODFDOM project
>         <http://incubator.apache.org/odftoolkit/odfdom/ProjectOverview.html
>         <http://incubator.apache.org/odftoolkit/odfdom/ProjectOverview.html>>.
>         Again take a look at the regression tests, where to find the
>         desired elements.
>
>         In general, every XML element has a generated DOM class with
>         the prefix local name and either Attribute or Element suffix,
>         for instance, TextSpanElement class.
>
>         Hope it helps!
>
>         Cheers,
>         Svante
>         ᐧ
>
>         2018-01-09 3:32 GMT+01:00 Joseph D. Wagner
>         <joe@josephdwagner.info <ma...@josephdwagner.info>>:
>
>         > I am trying to add a "Page X of Y" footer to the bottom of a
>         text
>         > document.  I got everything working *EXCEPT* the font size.
>         >
>         > I wrote this code:
>         >
>         >         // Adds Page X of Y to the footer
>         >         Font fontsmaller = new Font("Arial",
>         > StyleTypeDefinitions.FontStyle.REGULAR,
>         > 8);
>         >         Footer footer = doc.getFooter();
>         >         Section footersection = footer.appendSection("Page
>         Numbers");
>         >         Paragraph footerparagraph =
>         footersection.addParagraph("Pa
>         > ge\u00A0");
>         >         footerparagraph.setFont(fontsmaller); // Doesn't
>         work here
>         > either
>         Fields.createCurrentPageNumberField(footerparagraph.getOdfElement());
>         >         footerparagraph.appendTextContent("\u00A0of\u00A0");
>         > Fields.createPageCountField(footerparagraph.getOdfElement());
>         >         footerparagraph.setFont(fontsmaller); // Doesn't
>         work here
>         > either
>         >
>         > It seems to work EXCEPT the part of changing the font size. 
>         In Word,
>         > the font ends up being the default size of 12.  (Works as
>         expected in
>         > LibreOffice.)
>         >
>         > Interesting, counterexample.  It works when I set the font
>         larger,
>         > like 16, but it doesn't work when I set the font smaller,
>         like 10 or 8.
>         >
>         > I performed a diff comparison on the output form
>         odftoolkit(-) and the
>         > output from Word(+).  It seems the key difference is lines
>         like these
>         > in
>         > styles.xml:
>         >
>         > -    <style:style style:family="paragraph" style:name="a2b0e5e">
>         > -      <style:paragraph-properties fo:text-align="center"
>         > style:line-break="strict" style:punctuation-wrap="hanging"
>         > style:text-autospace="ideograph-alpha"
>         style:writing-mode="page"/>
>         > -      <style:text-properties fo:color="#000000" fo:country="US"
>         > fo:font-size="10.0pt" fo:language="en"
>         style:font-name="Courier New"
>         > style:font-name-asian="Lucida Sans Unicode"
>         > style:font-name-complex="Tahom a"
>         > style:font-size-asian="12pt" style:font-size-complex="12pt"/>
>         > +    <style:style style:name="P2"
>         style:parent-style-name="Normal"
>         > style:family="paragraph">
>         > +      <style:paragraph-properties fo:text-align="center"/>
>         > +      <style:text-properties style:font-name="Courier New"/>
>         > +    </style:style>
>         > +    <style:style style:name="T3"
>         style:parent-style-name="DefaultParagraphFont"
>         > style:family="text">
>         > +      <style:text-properties style:font-name="Courier New"
>         > fo:color="#FF0000" fo:font-size="8pt"
>         style:font-size-asian="8pt"
>         > style:font-size-complex="8pt"/>
>         > +    </style:style>
>         > +    <style:style style:name="T4"
>         style:parent-style-name="DefaultParagraphFont"
>         > style:family="text">
>         > +      <style:text-properties style:font-name="Courier New"
>         > fo:color="#FF0000" fo:font-size="8pt"
>         style:font-size-asian="8pt"
>         > style:font-size-complex="8pt"/>
>         > +    </style:style>
>         > +    <style:style style:name="T5"
>         style:parent-style-name="DefaultParagraphFont"
>         > style:family="text">
>         > +      <style:text-properties style:font-name="Courier New"
>         > fo:color="#FF0000" fo:font-size="8pt"
>         style:font-size-asian="8pt"
>         > style:font-size-complex="8pt"/>
>         > +    </style:style>
>         > +    <style:style style:name="T6"
>         style:parent-style-name="DefaultParagraphFont"
>         > style:family="text">
>         > +      <style:text-properties style:font-name="Courier New"
>         > fo:color="#FF0000" fo:font-size="8pt"
>         style:font-size-asian="8pt"
>         > style:font-size-complex="8pt"/>
>         >      </style:style>
>         >
>         >
>         > -      <style:footer>
>         > -        <text:section text:display="true" text:name="Page
>         Numbers"
>         > text:style-name="aec74e3">
>         > -          <text:p text:style-name="a32e835">Page
>         <text:span><text:page-number
>         > style:num-format="" text:select-page="current"/> o f
>         > </text:span><text:span><text:page-count
>         style:num-format=""/></text:sp
>         > an></text:p>
>         > -        </text:section>
>         > -      </style:footer>
>         >
>         > +      <style:footer>
>         > +        <text:p text:style-name="Normal">
>         > +          <text:span text:style-name="T3">Page </text:span>
>         > +          <text:span text:style-name="T4">
>         > +            <text:page-number
>         text:fixed="false">1</text:page-number>
>         > +          </text:span>
>         > +          <text:span text:style-name="T5"> of </text:span>
>         > +          <text:span text:style-name="T6">
>         > + <text:page-count>14</text:page-count>
>         > +          </text:span>
>         > +        </text:p>
>         > +      </style:footer>
>         >
>         > Unfortunately, I don't know what code I should write to force
>         > odftoolkit to generate appropriate styles and text
>         properties fields.
>         >
>         > Could someone please help me figure this one out?
>         >
>         > Thanks.
>         >
>         > Joseph D. Wagner
>         >
>         >
>
>


Re: Trouble with Footer Font Size - Adding Page X of Y to Footer

Posted by Svante Schubert <sv...@gmail.com>.
Both documents created with SimpleAPI? I might be able to take a look at it
tomorrow. Are you able to add a test creating the erraneous document?
Just copy from the existing tests.

Cheers
Svante

Am 13.01.2018 13:26 schrieb "Joseph D. Wagner" <jo...@josephdwagner.info>:

> Thanks. The document was created with the Simple API. So what are the
> implications? Bug in Simple API, ODFDOM, or the java I wrote that called
> the Simple API?
>
> Joseph D. Wagner
> --
> Sent from my Android device.
>
> ------------------------------
> *From:* Svante Schubert <sv...@gmail.com>
> *Sent:* January 13, 2018 2:37:21 AM PST
> *To:* "Joseph D. Wagner" <jo...@josephdwagner.info>
> *Cc:* odf-dev@incubator.apache.org
> *Subject:* Re: Trouble with Footer Font Size - Adding Page X of Y to
> Footer
>
> Hello Joseph,
>
> first step is usually to check for validation problems.
> There is a free online validator from The Document Foundation, which is
> using our Apache ODF Toolkit project (incubating) Validator with their own
> logo (which is fine, as they are paying the server bill).
>
> You 'broken' document - you had called "works in libreoffice - not in
> word.odt" document is also invalid at various points, (the working one has
> 'only' the common version attribute problem, which is a known and long
> story).
>
> The broken document shows the following errors
> works in libreoffice - not in word.odt/styles.xml[2,3901]: Error: element
> "style:text-properties" was found where no element may occur
> ties fo:country="US" fo:language="en"/></style:
> default-style><style:default-sty ----^
> works in libreoffice - not in word.odt/styles.xml[2,4079]: Error: element
> "style:text-properties" was found where no element may occur
> ties fo:country="US" fo:language="en"/></style:default-style><style:style
> style ----^
> works in libreoffice - not in word.odt/styles.xml[2,90333]: Error: tag
> name "style:header" is not allowed. Possible tag names are:
> <a>,<animate>,<animateColor>,<animateMotion>,<animateTransform>,<audio>,<
> caption>,<circle>,<command>,<connector>,<control>,<custom-
> shape>,<ellipse>,<footer-left>,<forms>,<frame>,<g>,<iterate>
> ,<layer-set>,<line>,<measure>,<notes>,<page-thumbnail>,<par>
> ,<path>,<polygon>,<polyline>,<rect>,<regular-polygon>,<
> scene>,<seq>,<set>,<transitionFilter>
> t:section></style:footer><style:header><text:section text:display="true"
> text:n ----^ works in libreoffice - not in word.odt/styles.xml: Info: 3
> errors, no warnings
>
>
> As this is not very helpful as everything is in a single 2nd line, I have
> loaded the document into JEdit opening the styles.xml using the JEdit
> archive extension and doing an indent using the Jedit XML extension and
> saving the new file into the ZIP with Jedit back again.
>
> Now it is easier to find within a text editor:
> works in libreoffice - not in word.odt/styles.xml[25,61]: Error: element
> "style:text-properties" was found where no element may occur
> <style:text-properties fo:country="US" fo:language="en"/> ----^ works in
> libreoffice - not in word.odt/styles.xml[29,61]: Error: element
> "style:text-properties" was found where no element may occur
> <style:text-properties fo:country="US" fo:language="en"/> ----^ works in
> libreoffice - not in word.odt/styles.xml[1082,18]: Error: tag name
> "style:header" is not allowed. Possible tag names are:
> <a>,<animate>,<animateColor>,<animateMotion>,<animateTransform>,<audio>,<
> caption>,<circle>,<command>,<connector>,<control>,<custom-
> shape>,<ellipse>,<footer-left>,<forms>,<frame>,<g>,<iterate>
> ,<layer-set>,<line>,<measure>,<notes>,<page-thumbnail>,<par>
> ,<path>,<polygon>,<polyline>,<rect>,<regular-polygon>,<
> scene>,<seq>,<set>,<transitionFilter>
>
> The first two problem is only about text properties within a table and
> paragraph style, where they are not allowed. What application created this
> document? We should file an issue. :)
> To check if kind of problem, you may look into the specification
> <http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part1.html>
> or the ODF XML grammar
> <http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-schema.rng>
> .
> You may find all required specification files among
> http://docs.oasis-open.org/office/v1.2/os/
>
> The third is the problem interesting to us, see
> http://docs.oasis-open.org/office/v1.2/os/OpenDocument-
> v1.2-os-part1.html#element-style_master-page
> Unfortunately, the spec does not show the order of elements, therefore you
> need to look into the ODF XML RelaxNG grammar.
> Within http://docs.oasis-open.org/office/v1.2/os/
> OpenDocument-v1.2-os-schema.rng
> you search for the element name (with ending quotation as there are some
> longer names with this as prefix) style:master-page" and find:
> <define name="style-master-page">
> <element name="style:master-page">
> <ref name="style-master-page-attlist"/>
> <optional>
> <ref name="style-header"/>
> <optional>
> <ref name="style-header-left"/>
> </optional>
> </optional>
> <optional>
> <ref name="style-footer"/>
> <optional>
> <ref name="style-footer-left"/>
> </optional>
> </optional>
> Voila, first the header than the footer in strict order. See
> relaxng.org/tutorial.html
> In the file is it the other way around.
>
> Switch the elements and you may succeed! :)
>
> Have a nice week-end,
> Svante
>
>
>
>
> ᐧ
>
> 2018-01-13 3:49 GMT+01:00 Joseph D. Wagner <jo...@josephdwagner.info>:
>
>> Thank you for your generous offer to help.
>>
>> The "works in libreoffice - not in word" file is the direct output from
>> your library.
>>
>> The "works in both libreoffice and word" file is the output of when I
>> take that file, fix it in word, and then save it again.  (Oddly, word does
>> something with the footer margin, and reopening this file in libreoffice
>> reveals that the last line of the main area is cutoff by the footer.
>> However, I'm hoping to ignore this.)
>>
>> I am using Word 2016.
>>
>> Thanks for all your time and effort.
>>
>> Joseph D. Wagner
>>
>>
>> -----Original Message-----
>> From: Svante Schubert [mailto:svante.schubert@gmail.com]
>> Sent: Tuesday, January 9, 2018 1:50 AM
>> To: odf-dev@incubator.apache.org
>> Subject: Re: Trouble with Footer Font Size - Adding Page X of Y to Footer
>>
>> Hello Joeseph,
>>
>> the first interesting thing to mention from ODF perspective is that the
>> text of a footer and header is part of the page style within the styles.xml.
>> Therefore any automatic styles being used for header and footer are not
>> within the content.xml, but styles.xml - and only those.
>> Let us not discuss the pro and con of this design, let me simply state,
>> that I am not a fan of it of the overall result :)
>>
>> In your example, it seems that the LibreOffice styles are not connecting
>> to each other, ie. a32e835 at the paragraph and a2b0e5e at the paragraph
>> style should be the same string, but this might be as well a copy paste
>> error from different files.
>> To alter the ODF styles, you might want to go a level deeper into the
>> ODFDOM project <http://incubator.apache.org/o
>> dftoolkit/odfdom/ProjectOverview.html>.
>> Again take a look at the regression tests, where to find the desired
>> elements.
>>
>> In general, every XML element has a generated DOM class with the prefix
>> local name and either Attribute or Element suffix, for instance,
>> TextSpanElement class.
>>
>> Hope it helps!
>>
>> Cheers,
>> Svante
>> ᐧ
>>
>> 2018-01-09 3:32 GMT+01:00 Joseph D. Wagner <jo...@josephdwagner.info>:
>>
>> > I am trying to add a "Page X of Y" footer to the bottom of a text
>> > document.  I got everything working *EXCEPT* the font size.
>> >
>> > I wrote this code:
>> >
>> >         // Adds Page X of Y to the footer
>> >         Font fontsmaller = new Font("Arial",
>> > StyleTypeDefinitions.FontStyle.REGULAR,
>> > 8);
>> >         Footer footer = doc.getFooter();
>> >         Section footersection = footer.appendSection("Page Numbers");
>> >         Paragraph footerparagraph = footersection.addParagraph("Pa
>> > ge\u00A0");
>> >         footerparagraph.setFont(fontsmaller); // Doesn't work here
>> > either Fields.createCurrentPageNumberField(footerparagraph.
>> getOdfElement());
>> >         footerparagraph.appendTextContent("\u00A0of\u00A0");
>> > Fields.createPageCountField(footerparagraph.getOdfElement());
>> >         footerparagraph.setFont(fontsmaller); // Doesn't work here
>> > either
>> >
>> > It seems to work EXCEPT the part of changing the font size.  In Word,
>> > the font ends up being the default size of 12.  (Works as expected in
>> > LibreOffice.)
>> >
>> > Interesting, counterexample.  It works when I set the font larger,
>> > like 16, but it doesn't work when I set the font smaller, like 10 or 8.
>> >
>> > I performed a diff comparison on the output form odftoolkit(-) and the
>> > output from Word(+).  It seems the key difference is lines like these
>> > in
>> > styles.xml:
>> >
>> > -    <style:style style:family="paragraph" style:name="a2b0e5e">
>> > -      <style:paragraph-properties fo:text-align="center"
>> > style:line-break="strict" style:punctuation-wrap="hanging"
>> > style:text-autospace="ideograph-alpha" style:writing-mode="page"/>
>> > -      <style:text-properties fo:color="#000000" fo:country="US"
>> > fo:font-size="10.0pt" fo:language="en" style:font-name="Courier New"
>> > style:font-name-asian="Lucida Sans Unicode"
>> > style:font-name-complex="Tahom a"
>> > style:font-size-asian="12pt" style:font-size-complex="12pt"/>
>> > +    <style:style style:name="P2" style:parent-style-name="Normal"
>> > style:family="paragraph">
>> > +      <style:paragraph-properties fo:text-align="center"/>
>> > +      <style:text-properties style:font-name="Courier New"/>
>> > +    </style:style>
>> > +    <style:style style:name="T3" style:parent-style-name="Defau
>> ltParagraphFont"
>> > style:family="text">
>> > +      <style:text-properties style:font-name="Courier New"
>> > fo:color="#FF0000" fo:font-size="8pt" style:font-size-asian="8pt"
>> > style:font-size-complex="8pt"/>
>> > +    </style:style>
>> > +    <style:style style:name="T4" style:parent-style-name="Defau
>> ltParagraphFont"
>> > style:family="text">
>> > +      <style:text-properties style:font-name="Courier New"
>> > fo:color="#FF0000" fo:font-size="8pt" style:font-size-asian="8pt"
>> > style:font-size-complex="8pt"/>
>> > +    </style:style>
>> > +    <style:style style:name="T5" style:parent-style-name="Defau
>> ltParagraphFont"
>> > style:family="text">
>> > +      <style:text-properties style:font-name="Courier New"
>> > fo:color="#FF0000" fo:font-size="8pt" style:font-size-asian="8pt"
>> > style:font-size-complex="8pt"/>
>> > +    </style:style>
>> > +    <style:style style:name="T6" style:parent-style-name="Defau
>> ltParagraphFont"
>> > style:family="text">
>> > +      <style:text-properties style:font-name="Courier New"
>> > fo:color="#FF0000" fo:font-size="8pt" style:font-size-asian="8pt"
>> > style:font-size-complex="8pt"/>
>> >      </style:style>
>> >
>> >
>> > -      <style:footer>
>> > -        <text:section text:display="true" text:name="Page Numbers"
>> > text:style-name="aec74e3">
>> > -          <text:p text:style-name="a32e835">Page
>> <text:span><text:page-number
>> > style:num-format="" text:select-page="current"/> o f
>> > </text:span><text:span><text:page-count style:num-format=""/></text:sp
>> > an></text:p>
>> > -        </text:section>
>> > -      </style:footer>
>> >
>> > +      <style:footer>
>> > +        <text:p text:style-name="Normal">
>> > +          <text:span text:style-name="T3">Page </text:span>
>> > +          <text:span text:style-name="T4">
>> > +            <text:page-number text:fixed="false">1</text:page-number>
>> > +          </text:span>
>> > +          <text:span text:style-name="T5"> of </text:span>
>> > +          <text:span text:style-name="T6">
>> > +            <text:page-count>14</text:page-count>
>> > +          </text:span>
>> > +        </text:p>
>> > +      </style:footer>
>> >
>> > Unfortunately, I don't know what code I should write to force
>> > odftoolkit to generate appropriate styles and text properties fields.
>> >
>> > Could someone please help me figure this one out?
>> >
>> > Thanks.
>> >
>> > Joseph D. Wagner
>> >
>> >
>>
>
>

Re: Trouble with Footer Font Size - Adding Page X of Y to Footer

Posted by "Joseph D. Wagner" <jo...@josephdwagner.info>.
Thanks. The document was created with the Simple API. So what are the implications? Bug in Simple API, ODFDOM, or the java I wrote that called the Simple API?

Joseph D. Wagner
-- 
Sent from my Android device.


-------- Original Message --------
From: Svante Schubert <sv...@gmail.com>
Sent: January 13, 2018 2:37:21 AM PST
To: "Joseph D. Wagner" <jo...@josephdwagner.info>
Cc: odf-dev@incubator.apache.org
Subject: Re: Trouble with Footer Font Size - Adding Page X of Y to Footer

Hello Joseph,

first step is usually to check for validation problems.
There is a free online validator from The Document Foundation, which is
using our Apache ODF Toolkit project (incubating) Validator with their own
logo (which is fine, as they are paying the server bill).

You 'broken' document - you had called "works in libreoffice - not in
word.odt" document is also invalid at various points, (the working one has
'only' the common version attribute problem, which is a known and long
story).

The broken document shows the following errors
works in libreoffice - not in word.odt/styles.xml[2,3901]: Error: element
"style:text-properties" was found where no element may occur
ties fo:country="US"
fo:language="en"/></style:default-style><style:default-sty ----^
works in libreoffice - not in word.odt/styles.xml[2,4079]: Error: element
"style:text-properties" was found where no element may occur
ties fo:country="US" fo:language="en"/></style:default-style><style:style
style ----^
works in libreoffice - not in word.odt/styles.xml[2,90333]: Error: tag name
"style:header" is not allowed. Possible tag names are:
<a>,<animate>,<animateColor>,<animateMotion>,<animateTransform>,<audio>,<caption>,<circle>,<command>,<connector>,<control>,<custom-shape>,<ellipse>,<footer-left>,<forms>,<frame>,<g>,<iterate>,<layer-set>,<line>,<measure>,<notes>,<page-thumbnail>,<par>,<path>,<polygon>,<polyline>,<rect>,<regular-polygon>,<scene>,<seq>,<set>,<transitionFilter>
t:section></style:footer><style:header><text:section text:display="true"
text:n ----^ works in libreoffice - not in word.odt/styles.xml: Info: 3
errors, no warnings


As this is not very helpful as everything is in a single 2nd line, I have
loaded the document into JEdit opening the styles.xml using the JEdit
archive extension and doing an indent using the Jedit XML extension and
saving the new file into the ZIP with Jedit back again.

Now it is easier to find within a text editor:
works in libreoffice - not in word.odt/styles.xml[25,61]: Error: element
"style:text-properties" was found where no element may occur
<style:text-properties fo:country="US" fo:language="en"/> ----^ works in
libreoffice - not in word.odt/styles.xml[29,61]: Error: element
"style:text-properties" was found where no element may occur
<style:text-properties fo:country="US" fo:language="en"/> ----^ works in
libreoffice - not in word.odt/styles.xml[1082,18]: Error: tag name
"style:header" is not allowed. Possible tag names are:
<a>,<animate>,<animateColor>,<animateMotion>,<animateTransform>,<audio>,<caption>,<circle>,<command>,<connector>,<control>,<custom-shape>,<ellipse>,<footer-left>,<forms>,<frame>,<g>,<iterate>,<layer-set>,<line>,<measure>,<notes>,<page-thumbnail>,<par>,<path>,<polygon>,<polyline>,<rect>,<regular-polygon>,<scene>,<seq>,<set>,<transitionFilter>

The first two problem is only about text properties within a table and
paragraph style, where they are not allowed. What application created this
document? We should file an issue. :)
To check if kind of problem, you may look into the specification
<http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part1.html>
or the ODF XML grammar
<http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-schema.rng>.
You may find all required specification files among
http://docs.oasis-open.org/office/v1.2/os/

The third is the problem interesting to us, see
http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part1.html#element-style_master-page

Unfortunately, the spec does not show the order of elements, therefore you
need to look into the ODF XML RelaxNG grammar.
Within
http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-schema.rng
you search for the element name (with ending quotation as there are some
longer names with this as prefix) style:master-page" and find:
<define name="style-master-page">
<element name="style:master-page">
<ref name="style-master-page-attlist"/>
<optional>
<ref name="style-header"/>
<optional>
<ref name="style-header-left"/>
</optional>
</optional>
<optional>
<ref name="style-footer"/>
<optional>
<ref name="style-footer-left"/>
</optional>
</optional>
Voila, first the header than the footer in strict order. See
relaxng.org/tutorial.html
In the file is it the other way around.

Switch the elements and you may succeed! :)

Have a nice week-end,
Svante




ᐧ

2018-01-13 3:49 GMT+01:00 Joseph D. Wagner <jo...@josephdwagner.info>:

> Thank you for your generous offer to help.
>
> The "works in libreoffice - not in word" file is the direct output from
> your library.
>
> The "works in both libreoffice and word" file is the output of when I take
> that file, fix it in word, and then save it again.  (Oddly, word does
> something with the footer margin, and reopening this file in libreoffice
> reveals that the last line of the main area is cutoff by the footer.
> However, I'm hoping to ignore this.)
>
> I am using Word 2016.
>
> Thanks for all your time and effort.
>
> Joseph D. Wagner
>
>
> -----Original Message-----
> From: Svante Schubert [mailto:svante.schubert@gmail.com]
> Sent: Tuesday, January 9, 2018 1:50 AM
> To: odf-dev@incubator.apache.org
> Subject: Re: Trouble with Footer Font Size - Adding Page X of Y to Footer
>
> Hello Joeseph,
>
> the first interesting thing to mention from ODF perspective is that the
> text of a footer and header is part of the page style within the styles.xml.
> Therefore any automatic styles being used for header and footer are not
> within the content.xml, but styles.xml - and only those.
> Let us not discuss the pro and con of this design, let me simply state,
> that I am not a fan of it of the overall result :)
>
> In your example, it seems that the LibreOffice styles are not connecting
> to each other, ie. a32e835 at the paragraph and a2b0e5e at the paragraph
> style should be the same string, but this might be as well a copy paste
> error from different files.
> To alter the ODF styles, you might want to go a level deeper into the
> ODFDOM project <http://incubator.apache.org/odftoolkit/odfdom/
> ProjectOverview.html>.
> Again take a look at the regression tests, where to find the desired
> elements.
>
> In general, every XML element has a generated DOM class with the prefix
> local name and either Attribute or Element suffix, for instance,
> TextSpanElement class.
>
> Hope it helps!
>
> Cheers,
> Svante
> ᐧ
>
> 2018-01-09 3:32 GMT+01:00 Joseph D. Wagner <jo...@josephdwagner.info>:
>
> > I am trying to add a "Page X of Y" footer to the bottom of a text
> > document.  I got everything working *EXCEPT* the font size.
> >
> > I wrote this code:
> >
> >         // Adds Page X of Y to the footer
> >         Font fontsmaller = new Font("Arial",
> > StyleTypeDefinitions.FontStyle.REGULAR,
> > 8);
> >         Footer footer = doc.getFooter();
> >         Section footersection = footer.appendSection("Page Numbers");
> >         Paragraph footerparagraph = footersection.addParagraph("Pa
> > ge\u00A0");
> >         footerparagraph.setFont(fontsmaller); // Doesn't work here
> > either Fields.createCurrentPageNumberField(
> footerparagraph.getOdfElement());
> >         footerparagraph.appendTextContent("\u00A0of\u00A0");
> > Fields.createPageCountField(footerparagraph.getOdfElement());
> >         footerparagraph.setFont(fontsmaller); // Doesn't work here
> > either
> >
> > It seems to work EXCEPT the part of changing the font size.  In Word,
> > the font ends up being the default size of 12.  (Works as expected in
> > LibreOffice.)
> >
> > Interesting, counterexample.  It works when I set the font larger,
> > like 16, but it doesn't work when I set the font smaller, like 10 or 8.
> >
> > I performed a diff comparison on the output form odftoolkit(-) and the
> > output from Word(+).  It seems the key difference is lines like these
> > in
> > styles.xml:
> >
> > -    <style:style style:family="paragraph" style:name="a2b0e5e">
> > -      <style:paragraph-properties fo:text-align="center"
> > style:line-break="strict" style:punctuation-wrap="hanging"
> > style:text-autospace="ideograph-alpha" style:writing-mode="page"/>
> > -      <style:text-properties fo:color="#000000" fo:country="US"
> > fo:font-size="10.0pt" fo:language="en" style:font-name="Courier New"
> > style:font-name-asian="Lucida Sans Unicode"
> > style:font-name-complex="Tahom a"
> > style:font-size-asian="12pt" style:font-size-complex="12pt"/>
> > +    <style:style style:name="P2" style:parent-style-name="Normal"
> > style:family="paragraph">
> > +      <style:paragraph-properties fo:text-align="center"/>
> > +      <style:text-properties style:font-name="Courier New"/>
> > +    </style:style>
> > +    <style:style style:name="T3" style:parent-style-name="
> DefaultParagraphFont"
> > style:family="text">
> > +      <style:text-properties style:font-name="Courier New"
> > fo:color="#FF0000" fo:font-size="8pt" style:font-size-asian="8pt"
> > style:font-size-complex="8pt"/>
> > +    </style:style>
> > +    <style:style style:name="T4" style:parent-style-name="
> DefaultParagraphFont"
> > style:family="text">
> > +      <style:text-properties style:font-name="Courier New"
> > fo:color="#FF0000" fo:font-size="8pt" style:font-size-asian="8pt"
> > style:font-size-complex="8pt"/>
> > +    </style:style>
> > +    <style:style style:name="T5" style:parent-style-name="
> DefaultParagraphFont"
> > style:family="text">
> > +      <style:text-properties style:font-name="Courier New"
> > fo:color="#FF0000" fo:font-size="8pt" style:font-size-asian="8pt"
> > style:font-size-complex="8pt"/>
> > +    </style:style>
> > +    <style:style style:name="T6" style:parent-style-name="
> DefaultParagraphFont"
> > style:family="text">
> > +      <style:text-properties style:font-name="Courier New"
> > fo:color="#FF0000" fo:font-size="8pt" style:font-size-asian="8pt"
> > style:font-size-complex="8pt"/>
> >      </style:style>
> >
> >
> > -      <style:footer>
> > -        <text:section text:display="true" text:name="Page Numbers"
> > text:style-name="aec74e3">
> > -          <text:p text:style-name="a32e835">Page
> <text:span><text:page-number
> > style:num-format="" text:select-page="current"/> o f
> > </text:span><text:span><text:page-count style:num-format=""/></text:sp
> > an></text:p>
> > -        </text:section>
> > -      </style:footer>
> >
> > +      <style:footer>
> > +        <text:p text:style-name="Normal">
> > +          <text:span text:style-name="T3">Page </text:span>
> > +          <text:span text:style-name="T4">
> > +            <text:page-number text:fixed="false">1</text:page-number>
> > +          </text:span>
> > +          <text:span text:style-name="T5"> of </text:span>
> > +          <text:span text:style-name="T6">
> > +            <text:page-count>14</text:page-count>
> > +          </text:span>
> > +        </text:p>
> > +      </style:footer>
> >
> > Unfortunately, I don't know what code I should write to force
> > odftoolkit to generate appropriate styles and text properties fields.
> >
> > Could someone please help me figure this one out?
> >
> > Thanks.
> >
> > Joseph D. Wagner
> >
> >
>

Re: Trouble with Footer Font Size - Adding Page X of Y to Footer

Posted by Svante Schubert <sv...@gmail.com>.
Hello Joseph,

first step is usually to check for validation problems.
There is a free online validator from The Document Foundation, which is
using our Apache ODF Toolkit project (incubating) Validator with their own
logo (which is fine, as they are paying the server bill).

You 'broken' document - you had called "works in libreoffice - not in
word.odt" document is also invalid at various points, (the working one has
'only' the common version attribute problem, which is a known and long
story).

The broken document shows the following errors
works in libreoffice - not in word.odt/styles.xml[2,3901]: Error: element
"style:text-properties" was found where no element may occur
ties fo:country="US"
fo:language="en"/></style:default-style><style:default-sty ----^
works in libreoffice - not in word.odt/styles.xml[2,4079]: Error: element
"style:text-properties" was found where no element may occur
ties fo:country="US" fo:language="en"/></style:default-style><style:style
style ----^
works in libreoffice - not in word.odt/styles.xml[2,90333]: Error: tag name
"style:header" is not allowed. Possible tag names are:
<a>,<animate>,<animateColor>,<animateMotion>,<animateTransform>,<audio>,<caption>,<circle>,<command>,<connector>,<control>,<custom-shape>,<ellipse>,<footer-left>,<forms>,<frame>,<g>,<iterate>,<layer-set>,<line>,<measure>,<notes>,<page-thumbnail>,<par>,<path>,<polygon>,<polyline>,<rect>,<regular-polygon>,<scene>,<seq>,<set>,<transitionFilter>
t:section></style:footer><style:header><text:section text:display="true"
text:n ----^ works in libreoffice - not in word.odt/styles.xml: Info: 3
errors, no warnings


As this is not very helpful as everything is in a single 2nd line, I have
loaded the document into JEdit opening the styles.xml using the JEdit
archive extension and doing an indent using the Jedit XML extension and
saving the new file into the ZIP with Jedit back again.

Now it is easier to find within a text editor:
works in libreoffice - not in word.odt/styles.xml[25,61]: Error: element
"style:text-properties" was found where no element may occur
<style:text-properties fo:country="US" fo:language="en"/> ----^ works in
libreoffice - not in word.odt/styles.xml[29,61]: Error: element
"style:text-properties" was found where no element may occur
<style:text-properties fo:country="US" fo:language="en"/> ----^ works in
libreoffice - not in word.odt/styles.xml[1082,18]: Error: tag name
"style:header" is not allowed. Possible tag names are:
<a>,<animate>,<animateColor>,<animateMotion>,<animateTransform>,<audio>,<caption>,<circle>,<command>,<connector>,<control>,<custom-shape>,<ellipse>,<footer-left>,<forms>,<frame>,<g>,<iterate>,<layer-set>,<line>,<measure>,<notes>,<page-thumbnail>,<par>,<path>,<polygon>,<polyline>,<rect>,<regular-polygon>,<scene>,<seq>,<set>,<transitionFilter>

The first two problem is only about text properties within a table and
paragraph style, where they are not allowed. What application created this
document? We should file an issue. :)
To check if kind of problem, you may look into the specification
<http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part1.html>
or the ODF XML grammar
<http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-schema.rng>.
You may find all required specification files among
http://docs.oasis-open.org/office/v1.2/os/

The third is the problem interesting to us, see
http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part1.html#element-style_master-page

Unfortunately, the spec does not show the order of elements, therefore you
need to look into the ODF XML RelaxNG grammar.
Within
http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-schema.rng
you search for the element name (with ending quotation as there are some
longer names with this as prefix) style:master-page" and find:
<define name="style-master-page">
<element name="style:master-page">
<ref name="style-master-page-attlist"/>
<optional>
<ref name="style-header"/>
<optional>
<ref name="style-header-left"/>
</optional>
</optional>
<optional>
<ref name="style-footer"/>
<optional>
<ref name="style-footer-left"/>
</optional>
</optional>
Voila, first the header than the footer in strict order. See
relaxng.org/tutorial.html
In the file is it the other way around.

Switch the elements and you may succeed! :)

Have a nice week-end,
Svante




ᐧ

2018-01-13 3:49 GMT+01:00 Joseph D. Wagner <jo...@josephdwagner.info>:

> Thank you for your generous offer to help.
>
> The "works in libreoffice - not in word" file is the direct output from
> your library.
>
> The "works in both libreoffice and word" file is the output of when I take
> that file, fix it in word, and then save it again.  (Oddly, word does
> something with the footer margin, and reopening this file in libreoffice
> reveals that the last line of the main area is cutoff by the footer.
> However, I'm hoping to ignore this.)
>
> I am using Word 2016.
>
> Thanks for all your time and effort.
>
> Joseph D. Wagner
>
>
> -----Original Message-----
> From: Svante Schubert [mailto:svante.schubert@gmail.com]
> Sent: Tuesday, January 9, 2018 1:50 AM
> To: odf-dev@incubator.apache.org
> Subject: Re: Trouble with Footer Font Size - Adding Page X of Y to Footer
>
> Hello Joeseph,
>
> the first interesting thing to mention from ODF perspective is that the
> text of a footer and header is part of the page style within the styles.xml.
> Therefore any automatic styles being used for header and footer are not
> within the content.xml, but styles.xml - and only those.
> Let us not discuss the pro and con of this design, let me simply state,
> that I am not a fan of it of the overall result :)
>
> In your example, it seems that the LibreOffice styles are not connecting
> to each other, ie. a32e835 at the paragraph and a2b0e5e at the paragraph
> style should be the same string, but this might be as well a copy paste
> error from different files.
> To alter the ODF styles, you might want to go a level deeper into the
> ODFDOM project <http://incubator.apache.org/odftoolkit/odfdom/
> ProjectOverview.html>.
> Again take a look at the regression tests, where to find the desired
> elements.
>
> In general, every XML element has a generated DOM class with the prefix
> local name and either Attribute or Element suffix, for instance,
> TextSpanElement class.
>
> Hope it helps!
>
> Cheers,
> Svante
> ᐧ
>
> 2018-01-09 3:32 GMT+01:00 Joseph D. Wagner <jo...@josephdwagner.info>:
>
> > I am trying to add a "Page X of Y" footer to the bottom of a text
> > document.  I got everything working *EXCEPT* the font size.
> >
> > I wrote this code:
> >
> >         // Adds Page X of Y to the footer
> >         Font fontsmaller = new Font("Arial",
> > StyleTypeDefinitions.FontStyle.REGULAR,
> > 8);
> >         Footer footer = doc.getFooter();
> >         Section footersection = footer.appendSection("Page Numbers");
> >         Paragraph footerparagraph = footersection.addParagraph("Pa
> > ge\u00A0");
> >         footerparagraph.setFont(fontsmaller); // Doesn't work here
> > either Fields.createCurrentPageNumberField(
> footerparagraph.getOdfElement());
> >         footerparagraph.appendTextContent("\u00A0of\u00A0");
> > Fields.createPageCountField(footerparagraph.getOdfElement());
> >         footerparagraph.setFont(fontsmaller); // Doesn't work here
> > either
> >
> > It seems to work EXCEPT the part of changing the font size.  In Word,
> > the font ends up being the default size of 12.  (Works as expected in
> > LibreOffice.)
> >
> > Interesting, counterexample.  It works when I set the font larger,
> > like 16, but it doesn't work when I set the font smaller, like 10 or 8.
> >
> > I performed a diff comparison on the output form odftoolkit(-) and the
> > output from Word(+).  It seems the key difference is lines like these
> > in
> > styles.xml:
> >
> > -    <style:style style:family="paragraph" style:name="a2b0e5e">
> > -      <style:paragraph-properties fo:text-align="center"
> > style:line-break="strict" style:punctuation-wrap="hanging"
> > style:text-autospace="ideograph-alpha" style:writing-mode="page"/>
> > -      <style:text-properties fo:color="#000000" fo:country="US"
> > fo:font-size="10.0pt" fo:language="en" style:font-name="Courier New"
> > style:font-name-asian="Lucida Sans Unicode"
> > style:font-name-complex="Tahom a"
> > style:font-size-asian="12pt" style:font-size-complex="12pt"/>
> > +    <style:style style:name="P2" style:parent-style-name="Normal"
> > style:family="paragraph">
> > +      <style:paragraph-properties fo:text-align="center"/>
> > +      <style:text-properties style:font-name="Courier New"/>
> > +    </style:style>
> > +    <style:style style:name="T3" style:parent-style-name="
> DefaultParagraphFont"
> > style:family="text">
> > +      <style:text-properties style:font-name="Courier New"
> > fo:color="#FF0000" fo:font-size="8pt" style:font-size-asian="8pt"
> > style:font-size-complex="8pt"/>
> > +    </style:style>
> > +    <style:style style:name="T4" style:parent-style-name="
> DefaultParagraphFont"
> > style:family="text">
> > +      <style:text-properties style:font-name="Courier New"
> > fo:color="#FF0000" fo:font-size="8pt" style:font-size-asian="8pt"
> > style:font-size-complex="8pt"/>
> > +    </style:style>
> > +    <style:style style:name="T5" style:parent-style-name="
> DefaultParagraphFont"
> > style:family="text">
> > +      <style:text-properties style:font-name="Courier New"
> > fo:color="#FF0000" fo:font-size="8pt" style:font-size-asian="8pt"
> > style:font-size-complex="8pt"/>
> > +    </style:style>
> > +    <style:style style:name="T6" style:parent-style-name="
> DefaultParagraphFont"
> > style:family="text">
> > +      <style:text-properties style:font-name="Courier New"
> > fo:color="#FF0000" fo:font-size="8pt" style:font-size-asian="8pt"
> > style:font-size-complex="8pt"/>
> >      </style:style>
> >
> >
> > -      <style:footer>
> > -        <text:section text:display="true" text:name="Page Numbers"
> > text:style-name="aec74e3">
> > -          <text:p text:style-name="a32e835">Page
> <text:span><text:page-number
> > style:num-format="" text:select-page="current"/> o f
> > </text:span><text:span><text:page-count style:num-format=""/></text:sp
> > an></text:p>
> > -        </text:section>
> > -      </style:footer>
> >
> > +      <style:footer>
> > +        <text:p text:style-name="Normal">
> > +          <text:span text:style-name="T3">Page </text:span>
> > +          <text:span text:style-name="T4">
> > +            <text:page-number text:fixed="false">1</text:page-number>
> > +          </text:span>
> > +          <text:span text:style-name="T5"> of </text:span>
> > +          <text:span text:style-name="T6">
> > +            <text:page-count>14</text:page-count>
> > +          </text:span>
> > +        </text:p>
> > +      </style:footer>
> >
> > Unfortunately, I don't know what code I should write to force
> > odftoolkit to generate appropriate styles and text properties fields.
> >
> > Could someone please help me figure this one out?
> >
> > Thanks.
> >
> > Joseph D. Wagner
> >
> >
>

RE: Trouble with Footer Font Size - Adding Page X of Y to Footer

Posted by "Joseph D. Wagner" <jo...@josephdwagner.info>.
Thank you for your generous offer to help.

The "works in libreoffice - not in word" file is the direct output from your library.

The "works in both libreoffice and word" file is the output of when I take that file, fix it in word, and then save it again.  (Oddly, word does something with the footer margin, and reopening this file in libreoffice reveals that the last line of the main area is cutoff by the footer.  However, I'm hoping to ignore this.)

I am using Word 2016.

Thanks for all your time and effort.

Joseph D. Wagner


-----Original Message-----
From: Svante Schubert [mailto:svante.schubert@gmail.com] 
Sent: Tuesday, January 9, 2018 1:50 AM
To: odf-dev@incubator.apache.org
Subject: Re: Trouble with Footer Font Size - Adding Page X of Y to Footer

Hello Joeseph,

the first interesting thing to mention from ODF perspective is that the text of a footer and header is part of the page style within the styles.xml.
Therefore any automatic styles being used for header and footer are not within the content.xml, but styles.xml - and only those.
Let us not discuss the pro and con of this design, let me simply state, that I am not a fan of it of the overall result :)

In your example, it seems that the LibreOffice styles are not connecting to each other, ie. a32e835 at the paragraph and a2b0e5e at the paragraph style should be the same string, but this might be as well a copy paste error from different files.
To alter the ODF styles, you might want to go a level deeper into the ODFDOM project <http://incubator.apache.org/odftoolkit/odfdom/ProjectOverview.html>.
Again take a look at the regression tests, where to find the desired elements.

In general, every XML element has a generated DOM class with the prefix local name and either Attribute or Element suffix, for instance, TextSpanElement class.

Hope it helps!

Cheers,
Svante
ᐧ

2018-01-09 3:32 GMT+01:00 Joseph D. Wagner <jo...@josephdwagner.info>:

> I am trying to add a "Page X of Y" footer to the bottom of a text 
> document.  I got everything working *EXCEPT* the font size.
>
> I wrote this code:
>
>         // Adds Page X of Y to the footer
>         Font fontsmaller = new Font("Arial", 
> StyleTypeDefinitions.FontStyle.REGULAR,
> 8);
>         Footer footer = doc.getFooter();
>         Section footersection = footer.appendSection("Page Numbers");
>         Paragraph footerparagraph = footersection.addParagraph("Pa 
> ge\u00A0");
>         footerparagraph.setFont(fontsmaller); // Doesn't work here 
> either Fields.createCurrentPageNumberField(footerparagraph.getOdfElement());
>         footerparagraph.appendTextContent("\u00A0of\u00A0");
> Fields.createPageCountField(footerparagraph.getOdfElement());
>         footerparagraph.setFont(fontsmaller); // Doesn't work here 
> either
>
> It seems to work EXCEPT the part of changing the font size.  In Word, 
> the font ends up being the default size of 12.  (Works as expected in
> LibreOffice.)
>
> Interesting, counterexample.  It works when I set the font larger, 
> like 16, but it doesn't work when I set the font smaller, like 10 or 8.
>
> I performed a diff comparison on the output form odftoolkit(-) and the 
> output from Word(+).  It seems the key difference is lines like these 
> in
> styles.xml:
>
> -    <style:style style:family="paragraph" style:name="a2b0e5e">
> -      <style:paragraph-properties fo:text-align="center"
> style:line-break="strict" style:punctuation-wrap="hanging"
> style:text-autospace="ideograph-alpha" style:writing-mode="page"/>
> -      <style:text-properties fo:color="#000000" fo:country="US"
> fo:font-size="10.0pt" fo:language="en" style:font-name="Courier New"
> style:font-name-asian="Lucida Sans Unicode" 
> style:font-name-complex="Tahom a"
> style:font-size-asian="12pt" style:font-size-complex="12pt"/>
> +    <style:style style:name="P2" style:parent-style-name="Normal"
> style:family="paragraph">
> +      <style:paragraph-properties fo:text-align="center"/>
> +      <style:text-properties style:font-name="Courier New"/>
> +    </style:style>
> +    <style:style style:name="T3" style:parent-style-name="DefaultParagraphFont"
> style:family="text">
> +      <style:text-properties style:font-name="Courier New"
> fo:color="#FF0000" fo:font-size="8pt" style:font-size-asian="8pt"
> style:font-size-complex="8pt"/>
> +    </style:style>
> +    <style:style style:name="T4" style:parent-style-name="DefaultParagraphFont"
> style:family="text">
> +      <style:text-properties style:font-name="Courier New"
> fo:color="#FF0000" fo:font-size="8pt" style:font-size-asian="8pt"
> style:font-size-complex="8pt"/>
> +    </style:style>
> +    <style:style style:name="T5" style:parent-style-name="DefaultParagraphFont"
> style:family="text">
> +      <style:text-properties style:font-name="Courier New"
> fo:color="#FF0000" fo:font-size="8pt" style:font-size-asian="8pt"
> style:font-size-complex="8pt"/>
> +    </style:style>
> +    <style:style style:name="T6" style:parent-style-name="DefaultParagraphFont"
> style:family="text">
> +      <style:text-properties style:font-name="Courier New"
> fo:color="#FF0000" fo:font-size="8pt" style:font-size-asian="8pt"
> style:font-size-complex="8pt"/>
>      </style:style>
>
>
> -      <style:footer>
> -        <text:section text:display="true" text:name="Page Numbers"
> text:style-name="aec74e3">
> -          <text:p text:style-name="a32e835">Page <text:span><text:page-number
> style:num-format="" text:select-page="current"/> o f 
> </text:span><text:span><text:page-count style:num-format=""/></text:sp
> an></text:p>
> -        </text:section>
> -      </style:footer>
>
> +      <style:footer>
> +        <text:p text:style-name="Normal">
> +          <text:span text:style-name="T3">Page </text:span>
> +          <text:span text:style-name="T4">
> +            <text:page-number text:fixed="false">1</text:page-number>
> +          </text:span>
> +          <text:span text:style-name="T5"> of </text:span>
> +          <text:span text:style-name="T6">
> +            <text:page-count>14</text:page-count>
> +          </text:span>
> +        </text:p>
> +      </style:footer>
>
> Unfortunately, I don't know what code I should write to force 
> odftoolkit to generate appropriate styles and text properties fields.
>
> Could someone please help me figure this one out?
>
> Thanks.
>
> Joseph D. Wagner
>
>

Re: Trouble with Footer Font Size - Adding Page X of Y to Footer

Posted by Svante Schubert <sv...@gmail.com>.
If everything fails and no other is able to help you earlier, I might be
able to take a look at the weekend, but currently, I have my own windmills
I am riding against ;)

Good luck,
Svante

PS: To be able to test your use case, you might provide a start document
and the version of Word it should work with. Currently, I got MS Office
2016 installed and various Libre- and OpenOffice versions.
ᐧ

2018-01-09 13:44 GMT+01:00 Joseph D. Wagner <jo...@josephdwagner.info>:

> Trying to chase down the differences between LibreOffice and Word has been
> frustrating, to say the least.
>
> To be honest, I am even more lost in ODFDOM than I am in Simple API.  I
> will try to take a look at the regression tests, but you may be
> overestimating my caliber as a programmer.
>
> I was hoping for just a little more help, but I'll try.
>
> Joseph D. Wagner
>
> -----Original Message-----
> From: Svante Schubert [mailto:svante.schubert@gmail.com]
> Sent: Tuesday, January 9, 2018 1:50 AM
> To: odf-dev@incubator.apache.org
> Subject: Re: Trouble with Footer Font Size - Adding Page X of Y to Footer
>
> Hello Joeseph,
>
> the first interesting thing to mention from ODF perspective is that the
> text of a footer and header is part of the page style within the styles.xml.
> Therefore any automatic styles being used for header and footer are not
> within the content.xml, but styles.xml - and only those.
> Let us not discuss the pro and con of this design, let me simply state,
> that I am not a fan of it of the overall result :)
>
> In your example, it seems that the LibreOffice styles are not connecting
> to each other, ie. a32e835 at the paragraph and a2b0e5e at the paragraph
> style should be the same string, but this might be as well a copy paste
> error from different files.
> To alter the ODF styles, you might want to go a level deeper into the
> ODFDOM project <http://incubator.apache.org/odftoolkit/odfdom/
> ProjectOverview.html>.
> Again take a look at the regression tests, where to find the desired
> elements.
>
> In general, every XML element has a generated DOM class with the prefix
> local name and either Attribute or Element suffix, for instance,
> TextSpanElement class.
>
> Hope it helps!
>
> Cheers,
> Svante
> ᐧ
>
> 2018-01-09 3:32 GMT+01:00 Joseph D. Wagner <jo...@josephdwagner.info>:
>
> > I am trying to add a "Page X of Y" footer to the bottom of a text
> > document.  I got everything working *EXCEPT* the font size.
> >
> > I wrote this code:
> >
> >         // Adds Page X of Y to the footer
> >         Font fontsmaller = new Font("Arial",
> > StyleTypeDefinitions.FontStyle.REGULAR,
> > 8);
> >         Footer footer = doc.getFooter();
> >         Section footersection = footer.appendSection("Page Numbers");
> >         Paragraph footerparagraph = footersection.addParagraph("Pa
> > ge\u00A0");
> >         footerparagraph.setFont(fontsmaller); // Doesn't work here
> > either Fields.createCurrentPageNumberField(
> footerparagraph.getOdfElement());
> >         footerparagraph.appendTextContent("\u00A0of\u00A0");
> > Fields.createPageCountField(footerparagraph.getOdfElement());
> >         footerparagraph.setFont(fontsmaller); // Doesn't work here
> > either
> >
> > It seems to work EXCEPT the part of changing the font size.  In Word,
> > the font ends up being the default size of 12.  (Works as expected in
> > LibreOffice.)
> >
> > Interesting, counterexample.  It works when I set the font larger,
> > like 16, but it doesn't work when I set the font smaller, like 10 or 8.
> >
> > I performed a diff comparison on the output form odftoolkit(-) and the
> > output from Word(+).  It seems the key difference is lines like these
> > in
> > styles.xml:
> >
> > -    <style:style style:family="paragraph" style:name="a2b0e5e">
> > -      <style:paragraph-properties fo:text-align="center"
> > style:line-break="strict" style:punctuation-wrap="hanging"
> > style:text-autospace="ideograph-alpha" style:writing-mode="page"/>
> > -      <style:text-properties fo:color="#000000" fo:country="US"
> > fo:font-size="10.0pt" fo:language="en" style:font-name="Courier New"
> > style:font-name-asian="Lucida Sans Unicode"
> > style:font-name-complex="Tahom a"
> > style:font-size-asian="12pt" style:font-size-complex="12pt"/>
> > +    <style:style style:name="P2" style:parent-style-name="Normal"
> > style:family="paragraph">
> > +      <style:paragraph-properties fo:text-align="center"/>
> > +      <style:text-properties style:font-name="Courier New"/>
> > +    </style:style>
> > +    <style:style style:name="T3" style:parent-style-name="
> DefaultParagraphFont"
> > style:family="text">
> > +      <style:text-properties style:font-name="Courier New"
> > fo:color="#FF0000" fo:font-size="8pt" style:font-size-asian="8pt"
> > style:font-size-complex="8pt"/>
> > +    </style:style>
> > +    <style:style style:name="T4" style:parent-style-name="
> DefaultParagraphFont"
> > style:family="text">
> > +      <style:text-properties style:font-name="Courier New"
> > fo:color="#FF0000" fo:font-size="8pt" style:font-size-asian="8pt"
> > style:font-size-complex="8pt"/>
> > +    </style:style>
> > +    <style:style style:name="T5" style:parent-style-name="
> DefaultParagraphFont"
> > style:family="text">
> > +      <style:text-properties style:font-name="Courier New"
> > fo:color="#FF0000" fo:font-size="8pt" style:font-size-asian="8pt"
> > style:font-size-complex="8pt"/>
> > +    </style:style>
> > +    <style:style style:name="T6" style:parent-style-name="
> DefaultParagraphFont"
> > style:family="text">
> > +      <style:text-properties style:font-name="Courier New"
> > fo:color="#FF0000" fo:font-size="8pt" style:font-size-asian="8pt"
> > style:font-size-complex="8pt"/>
> >      </style:style>
> >
> >
> > -      <style:footer>
> > -        <text:section text:display="true" text:name="Page Numbers"
> > text:style-name="aec74e3">
> > -          <text:p text:style-name="a32e835">Page
> <text:span><text:page-number
> > style:num-format="" text:select-page="current"/> o f
> > </text:span><text:span><text:page-count style:num-format=""/></text:sp
> > an></text:p>
> > -        </text:section>
> > -      </style:footer>
> >
> > +      <style:footer>
> > +        <text:p text:style-name="Normal">
> > +          <text:span text:style-name="T3">Page </text:span>
> > +          <text:span text:style-name="T4">
> > +            <text:page-number text:fixed="false">1</text:page-number>
> > +          </text:span>
> > +          <text:span text:style-name="T5"> of </text:span>
> > +          <text:span text:style-name="T6">
> > +            <text:page-count>14</text:page-count>
> > +          </text:span>
> > +        </text:p>
> > +      </style:footer>
> >
> > Unfortunately, I don't know what code I should write to force
> > odftoolkit to generate appropriate styles and text properties fields.
> >
> > Could someone please help me figure this one out?
> >
> > Thanks.
> >
> > Joseph D. Wagner
> >
> >
>
>

RE: Trouble with Footer Font Size - Adding Page X of Y to Footer

Posted by "Joseph D. Wagner" <jo...@josephdwagner.info>.
Trying to chase down the differences between LibreOffice and Word has been frustrating, to say the least.

To be honest, I am even more lost in ODFDOM than I am in Simple API.  I will try to take a look at the regression tests, but you may be overestimating my caliber as a programmer.  

I was hoping for just a little more help, but I'll try.

Joseph D. Wagner

-----Original Message-----
From: Svante Schubert [mailto:svante.schubert@gmail.com] 
Sent: Tuesday, January 9, 2018 1:50 AM
To: odf-dev@incubator.apache.org
Subject: Re: Trouble with Footer Font Size - Adding Page X of Y to Footer

Hello Joeseph,

the first interesting thing to mention from ODF perspective is that the text of a footer and header is part of the page style within the styles.xml.
Therefore any automatic styles being used for header and footer are not within the content.xml, but styles.xml - and only those.
Let us not discuss the pro and con of this design, let me simply state, that I am not a fan of it of the overall result :)

In your example, it seems that the LibreOffice styles are not connecting to each other, ie. a32e835 at the paragraph and a2b0e5e at the paragraph style should be the same string, but this might be as well a copy paste error from different files.
To alter the ODF styles, you might want to go a level deeper into the ODFDOM project <http://incubator.apache.org/odftoolkit/odfdom/ProjectOverview.html>.
Again take a look at the regression tests, where to find the desired elements.

In general, every XML element has a generated DOM class with the prefix local name and either Attribute or Element suffix, for instance, TextSpanElement class.

Hope it helps!

Cheers,
Svante
ᐧ

2018-01-09 3:32 GMT+01:00 Joseph D. Wagner <jo...@josephdwagner.info>:

> I am trying to add a "Page X of Y" footer to the bottom of a text 
> document.  I got everything working *EXCEPT* the font size.
>
> I wrote this code:
>
>         // Adds Page X of Y to the footer
>         Font fontsmaller = new Font("Arial", 
> StyleTypeDefinitions.FontStyle.REGULAR,
> 8);
>         Footer footer = doc.getFooter();
>         Section footersection = footer.appendSection("Page Numbers");
>         Paragraph footerparagraph = footersection.addParagraph("Pa 
> ge\u00A0");
>         footerparagraph.setFont(fontsmaller); // Doesn't work here 
> either Fields.createCurrentPageNumberField(footerparagraph.getOdfElement());
>         footerparagraph.appendTextContent("\u00A0of\u00A0");
> Fields.createPageCountField(footerparagraph.getOdfElement());
>         footerparagraph.setFont(fontsmaller); // Doesn't work here 
> either
>
> It seems to work EXCEPT the part of changing the font size.  In Word, 
> the font ends up being the default size of 12.  (Works as expected in
> LibreOffice.)
>
> Interesting, counterexample.  It works when I set the font larger, 
> like 16, but it doesn't work when I set the font smaller, like 10 or 8.
>
> I performed a diff comparison on the output form odftoolkit(-) and the 
> output from Word(+).  It seems the key difference is lines like these 
> in
> styles.xml:
>
> -    <style:style style:family="paragraph" style:name="a2b0e5e">
> -      <style:paragraph-properties fo:text-align="center"
> style:line-break="strict" style:punctuation-wrap="hanging"
> style:text-autospace="ideograph-alpha" style:writing-mode="page"/>
> -      <style:text-properties fo:color="#000000" fo:country="US"
> fo:font-size="10.0pt" fo:language="en" style:font-name="Courier New"
> style:font-name-asian="Lucida Sans Unicode" 
> style:font-name-complex="Tahom a"
> style:font-size-asian="12pt" style:font-size-complex="12pt"/>
> +    <style:style style:name="P2" style:parent-style-name="Normal"
> style:family="paragraph">
> +      <style:paragraph-properties fo:text-align="center"/>
> +      <style:text-properties style:font-name="Courier New"/>
> +    </style:style>
> +    <style:style style:name="T3" style:parent-style-name="DefaultParagraphFont"
> style:family="text">
> +      <style:text-properties style:font-name="Courier New"
> fo:color="#FF0000" fo:font-size="8pt" style:font-size-asian="8pt"
> style:font-size-complex="8pt"/>
> +    </style:style>
> +    <style:style style:name="T4" style:parent-style-name="DefaultParagraphFont"
> style:family="text">
> +      <style:text-properties style:font-name="Courier New"
> fo:color="#FF0000" fo:font-size="8pt" style:font-size-asian="8pt"
> style:font-size-complex="8pt"/>
> +    </style:style>
> +    <style:style style:name="T5" style:parent-style-name="DefaultParagraphFont"
> style:family="text">
> +      <style:text-properties style:font-name="Courier New"
> fo:color="#FF0000" fo:font-size="8pt" style:font-size-asian="8pt"
> style:font-size-complex="8pt"/>
> +    </style:style>
> +    <style:style style:name="T6" style:parent-style-name="DefaultParagraphFont"
> style:family="text">
> +      <style:text-properties style:font-name="Courier New"
> fo:color="#FF0000" fo:font-size="8pt" style:font-size-asian="8pt"
> style:font-size-complex="8pt"/>
>      </style:style>
>
>
> -      <style:footer>
> -        <text:section text:display="true" text:name="Page Numbers"
> text:style-name="aec74e3">
> -          <text:p text:style-name="a32e835">Page <text:span><text:page-number
> style:num-format="" text:select-page="current"/> o f 
> </text:span><text:span><text:page-count style:num-format=""/></text:sp
> an></text:p>
> -        </text:section>
> -      </style:footer>
>
> +      <style:footer>
> +        <text:p text:style-name="Normal">
> +          <text:span text:style-name="T3">Page </text:span>
> +          <text:span text:style-name="T4">
> +            <text:page-number text:fixed="false">1</text:page-number>
> +          </text:span>
> +          <text:span text:style-name="T5"> of </text:span>
> +          <text:span text:style-name="T6">
> +            <text:page-count>14</text:page-count>
> +          </text:span>
> +        </text:p>
> +      </style:footer>
>
> Unfortunately, I don't know what code I should write to force 
> odftoolkit to generate appropriate styles and text properties fields.
>
> Could someone please help me figure this one out?
>
> Thanks.
>
> Joseph D. Wagner
>
>


Re: Trouble with Footer Font Size - Adding Page X of Y to Footer

Posted by Svante Schubert <sv...@gmail.com>.
Hello Joeseph,

the first interesting thing to mention from ODF perspective is that the
text of a footer and header is part of the page style within the
styles.xml.
Therefore any automatic styles being used for header and footer are not
within the content.xml, but styles.xml - and only those.
Let us not discuss the pro and con of this design, let me simply state,
that I am not a fan of it of the overall result :)

In your example, it seems that the LibreOffice styles are not connecting to
each other, ie. a32e835 at the paragraph and a2b0e5e at the paragraph style
should be the same string, but this might be as well a copy paste error
from different files.
To alter the ODF styles, you might want to go a level deeper into the ODFDOM
project <http://incubator.apache.org/odftoolkit/odfdom/ProjectOverview.html>.
Again take a look at the regression tests, where to find the desired
elements.

In general, every XML element has a generated DOM class with the prefix
local name and either Attribute or Element suffix, for instance,
TextSpanElement class.

Hope it helps!

Cheers,
Svante
ᐧ

2018-01-09 3:32 GMT+01:00 Joseph D. Wagner <jo...@josephdwagner.info>:

> I am trying to add a "Page X of Y" footer to the bottom of a text
> document.  I got everything working *EXCEPT* the font size.
>
> I wrote this code:
>
>         // Adds Page X of Y to the footer
>         Font fontsmaller = new Font("Arial", StyleTypeDefinitions.FontStyle.REGULAR,
> 8);
>         Footer footer = doc.getFooter();
>         Section footersection = footer.appendSection("Page Numbers");
>         Paragraph footerparagraph = footersection.addParagraph("Pa
> ge\u00A0");
>         footerparagraph.setFont(fontsmaller); // Doesn't work here either
> Fields.createCurrentPageNumberField(footerparagraph.getOdfElement());
>         footerparagraph.appendTextContent("\u00A0of\u00A0");
> Fields.createPageCountField(footerparagraph.getOdfElement());
>         footerparagraph.setFont(fontsmaller); // Doesn't work here either
>
> It seems to work EXCEPT the part of changing the font size.  In Word, the
> font ends up being the default size of 12.  (Works as expected in
> LibreOffice.)
>
> Interesting, counterexample.  It works when I set the font larger, like
> 16, but it doesn't work when I set the font smaller, like 10 or 8.
>
> I performed a diff comparison on the output form odftoolkit(-) and the
> output from Word(+).  It seems the key difference is lines like these in
> styles.xml:
>
> -    <style:style style:family="paragraph" style:name="a2b0e5e">
> -      <style:paragraph-properties fo:text-align="center"
> style:line-break="strict" style:punctuation-wrap="hanging"
> style:text-autospace="ideograph-alpha" style:writing-mode="page"/>
> -      <style:text-properties fo:color="#000000" fo:country="US"
> fo:font-size="10.0pt" fo:language="en" style:font-name="Courier New"
> style:font-name-asian="Lucida Sans Unicode" style:font-name-complex="Tahom
> a"
> style:font-size-asian="12pt" style:font-size-complex="12pt"/>
> +    <style:style style:name="P2" style:parent-style-name="Normal"
> style:family="paragraph">
> +      <style:paragraph-properties fo:text-align="center"/>
> +      <style:text-properties style:font-name="Courier New"/>
> +    </style:style>
> +    <style:style style:name="T3" style:parent-style-name="DefaultParagraphFont"
> style:family="text">
> +      <style:text-properties style:font-name="Courier New"
> fo:color="#FF0000" fo:font-size="8pt" style:font-size-asian="8pt"
> style:font-size-complex="8pt"/>
> +    </style:style>
> +    <style:style style:name="T4" style:parent-style-name="DefaultParagraphFont"
> style:family="text">
> +      <style:text-properties style:font-name="Courier New"
> fo:color="#FF0000" fo:font-size="8pt" style:font-size-asian="8pt"
> style:font-size-complex="8pt"/>
> +    </style:style>
> +    <style:style style:name="T5" style:parent-style-name="DefaultParagraphFont"
> style:family="text">
> +      <style:text-properties style:font-name="Courier New"
> fo:color="#FF0000" fo:font-size="8pt" style:font-size-asian="8pt"
> style:font-size-complex="8pt"/>
> +    </style:style>
> +    <style:style style:name="T6" style:parent-style-name="DefaultParagraphFont"
> style:family="text">
> +      <style:text-properties style:font-name="Courier New"
> fo:color="#FF0000" fo:font-size="8pt" style:font-size-asian="8pt"
> style:font-size-complex="8pt"/>
>      </style:style>
>
>
> -      <style:footer>
> -        <text:section text:display="true" text:name="Page Numbers"
> text:style-name="aec74e3">
> -          <text:p text:style-name="a32e835">Page <text:span><text:page-number
> style:num-format="" text:select-page="current"/> o
> f </text:span><text:span><text:page-count style:num-format=""/></text:sp
> an></text:p>
> -        </text:section>
> -      </style:footer>
>
> +      <style:footer>
> +        <text:p text:style-name="Normal">
> +          <text:span text:style-name="T3">Page </text:span>
> +          <text:span text:style-name="T4">
> +            <text:page-number text:fixed="false">1</text:page-number>
> +          </text:span>
> +          <text:span text:style-name="T5"> of </text:span>
> +          <text:span text:style-name="T6">
> +            <text:page-count>14</text:page-count>
> +          </text:span>
> +        </text:p>
> +      </style:footer>
>
> Unfortunately, I don't know what code I should write to force odftoolkit
> to generate appropriate styles and text properties fields.
>
> Could someone please help me figure this one out?
>
> Thanks.
>
> Joseph D. Wagner
>
>