[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: Re: [docbook-apps] adding a cover image to the PDF
thanks. That did the trick. By the way, just for completeness, I will say that I initially got "object is not bound" error which went away after I added a reference to xmlns:fo to your stylesheet/customization layer like below. <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns="http://www.w3.org/1999/xhtml" version="1.0"> rj On Wed, Aug 25, 2010 at 1:41 PM, Bob Stayton <bobs@sagehill.net> wrote: > Sorry, I answered too quickly and didn't check my work. > > I'll offer my explanation of how this should work. In FO output, all > content needs to be inside a fo:page-sequence, and fo:page-sequences do not > nest. In the template that matches on "book" in fo/division.xsl, several > fo:page-sequences may be created. The first one would be for the > front.cover, if that template is not empty. The second fo:page-sequence is > for the titlepages, created by the call to "book.titlepage". These are > followed by separate page-sequences for dedication, acknowledgements, and > TOCs (if they are included). Then the book's content is processed, which > generates a separate page-sequence for each chapter and other component. > Then a final page-sequence may be generated by the "back.cover" template, > if that template is not empty. > > So the front.cover page-sequence is independent of the titlepage > page-sequence. It needs to have all the components of a fo:page-sequence, > which is why the utility template named "page.sequence" was created. It > handles all the details, you just have to provide the variable information > through the template parameters. That variable information includes a) the > content and b) setting which fo:page-sequence-master should be used (which > determines margins and such for a given page-sequence). The > master-reference parameter in my suggestion selects "titlepage" from among > the set of fo:page-master-sequences defined in fo/pagesetup.xsl. > > The front.cover page-sequence also needs to have valid FO content, and > that's where I goofed. I put a DocBook mediaobject in there, and that is > most decidedly not a valid FO element. Instead of <mediaobject> I should > have put the FO elements that would have been generated by the stylesheet > when a DocBook mediaobject is processed. Duh. > > So here is a better example: > > <xsl:template name="front.cover"> > <xsl:call-template name="page.sequence"> > <xsl:with-param name="master-reference">titlepage</xsl:with-param> > <xsl:with-param name="content"> > <fo:block text-align="center" [add any other block properties here]> > <fo:external-graphic src="url(fo-images/criteria-tag312.jpg)" > content-width="7cm" [add any other image properties here]/> > </fo:block> > </xsl:with-param> > </xsl:call-template> > </xsl:template> > > > Bob Stayton > Sagehill Enterprises > bobs@sagehill.net > > > ----- Original Message ----- From: "Robert Nagle" > <idiotprogrammer@gmail.com> > To: "Bob Stayton" <bobs@sagehill.net> > Cc: <docbook-apps@lists.oasis-open.org> > Sent: Wednesday, August 25, 2010 10:39 AM > Subject: Re: [docbook-apps] adding a cover image to the PDF > > > That didn't work with a strange fo message. > > net.sf.saxon.trans.XPathException: > org.apache.fop.fo.ValidationException: "fo:flow" is missing child > elements. Required content model: marker* (%block;)+ (See position > 1:-1) > > Looking at the example on 13.12, I'm guessing that you are assuming > that I have already created a titlepage template and added it to my > customization file. I have not done this (although I plan to). > http://www.sagehill.net/docbookxsl/PageDesign.html#CustomPageSequences > > If that is not the case, I'm afraid I really have no idea what the > following line means: > > <xsl:with-param name="master-reference">titlepage</xsl:with-param> > > Rather than ask you (or someone else) to explain, let me offer my > (probably wrong) guess about what the code you provided does, and you > can tell me how wrong I am. Are you ready to laugh?! > > ********************************PROBABLY WRONG! > Docbook lets you add a statement to your customization layer file to > invoke a blank template called front.cover. In this front.cover > template, you can add extra information which will alter the titlepage > template and in this case, specifically a component of titlepage > called page.sequence. This page.sequence subtemplate will alter the > xsl-fo output from the entire docbook project so that any raw > docbook xml appearing inside the <xsl:with-param name="content"> will > slip neatly inside the titlepage template. > > > ********************************END OF PROBABLY WRONG! > > Have I told you I am good at writing fiction? :) > > Robertr > > > > > > > On Wed, Aug 25, 2010 at 11:39 AM, Bob Stayton <bobs@sagehill.net> wrote: >> >> Hi Robert, >> The existing template that matches on book in fo/division.xsl already >> calls >> the template named "front.cover", so you don't need that bit. For the >> other >> template, I think all you need to add is putting the content into a >> page-sequence, which can be done with the utility template named >> "page.sequence" created for that purpose. An example of its usage is here: >> >> http://www.sagehill.net/docbookxsl/PageDesign.html#CustomPageSequences >> >> In your case, it might look like this: >> >> <xsl:template name="front.cover"> >> <xsl:call-template name="page.sequence"> >> <xsl:with-param name="master-reference">titlepage</xsl:with-param> >> <xsl:with-param name="content"> >> <mediaobject ... >> </xsl:with-param> >> </xsl:call-template> >> </xsl:template> >> >> Bob Stayton >> Sagehill Enterprises >> bobs@sagehill.net >> >> >> ----- Original Message ----- From: "Robert Nagle" >> <idiotprogrammer@gmail.com> >> To: <docbook-apps@lists.oasis-open.org> >> Sent: Wednesday, August 25, 2010 8:13 AM >> Subject: [docbook-apps] adding a cover image to the PDF >> >> >>> Hi, there I need to produce a pre-release of my print book as a PDF. >>> It's due tomorrow. It won't be "totally ready" (and I have not added >>> a title page), but I just wanted to include a jpg for the page that >>> will be the front cover. >>> >>> I'm using Apache FOP, although eventually I'll be using XEP. >>> >>> This seems hard. >>> >>> Reading through the docs and the mailing list, I tried to do this in >>> my xslt file: >>> >>> ***************************************** >>> <xsl:template name="front.cover"> >>> <mediaobject> >>> >>> <imageobject role="fo"> >>> <imagedata fileref="fo-images/criteria-tag312.jpg" >>> contentwidth="7cm"/> >>> </imageobject> >>> </mediaobject> >>> >>> </xsl:template> >>> >>> <xsl:template match="book"> >>> <xsl:call-template name="front.cover"/> >>> <xsl:apply-imports/> >>> </xsl:template> >>> >>> >>> ***************************************************************************** >>> I'm sure I'm missing some subtlety here, but shouldn't be easy as this? >>> >>> One other thought is that perhaps front.cover needs to be in fo, but >>> frankly I have no idea how to go about that. >>> >>> This is stuff I need to learn pretty soon anyway, but for tomorrow is >>> there a simple and dirty solution to this? >>> >>> in my index.xml I have this at the top: >>> >>> <info> >>> <title>My Book Title </title> >>> <author> >>> <personname> >>> <firstname>Robert </firstname> >>> <surname>Nagle </surname> >>> </personname> >>> </author> >>> <!--<cover> >>> <mediaobject> >>> >>> <imageobject role="fo"> >>> <imagedata fileref="fo-images/criteria-tag312.jpg" >>> contentwidth="7cm"/> >>> </imageobject> >>> </mediaobject> >>> </cover>--> >>> ***************************** I tried referencing it here also without >>> success >>> </info> >>> >>> >>> >>> -- >>> Robert Nagle >>> 12777 Ashford Point Dr #1417 >>> Houston, Texas 77082 >>> 713 893 3424 >>> htpt://www.robertnagle.info >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: docbook-apps-unsubscribe@lists.oasis-open.org >>> For additional commands, e-mail: docbook-apps-help@lists.oasis-open.org >>> >>> >>> >> >> > > > > -- > Robert Nagle > 12777 Ashford Point Dr #1417 > Houston, Texas 77082 > 713 893 3424 > htpt://www.robertnagle.info > > --------------------------------------------------------------------- > To unsubscribe, e-mail: docbook-apps-unsubscribe@lists.oasis-open.org > For additional commands, e-mail: docbook-apps-help@lists.oasis-open.org > > > > -- Robert Nagle 12777 Ashford Point Dr #1417 Houston, Texas 77082 713 893 3424 htpt://www.robertnagle.info
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]