

Apache FOPの初心者です。

画像を含むPDFをApache FOPを使って作成しています。  
コマンドプロンプトで、オプション指定なしで、foからpdfを作成すると、普通にpng画像を認識してpdfを作成してくれました。

コマンドプロンプトへの入力：

[code]

    fop test.fo test.pdf
    
[/code]

foの内容（画像指定部分）

[code]

    <fo:block>
     <fo:external-graphic 
        src="sample.png" 
        width="100%" 
        content-width="scale-to-fit" 
        content-height="100%" 
        text-align="center"/>
    </fo:block>
    
[/code]

ところが、オプションを指定※すると、pngファイルを認識してくれません。  
画像部分の抜けたpdfが作成されます。  
※日本語フォントが使用したいので、オプションでxconfファイルを指定しました。

コマンドプロンプトへの入力：

[code]

    fop -c conf\fop.xconf -fo test.fo -pdf test.pdf
    
[/code]

エラーメッセージ：

[code]

    10月 28, 2020 XX:XX:XX 午後 org.apache.fop.events.LoggingEventListener processEven
    重大: Image not found. URI: sample.png. (See position XXX:XX)
    10月 28, 2020 XX:XX:XX 午後 org.apache.fop.events.LoggingEventListener processEvent
    重大: Image not found. URI: sample.png. (No context info available)
    
[/code]

オプション指定なしでは作成できるので、パスの問題はないと思います。

fop.xconfの内容は、オリジナルのままです。  
fop.xconfを指定することで、何らかの初期設定が解除されてしまうのでしょうか。  
pngを認識するためには、「どこで」「どのような」指定が必要でしょうか。

何とぞ、よろしくお願いいたします。


CC BY-SA 4.0
2020-10-28T05:26:33.013
71556
2023-03-07T07:48:23.210
2020-10-28T05:50:43.550
3060
42505
question
xsl-fo
Apache FOPでPDF生成する際、外部ファイルのpngを認識しない。


基にしたと思われる付属のfop.xconfには、FO中のパスのベースURLを指定する設定が存在します。

[code]

      <!-- Base URL for resolving relative URLs -->
      <base>.</base>
    
[/code]

`src="hoge.png"`のような指定は相対パスとなっていますので、このベースURL設定の影響を受けます。  
fop.xconf読み込み有無で画像ファイルが見つからなくなっているとすればここではないかと思います。  
FO内でpngを指定している箇所を絶対パスに変更するか、このbase URLを処理に合わせたものに変更してみてください。


CC BY-SA 4.0
2021-10-20T17:40:40.340
83194
2021-10-20T17:40:40.340
38146
71556
answer