FOPでPDF作成時の日本語表示の方法について

このQ&Aのポイント
  • FOP(Fop-0.20.2、jpfop-0.20.2)でXMLをPDFに変換する際に、日本語表示に関する問題が発生しています。
  • PDFは作成できたものの、開こうとすると「文書を作成するときにエラーが発生しました。修復できません」というエラーメッセージが表示され、PDFを開くことができません。
  • userconfig.xmlにはMSGothicのフォントの設定をしているにもかかわらず、日本語の表示が「##」と表示され、正しく表示されません。どのようにすれば、正しく日本語が表示されるPDFを作成できるのでしょうか?
回答を見る
  • ベストアンサー

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
  • 回答数2
  • ありがとう数1

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

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

No.1の補足というか訂正です。 userconfig.xml(userconfig-ja.xml)で指定された相対パスは、このファイルの位置を基準とするのではなく、current directoryを基準とするようです。訂正します。 この仕組みでは扱いにくい気がするので、絶対パスで指定しておいた方が良いかもしれません。

machitaka
質問者

お礼

msgothic.xmlの配置場所を変えてみると正しく日本語が表示されました。 ありがとうございます。

その他の回答 (1)

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

FOPについてあまり詳しくないので、解決まで導ける自信はないのですが、確認すべき点だけでも。 おそらくは、userconfig.xmlが間違っているんだと思います。 jpfop-0.20.2\docs\examplesの中にあるuserconfig-ja.xmlを使ってみて、うまく動くかどうか試してみてください。このファイルは相対パスでmsgothic.xml(これもjpfop-0.20.2\docs\examplesにあります)を参照しているようなので、同じフォルダにmsgothic.xmlを置くか、msgothic.xmlの場所に合わせて指定を修正する必要があります。 うまく動かない場合には、jpfop-0.20.2\docs\examples\runtests.batを実行して成功するのがあるかどうか確認して下さい。それでもうまく動かない場合は、私にはよく分かりません。 とりあえず、私の環境で、日本語が表示できるPDFを作成できる場合がある(どんなファイルでもすべてうまく作成できるかどうかは分かりませんが)のは確かです。

関連するQ&A

  • XML→PDF出力

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

    • ベストアンサー
    • XML
  • 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
  • xalanを使用してのエラー

    xalanを使用したいのですが、 下記のようなエラーが出てしまいます。 C:\xalan-j_2_7_1\samples\SimpleTransform>java org.apache.xalan.xslt.Process -in test.xml -xslt test.xsl -out test.html (実行文) Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/xalan/xslt /Process (エラー) パスが通っていないということは わかるのですが、具体的に何をどうしたら良いのかわかりません。 すでに通しているパスは、 ・システム環境変数 ■CLASSPASS C:\j2sdk1.4.2_16\lib\tools.jar; C:\xalan-j_2_7_1\xml-apis.jar; C:\xalan-j_2_7_1\xercesImpl.jar; C:\xalan-j_2_7_1\xalan.jar ■Path C:\j2sdk1.4.2_16\bin です。 まだ他に通さないといけないものがあるのでしょうか。 ご協力お願いします。 バージョン xalan-j_2_7_1 j2sdk1.4.2_16

  • 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をつかってPDF出力

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

    • ベストアンサー
    • XML
  • XML.XSLT

    自分で解決ができないので、少し聞かせてください。 質問は、XMLを利用して、XSLTの出力です。 まずは、サンプルでの実装を確認しようと思いまして、 http://www.hellohiro.com/xslt.htm のサイト利用させていただいております。 それで、サイトの説明通り、 http://java.sun.com/xml/downloads/javaxmlpack.html から、java_xml_pack-summer02_01.zipをダウンロードして、xalan.jar、jaxp-api.jar、dom.jar、sax.jar、xercesImpl.jarを配置しました。配置内容は、まず、 C:\jdk1.3\jre\lib\ext に配置しました。そして、サーバアプリは、JRun3.0を使用してますので、C:\Program Files\Allaire\JRun\lib\ext に配置しました。余談になると思うのですが、toolで、forte for java2.0を使っているので、C:\forte4j\lib\extにも配置しました。そして、上記サイトの下方の「サーブレットを利用しての表示」のコードをコンパイルは成功したのですが、ブラウザからの呼び出しでは、真っ白な表示になってしまいます。 自分では、CLASSPATHに問題があるのでは?と思い、いろいろ試したのですがダメです。ちなみに、autoexec.batには、 SET PATH=c:\jdk1.3\bin;%PATH% SET CLASSPATH=.;C:\jdk1.3\jre\lib\ext\xalan.jar;C:\jdk1.3\jre\lib\ext\jaxp-api.jar;C:\jdk1.3\jre\lib\ext\sax.jar;C:\jdk1.3\jre\lib\ext\domjar としています。 どこの設定が間違っているのか、助言をください。 よろしくお願いします。

    • ベストアンサー
    • Java
  • Tomcat & Axisの設定

    @ITや豆蔵のサイトを見て、Apache Tomcat1.4とAXIS1.0を使ったWebアプリケーションにトライしてみようと思っているのですが、以下のようなエラーが出てしまいます。 (AXIS付属のサンプルを実行した結果です) C:\xml-axis-10>java samples.userguide.example3.Client HELLO Exception in thread "main" java.lang.NoClassDefFoundError: javax/servlet/ServletContext 違うサンプルも試してみたのですが、同じエラーが出ました。何らかの設定の間違いだと思うのですが、何が間違っているのかわかりません。どのように直せばよろしいのでしょうか?よろしくお願いします。 OS:WinME 環境変数 axis_home : c:\xml-axis-10 java_home : C:\j2sdk1.4.0_01 classpath : .;C:\xml-axis-10\lib\axis.jar;C:\xml-axis-10\lib\axis-ant.jar;C:\xml-axis-10\lib\commons-discovery.jar;C:\xml-axis-10\lib\commons-logging.jar;C:\xml-axis-10\lib\jaxrpc.jar;C:\xml-axis-10\lib\log4j-1.2.4.jar;C:\xml-axis-10\lib\saaj.jar;C:\xml-axis-10\lib\wsdl4j.jar;C:\xml-axis-10\lib\xerces.jar

    • ベストアンサー
    • Java
  • csv作成エラー

    CSVファイルを作ろうとcsvフォルダを作り、xmlファイル・xslファイルを入れました。 C:\csv\aaa.xml C:\csv\bbb.xsl コマンドプロンプトで C:\csv>java org..apache.xalan.xslt.Process -in aaa.xml -xsl bbb.xsl -out ddd.csv と入力したら、 file:/C:/csv/bbb.xsl;行番号1;列番号-1;XSLTエラー(javax..xml.transform.TransformerConfigurationException):javax..xml.transform.TransformerException: org.xml.sax.SAXParseException: ドキュメントのルート要素がありません。 と表示されてうまくいきません。 xslファイルの1行目には、<?xml version="1.0" encoding="utf-8"?>と記載されています。 教えていただけたらうれしいです。

    • ベストアンサー
    • XML
  • Tomcat+Axis のサンプルで

    Apache-Axisを勉強中です。 ここhttp://yamaguch.sytes.net/~tora/java/axis.xmlのサンプルを試しているのですが、 エラーになってしまい悩んでいます。 OS:Win2kPro Java:j2sdk1.4.1_02 Tomcat:jakarta-tomcat-4.0.6 Axis:xml-axis-10 (説明を読んで、足りないjarファイルはbeta1から持ってきました) 環境変数 AXIS_HOME=c:\axis-10 AXIS_LIB=%AXIS_HOME%\lib CLASSPATH=.;%AXIS_LIB%\axis.jar;%AXIS_LIB%\clutil.jar;%AXIS_LIB%\commons-logging.jar;%AXIS_LIB%\jaxrpc.jar;%AXIS_LIB%\saaj.jar;%AXIS_LIB%\log4j-core.jar;%AXIS_LIB%\tt-bytecode.jar;%AXIS_LIB%\wsdl4j.jar;%AXIS_LIB%\log4j-1.2.4.jar;%AXIS_LIB%;%AXIS_LIB%\axis-ant.jar;%AXIS_LIB%\commons-discovery.jar;%AXIS_LIB%\xerces.jar;%CATALINA_HOME%\common\lib\mail.jar;%CATALINA_HOME%\common\lib\activation.jar;%CATALINA_HOME%\common\lib\servlet.jar;C:\j2sdk1.4.1_02\lib\tools.jar; 見出しHelloAxis以下書かれているとおりに勧めて、 実行すると > java HelloClient http://localhost:8080/axis/HelloAxis.jws "Boo" 以下のエラーとなってしまいます。 - Mapping Exception to AxisFault AxisFault faultCode: {http://xml.apache.org/axis/}Server.userException faultString: java.lang.RuntimeException: No compiler found in your classpath! (you may need to add tools.jar) faultActor: null faultDetail: stackTrace: java.lang.RuntimeException: No compiler found in your classpath! (you may need to add tools.jar) at org.apache.axis.components.compiler.Javac.&lt;init&gt;(Javac.java:111) at org.apache.axis.components.compiler.CompilerFactory.getCompiler(CompilerFactory.java:87) ~以下略~

    • ベストアンサー
    • Java
  • DOMParserを使いたいのですが

    こんにちは。 毎回初心者な質問で恐縮です。。 javaの中でXMLから特定のデータを抽出して表示したいのでインターネット上でサンプルがないか探していたところ、「アットマーク・アイティ」のホームページでちょうどよいものを見つけたのでそれを参考に作成しはじめたのですが、 DOMParser parser = new DOMParser(); という記述があり、ここでコンパイルがとまってしまいます。 import org.apache.xerces.parsers.*; がなかったのかと思い、記述を追加したところ今度は「パッケージは存在しません」と言われてしまいます。 jarファイルが足りないのかと調べていたのですが、このパッケージを使うために何が必要なのか参考資料がみつかりません。 「xerces」や「Parser」で調べたところ、自分のTOMCATのフォルダ内の\common\endorsedのフォルダ内に「xercesImpl.jar」「xmlParserAPIs.jar」がありました。 何がたりないのかご存知の方、教えてください。 よろしくお願いいたします。

    • ベストアンサー
    • Java

専門家に質問してみよう