xmlgraphics-fop-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Michel Krämer <michel.krae...@googlemail.com>
Subject Re: Place image at top of page
Date Tue, 29 Nov 2016 06:34:59 GMT
Frank,

Thanks for trying. It didn't work for me either. Here's an example that seems to work in other
renderers but not in FOP:
http://www.herongyang.com/XSL-FO/Float-Add-xsl-before-float-Separator.html

That's why I said earlier I suspect the float-before thing is not fully implemented yet. 

In the meantime I got it working with a really bad hack:
https://github.com/michel-kraemer/fop/commit/be163d8f103568bf63629e90949a95250ca29063

My code moves any footnote containing an image to the top of the page and moves the body down
accordingly.

This hack is really bad however. The output "looks" exactly how I want it to at least, but
I'll probably go to programmer's hell for this eventually. So, I'd rather like to do it right.
Are there any FOP developers here on this mailing list or should I post to the dev list instead?

Michel


> On 28 Nov 2016, at 18:27, Frank Hirsch <frank.hirsch@mac.com> wrote:
> 
> Sorry, I thought there would be a way to use fo:float and of:block. I tried myself and
did not succeed.
> 
> Best,
> Frank
> 
>> Am 28.11.2016 um 17:10 schrieb Csaba Nánai <szeak33@gmail.com>:
>> 
>> Hi
>> 
>> You have right. Só in fop the flow ás its name is nőt paged. It paginating át
rendering time. You can using the sequences ás ie ms word but zhese can be more complex.
You can also playing with forced page braking before or after a paragraph or block-container
table etc.
>> 
>> Só you have many chamce tó do It bit you cannot put something exactly to a nimbered
page becose fop not page oriented.
>> 
>> Bye szeak
>> 
>> 2016. nov. 28. 15:44 ezt írta ("Michel Krämer" <michel.kraemer@googlemail.com>):
>> Hi Szeak!
>> 
>> This works! Thank you so much.
>> 
>> Do I understand it correctly that I need to know in advance on which page my figure
appears? So if I need it on page 100 I will have to repeat <fo:single-page-master-reference
master-reference="content"/> 99 times?
>> 
>> I'm asking because I'm generating a rather large document from DocBook using XSLT.
There are many figures on different pages and I want to put some of them to the top of their
respective page. I guess there is no easy solution for this with FOP, right?
>> 
>> Michel
>> 
>> 
>> > On 28 Nov 2016, at 14:04, Szeak (Register Man) <szeak33@gmail.com> wrote:
>> >
>> > Hi,
>> >
>> > My solution for your need is:
>> >
>> > <fo:layout-master-set>
>> >        <fo:simple-page-master master-name="content" page-height="297mm" page-width="210mm"
margin="0.2in">
>> >            <fo:region-body>
>> >            </fo:region-body>
>> >        </fo:simple-page-master>
>> >        <fo:simple-page-master master-name="content-with-header" page-height="297mm"
page-width="210mm" margin="0.2in">
>> >            <fo:region-body margin-top="2.5in"/>
>> >            <fo:region-before extent="2.5in"/>
>> >        </fo:simple-page-master>
>> >
>> >        <fo:page-sequence-master master-name="mixed-content">
>> >            <fo:single-page-master-reference master-reference="content"/>
>> >            <fo:single-page-master-reference master-reference="content-with-header"/>
>> >            <fo:repeatable-page-master-reference master-reference="content"/>
>> >        </fo:page-sequence-master>
>> >    </fo:layout-master-set>
>> >    <fo:page-sequence master-reference="mixed-content">
>> >        <fo:static-content flow-name="xsl-region-before">
>> >            <fo:block font-size="11pt" font-style="italic" font-weight="normal"
hyphenate="false" keep-with-previous.within-column="always" line-stacking-strategy="font-height"
space-after.maximum="1.7em" space-after.minimum="1.3em" space-after.optimum="1.5em" space-before.maximum="0em"
space-before.minimum="0em" space-before.optimum="0em" text-indent="0pt">
>> >                Figure 3.1 Layers of code in a complex software architecture
>> >            </fo:block>
>> >            <fo:block background-color="red" id="img-layers-of-code" keep-together.within-column="always"
text-align="center">
>> >                <fo:block id="d69e465" text-align="center">
>> >                    <fo:external-graphic content-height="auto" content-width="66%"
height="auto" src="url(https://placeholdit.imgix.net/~text?txtsize=33&amp;txt=350%C3%97150&amp;w=350&amp;h=150&amp;fm=png)"
width="auto">
>> >                    </fo:external-graphic>
>> >                </fo:block>
>> >                <fo:block font-size="11pt" font-style="italic" font-weight="normal"
hyphenate="false" keep-with-previous.within-column="always" line-stacking-strategy="font-height"
space-after.maximum="1.7em" space-after.minimum="1.3em" space-after.optimum="1.5em" space-before.maximum="0em"
space-before.minimum="0em" space-before.optimum="0em" text-indent="0pt">
>> >                    Figure 1 Lorem ipsum dolor sit amet
>> >                </fo:block>
>> >            </fo:block>
>> >        </fo:static-content>
>> >        <fo:flow flow-name="xsl-region-body">
>> >
>> > ....  the content of body
>> >
>> > Bye
>> >
>> > 2016-11-28 13:18 keltezéssel, Michel Krämer írta:
>> >>> If you want displaying the image exactly on top of the second page?
>> >> Yes, that's what I want! :-) I want to place an image at the top of a page,
no matter how many paragraphs I have. I want to place it at the top of the very page, where
I put the image, just like you do it in latex with
>> >>
>> >> begin{figure}[t!]
>> >> …
>> >> \end{figure}
>> >>
>> >>> I can help you in this.
>> >> That's very much appreciated. Thank you so much!
>> >>
>> >> Michel
>> >>
>> >>
>> >>> On 28 Nov 2016, at 13:07, Szeak (Register Man) <szeak33@gmail.com>
wrote:
>> >>>
>> >>> Hi,
>> >>>
>> >>> If you want placing the image after 20. paragraph, why define it between
22. and 23?
>> >>> Or
>> >>> If you want displaying the image exactly on top of the second page?
>> >>>
>> >>> So if you want displaying the image exactly on top of the second page:
>> >>> You need to define a bit more complex page-masters as now. I can help
you in this.
>> >>>
>> >>> Don't hesitate to answer.
>> >>>
>> >>> Bye, Szeak
>> >>>
>> >>> 2016-11-28 12:21 keltezéssel, Michel Krämer írta:
>> >>>> Hi Szeak,
>> >>>>
>> >>>> Thanks a lot! This sounds very promising indeed. I can't get it
to work, however.
>> >>>>
>> >>>> If I put <fo:flow flow-name="xsl-region-before"> inside my
page-sequence definition I get the following error:
>> >>>>
>> >>>> org.apache.fop.fo.ValidationException: For "fo:page-sequence", only
one "fo:flow" may be declared. (See position 222:48)
>> >>>>
>> >>>> If I create a new page-sequence and put it there FOP will end up
in an endless loop and won't stop generating pages.
>> >>>>
>> >>>> I'm not sure this is the right way, although it really sounds promising.
Maybe I'm just missing something. I uploaded my small example here:
>> >>>>
>> >>>> https://gist.github.com/michel-kraemer/af82f3e115afb877338a72fa34a539cf
>> >>>>
>> >>>> If you render it you'll see that there is an image between paragraphs
22 and 23. You'll also see that paragraph 20 breaks at the end of page 1 and continues at
page 2. I want to place the image at the top of page two, so right in the middle of paragraph
20.
>> >>>>
>> >>>> Any ideas?
>> >>>>
>> >>>> Thanks for your help!
>> >>>>
>> >>>> Michel
>> >>>>
>> >>>>
>> >>>>
>> >>>>> On 28 Nov 2016, at 11:48, Szeak (Register Man) <szeak33@gmail.com>
wrote:
>> >>>>>
>> >>>>> Hi,
>> >>>>>
>> >>>>> I don't think you need any code modifing in Java.
>> >>>>> It seems, you need a header for the page, if i understand good
your needs..
>> >>>>>
>> >>>>> So for display header correctly, you need to:
>> >>>>> 1. define an ie.: <fo:region-before extent="1in"/> in
simple-page-master definiton
>> >>>>>    you can define an exact name for it ie.: <fo:region-before
region-name="myHeader" extent="1in"/>
>> >>>>> 2. define an <fo:flow flow-name="xsl-region-before"> in
page-sequence definition
>> >>>>>    you can use the named definition by: <fo:flow flow-name="myHeader">
>> >>>>>
>> >>>>> That's it.
>> >>>>>
>> >>>>> Bye, Szeak
>> >>>>>
>> >>>>> 2016-11-25 17:11 keltezéssel, Michel Krämer írta:
>> >>>>>> Hi!
>> >>>>>>
>> >>>>>> I'm looking for a way to place an image at the top of the
page, just like you can do it in LaTeX:
>> >>>>>>
>> >>>>>> \begin{figure}[t!]
>> >>>>>>   ...
>> >>>>>> \end{figure}
>> >>>>>>
>> >>>>>> If I understand it correctly, you should be able to do this
with the fo:float object:
>> >>>>>>
>> >>>>>> <fo:float float="before">
>> >>>>>>   ...
>> >>>>>> </fo:float>
>> >>>>>>
>> >>>>>> I understand that FOP does not support the "before" value
yet.
>> >>>>>>
>> >>>>>> Is there a workaround to achieve the same thing? For example
by placing the image absolutely or something like that?
>> >>>>>>
>> >>>>>> I had a look at the code and it seems the feature is almost
implemented but not fully yet. There is a BeforeFloat class that is supposed to place blocks
in the before-float area, but even if I use <fo:float float="before"> this class never
receives any children. The float also disappears from the output PDF.
>> >>>>>>
>> >>>>>> If there is no workaround for my problem I would be very
interested to implement the solution myself. I'm a Java programmer and if anyone could give
me some pointers on where to start and what is missing in the current code I'd probably be
able to fill the gaps.
>> >>>>>>
>> >>>>>> Let me know what you think. Thank you so much!
>> >>>>>>
>> >>>>>> Cheers,
>> >>>>>> Michel
>> >>>>>>
>> >>>>>>
>> >>>>>> ---------------------------------------------------------------------
>> >>>>>> To unsubscribe, e-mail: fop-users-unsubscribe@xmlgraphics.apache.org
>> >>>>>> For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org
>> >>>>>>
>> >>>>> ---------------------------------------------------------------------
>> >>>>> To unsubscribe, e-mail: fop-users-unsubscribe@xmlgraphics.apache.org
>> >>>>> For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org
>> >>>>>
>> >>>> ---------------------------------------------------------------------
>> >>>> To unsubscribe, e-mail: fop-users-unsubscribe@xmlgraphics.apache.org
>> >>>> For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org
>> >>>>
>> >>>
>> >>> ---------------------------------------------------------------------
>> >>> To unsubscribe, e-mail: fop-users-unsubscribe@xmlgraphics.apache.org
>> >>> For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org
>> >>>
>> >>
>> >> ---------------------------------------------------------------------
>> >> To unsubscribe, e-mail: fop-users-unsubscribe@xmlgraphics.apache.org
>> >> For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org
>> >>
>> >
>> >
>> > ---------------------------------------------------------------------
>> > To unsubscribe, e-mail: fop-users-unsubscribe@xmlgraphics.apache.org
>> > For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org
>> >
>> 
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: fop-users-unsubscribe@xmlgraphics.apache.org
>> For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org
>> 
>> 
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: fop-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org


Mime
View raw message