0

OOTB PDF リライター コンポーネントを試しており、単純なユースケースで PDF を生成できますが、一部のシナリオでは機能しません。

シナリオ 1: ページのデータが 1 つのノードに格納されている場合に PDF を生成できます。シナリオ 2: ページが複数のノードを参照している場合、PDF を生成できません。

    <xsl:template match="jcr:content">
    <xsl:if test="@articleTitle">
        <fo:block font-size="30pt" 
            text-align="start" font-family="DinProLight">
            <xsl:value-of select="@articleTitle" />
        </fo:block>
    </xsl:if>

    <xsl:if test="@publishDate">
        <fo:block font-size="18pt" color="#777777" text-align="start" font-family="georgia;" 
        font-style="italic" padding-bottom="9px">
            <xsl:value-of select="concat(substring(@publishDate,9,2),'-',substring(@publishDate,7,2),substring(@publishDate,0,5))" />
        </fo:block>
    </xsl:if>

    <xsl:if test="@authorPath"> 
        <fo:block font-size="18pt" color="#777777"  padding="3px" text-align="start">
            <!--Below Code works fine -->
            <fo:external-graphic src="url('sling://etc/designs/XXXX/images/logo.jpg')" content-type="content-type:image/jpeg"/>         
            <!--Below Code Fails -->
            <xsl:value-of select="sling://content/XXXX/en/perspectives/tst_artcl/jcr:content@fullName"/>
        </fo:block>
    </xsl:if>


    <xsl:if test="@noOfViews">
        <fo:block font-size="11pt" color="#777777" text-align="right" font-family="arial" padding-bottom="9px" border-bottom="1px solid #777777">
            <xsl:value-of select="concat(@noOfViews,' Views')" />
        </fo:block>
    </xsl:if>
    <xsl:apply-templates />
</xsl:template>
4

1 に答える 1

0

デフォルトでの PDF 生成は、ノード (content/app/page.xml) のデフォルトの xml レンダリングを使用して機能しますが、複数のノードから情報を取得する必要があるため、独自の xml を作成することをお勧めします。

- PDF 拡張子と選択した resourceType を使用してサーブレットを登録し、必要なすべての情報を含む最も便利な構造の xml をレンダリングします。(サーブレット内で resourceResolver を使用して、必要なノードにアクセスできます)。

次に、pdf リライターは、デフォルトの xml 表現ではなく、xml 表現を使用します。

例えば

@SlingServlet(
    description = "Employee PDF",
    extensions = { "pdf" },
    resourceTypes = { "greatapp/page/employee" },
    methods = { "GET" })
 public class EmployeePDFServlet extends SlingSafeMethodsServlet {

   protected void doGet(final SlingHttpServletRequest request, final SlingHttpServletResponse response) throws ServletException,
        IOException {
     //generate an xml here
    }
 }
于 2013-08-01T13:40:46.927 に答える