You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-users@xmlgraphics.apache.org by Michel Krämer <mi...@googlemail.com> on 2016/12/03 10:07:25 UTC

Re: Place image at top of page

> I once did setup a project based on fop 1.0, I never had a requirement to update…
Thanks, Frank. I think this is what I'm going to do.

Cheers,
Michel

> On 29 Nov 2016, at 09:20, Frank Hirsch <fr...@mac.com> wrote:
> 
> Hi Michael,
> 
> If it works for you it might be a valid solution - I once did setup a project based on fop 1.0, I never had a requirement to update... but I am not an expert when it comes down to customization. At least I would not send you to hell ;-)
> 
> What I also did to achieve something I was not able to solve in FO (run tables across double page) was to use Area Tree: the FO was built on DIN A3 master pages and the cut into DIN A4 in a post process... But using the hack seems much more plausible to me in your case?
> 
> Best,
> Frank
> 
>> Am 29.11.2016 um 07:34 schrieb Michel Krämer <mi...@googlemail.com>:
>> 
>> 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 <fr...@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 <sz...@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" <mi...@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) <sz...@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) <sz...@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) <sz...@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
>> 
> 
> ---------------------------------------------------------------------
> 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