• ベストアンサー

XSL-FOをつかってPDF出力

JavaServletのCocoonを使ってPDF出力したことはあるのですが xalanのようにコマンドラインでXSLとXMLを使ってhtmlを書き出すように コマンドラインでXMLからPDFへ出力する方法はないのでしょうか。 たぶんできる・・と思うのですが。

質問者が選んだベストアンサー

  • ベストアンサー
  • jo-ji
  • ベストアンサー率72% (26/36)
回答No.1

同じApache XMLにあるFOP(参考URL)ならば、コマンドラインでXMLをXSLを使ってPDFを出力することが可能です。 ただし、日本語フォントを使いたい場合には、設定をしなければならなかったはずで、ドキュメントに方法が書いてあったと思います。とりあえず試してみるだけならば、まずは英数字のみを含む文書で、試してみて下さい。 Cocoonを使って...という意味でしたら、申し訳ありませんが分かりません。

参考URL:
http://xml.apache.org/fop/index.html
jakarta
質問者

お礼

とりあえずサンプルでためしましたが % sh ./fop.sh foo.fo foo.pdf で簡単にいけました。 % sh ./fop.sh -xsl foo.xsl -xml foo.xml -pdf foo.pdf もいけますね。 書籍でみかけたことがなかったので参考になりました。 有り難うございます。

jakarta
質問者

補足

素早い回答ありがとうございます。 CocoonもFOPを使っていたと思うのですがこれは盲点でした。 時間ができたらドキュメントに目を通してみます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • XML→PDF出力

    WebページでXMLで表示している内容をPDFとして出力する方法を 教えて下さい。 XML→XSLT→XSL Formatting Object→XSL Formatter→表示 のようにするみたいですが、 Apacheのxerces-j、xalan-j、FOPなどを 用いて実際にはどのようなソース、手順で作成するのか知りたいです。 よろしくお願いします。

    • ベストアンサー
    • XML
  • XMLをxalanでXSL-FOに変換する

    book.xmlとbook.xslでbook.foに変換にxalanで実行しました。 >java org.apache.xalan.xslt.Process -in book.xml -xsl book.xsl -out book.fo ところが、以下のようにエラーが出ました。 Exception in thread "main" java.lang.ClassCastException: org.apache.xalan.res.XSLTErrorResources_ja at org.apache.xalan.xslt.Process.main(Process.java:209) 何が原因なのでしょうか?xalan-j_2_4_1のxalan.jarとxercesImpl.jarにはCLASSPATH設定をしています。 <book.xml> <?xml version="1.0" encoding="Shift_JIS" ?> <?xml:stylesheet type="text/xsl" href="book.xsl" ?> <書籍管理> <書籍情報 ID="1"> <書籍名>スタイルシート辞典 第2版</書籍名> <著者>安川英明</著者> <出版社>翔泳社</出版社> <価格>1800</価格> </書籍情報> ・・・ <書籍管理> 文字数が多くなってすべてbook.xslがかけませんでした。 テーブル形式で表示するようしたいのです。 <xsl:template match="書籍管理"><fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> ・・・ <fo:table> <fo:table-column column-width="50mm"/> ・・・ <fo:table-body><fo:table-row><fo:table-cell><fo:block>書籍名</fo:block></fo:table-cell>・・・</fo:table-row> <xsl:apply-templates/> </fo:table-body> </fo:table> </fo:flow></fo:page-sequence> </fo:root></xsl:template> <xsl:template match="書籍情報"> <fo:table-row><xsl:apply-templates/></fo:table-row> </xsl:template> <xsl:template match="書籍名"> <fo:table-cell><fo:block><xsl:value-of select='.'/></fo:block></fo:table-cell> </xsl:template>

    • ベストアンサー
    • XML
  • xsl-fo、tomcat cocoonでの印刷サイズについて

    aspよりxmlファイルを作成し、xsl-foを使用して、tomcat cocoonにてPDFを作成し、Webページ上に表示するというシステムを作成しています 一覧表を作成しているのですが、400件くらいまではPDFを表示できますが、500件を超えると「ファイルが壊れています」とのエラーが表示されます PDFに変換できる最大サイズが原因なのでしょうか? 解決法をお知りのかたはお教えください

    • 締切済み
    • XML
  • XSLで、XMLの空タグを制御したい。

    値がないXML文書に、 <exsample /> こう書かれてしまうものを、 <exsample></exsample> このように出力したいのですが、出来ずでした。 以下は、私のやり方です。 ■ XSL <?xml version="1.0" encoding="Shift_JIS"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xalan="http://xml.apache.org/xslt"> <xsl:output method="xml" encoding="Shift_JIS" indent="yes" xalan:indent-amount="4"/> <xsl:template match="/"> <xsl:copy-of select="."/> </xsl:template> </xsl:stylesheet> ■ XML <?xml version="1.0" encoding="Shift_JIS"?> <root> <section> <category> <exsample1>value</exsample1> <exsample /> </category> </section> </root> ご教授、よろしくお願いいたします。

    • ベストアンサー
    • XML
  • サーバー側で、XML,XSLを整形されたファイルを出力する方法?

    XMLについて、理解が浅いのですが ローカルでは XMLファイルとXSLファイルがあれば、 sabcmdを使えば、変換できますが、 例えば、WEB(CGI:Perl)でサーバーに XML,XSLファイルが合った場合に どのようにクライアント(ブラウザ)に出力させれば良いのでしょうか? サーバー側でxmlファイルとxslファイルを sabcmdで変換させて、結果を読み込んで出力させるのが筋でしょうか? いまいち理解していなくて済みません。

    • ベストアンサー
    • Perl
  • xalanが利用できません。

    XSLプロセッサのxalanが利用できません。 C:\j2sdk1.4.0_01\jre\lib\ext に xalan.jarをおいているんですが、 本には、XalanをMSDOSプロンプトから起動するには、 org.apache.xalan.xslt.Process -in <XMLファイル名> -xsl <XSLスタイルシート名> -out <結果ファイル名> と書いてあるんですが、実行すると以下のエラーが出ます。 'org.apache.xalan.xslt.Process' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 だれか、対処方法の分かる方、教えて下さい。宜しくお願いします。

    • ベストアンサー
    • XML
  • xsl:variableについて

    お世話になります。xsl:variableについて質問です。 xsl:elementのnameを動的に指定したく、次のようにしました。 FireFox3 Beta 5にて、innerHTMLをtextareaに貼り付けて確認しました。 xml <testNode>aaa</testNode> xsl <xsl:variable name="el"><xsl:value-of select="name(.)"/></xsl:variable> <xsl:element name="$el">aiueo</xsl:element> こうすると、 aiueo のみ出力されました。希望する出力は <testNode>aiueo<testNode> です。 xsl:variableの使い方が間違っているのでしょうか?先程からずっとこれに悩んでいます。。。 よろしくお願いします。

    • ベストアンサー
    • XML
  • FOPでPDF作成時の日本語表示の方法について

    FOP(Fop-0.20.2、jpfop-0.20.2)でXMLをPDFに変換するのに以下のように実行しました。PDFは作成できたのですが開こうとすると「文書を作成するときにエラーが発生しました。修復できません」となってしまって、開くことができません。 userconfig.xmlにはMSGothicのフォントの設定をしました。 サンプルに入っているcid-fonts.foも試してみましたが、日本語の表示が##になってしまい表示ができません。 どのようにすれば、日本語がきちんと表示されるPDFが作成できるのでしょうか? よろしくお願いします。 set XERCES=lib\xerces-1.2.3.jar set XALAN=lib\xalan-2.0.0.jar set FOP=build\fop-0.20.2-jp.jar set BATIK=lib\batik.jar set FRAMEWORK=lib\avalon-framework-4.0.jar set LOGKIT=lib\logkit-1.0b4.jar set JIMI=lib\jimi-1.0.jar set USERCONFIG=conf\userconfig.xml java -cp %FOP%;%BATIK%;%XALAN%;%XERCES%;%FRAMEWORK%;%LOGKIT%;%JIMI% org.apache.fop.apps.Fop -c %USERCONFIG% -xml book.xml -xsl book.xsl -pdf book.pdf

    • ベストアンサー
    • XML
  • xsl:chooseでこんなことがしたい

    はじめまして。XML初心者です。 元データとなるXMLを読み込んでHTML変換する為のスタイルシートの作成を試みています。 xsl:chooseを使って以下のようなことがしたいのですが、 ご存知の方いましたら教えてください(xsl:chooseに拘りはありません) ・元データの基本構造 ------------------------------------------------------ <A> <B> <C1>てすと</C1> </B> </A> ------------------------------------------------------ ・やりたいこと  <C1>の要素内容がNULLなら"★"マークを表示したい。 作ったスタイルシート ------------------------------------------------------ ~ <xsl:choose> <xsl:when test="C1=''">★</xsl:when> <xsl:otherwise><xsl:value-of selct="C1"/></xsl:otherwise> </xsl:choose> ~ ------------------------------------------------------ という感じで試したらうまく”★”マーク表示ができたのですが、対象のXMLデータに例外があり、 <C1>以下の要素がない場合があったのです。 この例外でも同様の”★”表示させたいのですが、うまい方法ご存知の方いましたら教えてください。

    • ベストアンサー
    • XML
  • PerlのSAX利用中にXSL変換するには?

    お世話になります。 Windows7上のActivePerlで、 use XML::SAX; use XML::LibXSLT; モジュールを利用中に、 start_elementイベント時のタイミングで、 取得したタグ文字を、 そのタイミングで、XSL変換することは可能なのでしょうか? 今回の目的は、 XSL変換した後の各値を、 配列などにセットできればOKという状況ですので、 もしSAXで無理でしたら、 たとえばDOMやXPathなどで、 use XML::LibXML; use XML::LibXSLT; モジュールを利用中に、 随時取得したタグ文字を対象として、 そのタイミングで、XSL変換して配列にセットできれば、 それでもOKという状況です。 PS: (ちなみに、  XSLファイル内で、  <xsl:output method="xml">  を指定してから、  XSL変換を実施すると、  まとめてXSL変換自体は、  一通り正常に行われているのですが、  なぜか、出力されたファイルは、  XML形式ではなくて、  text形式でファイルが出力されてしまう為、  (タグ文字が全て空白文字に置換されています)  XMLパーサが一切利用出来なくなってしまい、困っています) 以上になります。 もしご存じの方がいらっしゃいましたら、 よろしくお願いします。

    • ベストアンサー
    • Perl