繁体   English   中英

使用Exist-db中的XSL-FO从XQuery生成PDF

[英]Generate PDF from XQuery using XSL-FO in Exist-db

我有一点问题......

但首先:

这是我的XML文件:

    <?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE akweny SYSTEM "akweny.dtd">
<akweny>
    <akwen>
        <nazwa>Atlantycki</nazwa>
        <typ>ocean</typ>
        <powierzchnia>106450</powierzchnia>
        <akweny>
            <akwen>
                <nazwa>Północne</nazwa>
                <typ>morze</typ>
                <powierzchnia>750</powierzchnia>
            </akwen>
            <akwen>
                <nazwa>Batyckie</nazwa>
                <typ>morze</typ>
                <powierzchnia>386</powierzchnia>
                <akweny>
                    <akwen>
                        <nazwa>Botnicka</nazwa>
                        <typ>zatoka</typ>
                        <powierzchnia>117</powierzchnia>
                    </akwen>
                </akweny>
            </akwen>
        </akweny>
    </akwen>
    <akwen>
        <nazwa>Spokojny</nazwa>
        <typ>ocean</typ>
        <powierzchnia>179700</powierzchnia>
    </akwen>
</akweny>

如何使用Xquery生成PDF文件?

我有这样的:

<table border="1" width="100%">
    <th>Podrzędne</th><th>Nazwa</th><th>Typ</th><th>Powierzchnia</th><th>Edycja</th>
        { 
       let $nodes := doc('/db/Dane/akweny.xml')//akweny[ancestor::*/nazwa="Atlantycki"]
        for $x in $nodes/*
        let $nazwa := $x/nazwa/text()
        let $typ := $x/typ/text()
        let $powierzchnia := $x/powierzchnia/text()
            return 
            <tr>
    <th><img src="/exist/apps/Obrazki/lupa.jpg" alt="Podrzedny" /></a></th>
                <th bgcolor="#F46978">{$nazwa}</th>
                <th>{$typ}</th>
                <th>{$powierzchnia}</th>
<th>Edytuj</th>
            </tr>

因此,单击PRINT按钮后必须生成不太好的文件...

任何消化? 我正在研究它超过一个星期,我无法处理它的突然出现...

eXist-db可以使用XSL-FO模块生成PDF,默认情况下,XSL-FO模块配置为使用Apache FOP。 我们的想法是,如果您可以将XML转换为XSL-FO,那么您可以将XSL-FO传递给XSL-FO模块,然后XSL-FO模块将为您生成PDF。 该模块的功能记录在http://exist-db.org/exist/apps/fundocs/view.html?uri=http://exist-db.org/xquery/xslfo中 默认情况下不启用此模块,因此您需要执行以下操作:

  1. 如果正在运行,请退出eXist-db。

  2. 编辑$EXIST_HOME/extensions/local.build.properties (或者,如果您没有此文件,请复制该目录中的build.properties文件,并重命名重复的local.build.properties )以转换include.module.xslfo = falseinclude.module.xslfo = falseinclude.module.xslfo = true

  3. 使用build.sh rebuild重建eXist-db(或在Windows上build.sh rebuild build.bat rebuild

  4. 取消注释conf.xml中的XSL-FO模块,该块以<module uri="http://exist-db.org/xquery/xslfo" class="org.exist.xquery.modules.xslfo.XSLFOModule">

  5. 重启eXist-db

  6. 现在您可以使用xslfo:render()函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM