incubator-odf-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ian C <...@amham.net>
Subject Re: Blank Line Before Paragraph
Date Tue, 27 Aug 2013 09:40:49 GMT
Hi Alan,

you're right about the addPageBreak I need it for something I am working on
too.
And your workaround helped.

I will raise a bug report on it too.

Cheers,



On Mon, Aug 26, 2013 at 1:06 PM, Alan Knight <aa4fu73@gmail.com> wrote:

> Ian,
>
> I think there is another problem.  I looked at the source code for
> addPageBreak() and it puts the page break before the reference paragraph.
> Here is the work around I found to add a page break followed by a header as
> the first row of the new page:
>
>   private TextDocument odtFile;     // instantiated by the class
>
>   private void addNewPage(String text, int level) {
>     // Add an empty paragraph on the previous page to give the page break
>     // something to reference
>     Paragraph p0 = odtFile.addParagraph("");
>     try {
>       OdfContentDom dom = odtFile.getContentDom();
>       OdfOfficeAutomaticStyles styles = dom.getAutomaticStyles();
>       OdfStyle style = styles.newStyle(OdfStyleFamily.Paragraph);
>      // set break after paragraph not before
>
>
> style.newStyleParagraphPropertiesElement().setFoBreakAfterAttribute("page");
>       p0.getOdfElement().setStyleName(style.getStyleNameAttribute());
>
>       // Now that we've added a page break we can add the header paragraph
>       Paragraph p1 = odtFile.addParagraph(text);
>       p1.setTextContent(text);
>       if (level > 0) {
>         p1.applyHeading(true, level);
>       }
>     } catch (Exception ex) {
>
> Logger.getLogger(EMCReportGenerator.class.getName()).log(Level.SEVERE,
> null, ex);
>     }
>   }
>
> I think if addPageBreak() used setFoBreakAfterAttribute instead of
> setFoBreakBeforeAttribute, then the following Simple API code would work:
>
> odtFile.addPageBreak();
> odtFile.addParagraph(text).applyHeading(true, level);
>
> much nicer.
>
> Thanks for the help,
> Alan
>
>
>
>
>
> On Sun, Aug 25, 2013 at 5:35 AM, Ian C <ian@amham.net> wrote:
>
> > I have a work around for the header issue.
> >
> > It does seam that the Simple API is not working correctly?
> >
> > By default a header has a style name of  "Heading_20_1". The last number
> > reflects the level.
> >
> > So try
> >
> >         header.applyHeading();
> >         TextParagraphElementBase element = header.getOdfElement();
> >         element.setStyleName("Heading_20_1");
> >
> > Then the style name will be set and it should look like a header.
> >
> > However, something is wrong you should not have to resort to using the
> > underlying ODF Element.
> > Calling header.setStyleName("Heading_20_1"); does not seem to work
> either.
> >
> > Copying the Dev group, we should probably raise a bug report on this,
> > unless we are doing something wrong.
> >
> >
> >
> > On Sun, Aug 25, 2013 at 3:25 PM, Ian C <ian@amham.net> wrote:
> >
> > > Hi,
> > >
> > > I believe what is happening is...
> > >
> > > create new document - does so with an empty paragraph.
> > > addParagraph - appends after the empty.
> > >
> > > So you can do as above.
> > >
> > > Or I have...
> > >
> > >         TextDocument reportDoc = TextDocument.newTextDocument();
> > >         Paragraph firstEmpty = reportDoc.getParagraphByIndex(0, false);
> > >         firstEmpty.remove();
> > >         Paragraph header = Paragraph.newParagraph(reportDoc);
> > >
> > > And all seems well.
> > >
> > > Or better? Is simply to just use the firstEmpty, fill it and add others
> > > following it.
> > >
> > >         TextDocument reportDoc = TextDocument.newTextDocument();
> > >         Paragraph firstPara = reportDoc.getParagraphByIndex(0, false);
> > >         firstPara.appendTextContent(lead);
> > >         Paragraph nextPara = Paragraph.newParagraph(reportDoc);
> > >
> > > The heading issue I will check out later.
> > >
> > >
> > >
> > > On Fri, Aug 23, 2013 at 6:59 AM, Alan Knight <aa4fu73@gmail.com>
> wrote:
> > >
> > >> The following code doesn't have a blank line after a page break.
> > >>
> > >> doc.addPageBreak();
> > >> Paragraph p0 = doc.getParagraphByIndex(0, false);
> > >> p0.setTextContent("First Paragraph");
> > >> p0.applyHeading(true, 1);
> > >>
> > >> However, applyHeading isn't working.
> > >>
> > >> The following will apply heading level 1, but has the original problem
> > of
> > >> a
> > >> blank line before the paragraph.
> > >>
> > >> doc.addPageBreak();
> > >> doc.addParagraph("First Paragraph").applyHeading(true, 1);
> > >>
> > >>
> > >> Alan
> > >>
> > >>
> > >>
> > >> On Thu, Aug 22, 2013 at 1:51 PM, Alan Knight <aa4fu73@gmail.com>
> wrote:
> > >>
> > >> > It's not a style issue.  The second paragraph doesn't have the blank
> > >> > line.  If I turn on the non-printable characters view in Open
> Office,
> > I
> > >> see
> > >> > there are three paragraph marks.  One is on the blank line before
> > "First
> > >> > paragraph" and the other two are at the end of "First paragraph" and
> > >> > "Second paragraph".
> > >> > However, I did just find a work around.  If I replace the first
> > >> > addParagraph() with
> > >> >
> > >> > Paragraph p0 = doc.getParagraphByIndex(0, false);
> > >> > p0.setTextContent("First Paragraph");
> > >> >
> > >> > there is no more blank line.  Now to see if this works after calling
> > >> > addPageBreak();
> > >> >
> > >> > Thanks,
> > >> > Alan
> > >> >
> > >> >
> > >> >
> > >> > On Thu, Aug 22, 2013 at 3:22 AM, Rory O'Farrell <ofarrwrk@iol.ie>
> > >> wrote:
> > >> >
> > >> >> On Thu, 22 Aug 2013 03:04:37 -0400
> > >> >> Alan Knight <aa4fu73@gmail.com> wrote:
> > >> >>
> > >> >> > In the following code I get a blank line before the first
> > paragraph.
> > >> >> >
> > >> >> >     TextDocument doc = TextDocument.newTextDocument();
> > >> >> >     doc.addParagraph("First paragraph");
> > >> >> >     doc.addParagraph("Second paragraph");
> > >> >> >     doc.save("doc.odt");
> > >> >> >
> > >> >> > I also see this with a paragraph added after a
> > >> >> > TextDocument::addPageBreak();
> > >> >> >
> > >> >> > Does anyone know how to avoid the blank line?
> > >> >> >
> > >> >> > I'm using the latest version of the simple API (0.6).  However,
I
> > >> had to
> > >> >> > download a lot of additional jar files to make that version
run.
> > >>  Just
> > >> >> > downloading the 0.6 JAR files and running the example above
gives
> > me
> > >> a
> > >> >> > java.lang.NoClassDefFoundError:
> > >> org.apache.clerezza.utils.UriException.
> > >> >> > After downloading about 15 additional JAR files, I was able
to
> get
> > >> the
> > >> >> > example to run.
> > >> >> >
> > >> >> > Thanks,
> > >> >> > Alan
> > >> >>
> > >> >> I suspect you need to modify the Default paragraph style on the
> > target
> > >> >> computer to remove either the Spacing : Above paragraph or the
> > Spacing
> > >> :
> > >> >> below paragraph.
> > >> >>
> > >> >>
> > >> >> --
> > >> >> Rory O'Farrell <ofarrwrk@iol.ie>
> > >> >>
> > >> >
> > >> >
> > >>
> > >
> > >
> > >
> > > --
> > > Cheers,
> > >
> > > Ian C
> > >
> >
> >
> >
> > --
> > Cheers,
> >
> > Ian C
> >
>



-- 
Cheers,

Ian C

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message