5

フォントとして Arial を使用するように Apache FOP を取得しようとしています。これまでのところ、運が悪い。

私のconfig.xmlには次のように書かれています:

<fonts>                           
 <font kerning="yes"  embed-url="file:///C:/Windows/Fonts/Arial.ttf" encoding-mode="auto">>
<font-triplet name="Arial" style="normal" weight="normal"/>
 </font>                     
</fonts>

しかし、うまくいかないようです。コマンド ラインで FOP を起動すると、font Arial normal not found と表示されます。

FOPでTTFReaderを使用してttfからArial.xmlファイルを生成しようとしましたが、それも機能しませんでした(fop Webページの指示に従っても)。次のエラー メッセージが表示されます。

C:\Users\xy\Desktop\FOP2>java -cp build\fop.jar;lib\avalon-framework-4.2.0.jar;lib\commons-logging-1.0.4.jar;lib\commons-io-1.3.1.jar org.apache.fop.TTFReader C:\Windows\Fonts\arial.ttf Arial.xml
TTF Reader for Apache FOP 1.1

Parsing font...
Reading C:\Windows\Fonts\arial.ttf...
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/xmlgraphics/fonts/Glyphs
        at org.apache.fop.fonts.truetype.TTFFile.initAnsiWidths(TTFFile.java:662)
        at org.apache.fop.fonts.truetype.TTFFile.readFont(TTFFile.java:711)
        at org.apache.fop.fonts.apps.TTFReader.loadTTF(TTFReader.java:224)
        at org.apache.fop.fonts.apps.TTFReader.main(TTFReader.java:177)
Caused by: java.lang.ClassNotFoundException: org.apache.xmlgraphics.fonts.Glyphs
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)

木を見て森を見ていないのかもしれませんが、どうしたらいいのか途方に暮れています。

助言がありますか?

UDPDATE:

それらをフォルダー fop/src/codegen に入れます

そこにarial.tffも入れました

ファイル fop/conf/xconf でそれは言う

<fonts>

      <directory>C:\Windows\Fonts</directory>
        <!-- embedded fonts -->
        <!--
        This information must exactly match the font specified
        in the fo file. Otherwise it will use a default font.

        For example,
        <fo:inline font-family="Arial" font-weight="bold" font-style="normal">
            Arial-normal-normal font
        </fo:inline>
        for the font triplet specified by:
        <font-triplet name="Arial" style="normal" weight="bold"/>

        If you do not want to embed the font in the pdf document
        then do not include the "embed-url" attribute.
        The font will be needed where the document is viewed
        for it to be displayed properly.

        possible styles: normal | italic | oblique | backslant
        possible weights: normal | bold | 100 | 200 | 300 | 400
                          | 500 | 600 | 700 | 800 | 900
        (normal = 400, bold = 700)
        -->

        <font metrics-url="C:\Users\z003a5bp\Desktop\FOP2\src\codegen\fonts\arial.xml" kerning="yes" embed-url="C:\Users\z003a5bp\Desktop\FOP2\src\codegen\fonts\arial.ttf">
          <font-triplet name="Arial" style="normal" weight="normal"/>
          <!-- <font-triplet name="ArialMT" style="normal" weight="normal"/> -->
        </font>
       <!-- <font metrics-url="arialb.xml" kerning="yes" embed-url="arialb.ttf">
          <font-triplet name="Arial" style="normal" weight="bold"/>
          <font-triplet name="ArialMT" style="normal" weight="bold"/> -->

          <auto-detect/>
      </fonts>

そのため、自動検出を取得し、フォントと埋め込まれた arial のディレクトリを指定しました。「グリフ xyz は Helvetica に含まれていません」などのエラー メッセージが表示されますが、スタイルシートのどこにも font-family Helvetica とは記載されていません。PDFはTimes New Romanに表示されます...

++ 更新 ++

わかった...

私の fop.xconf ファイルは今これを言っています:

<fop version="1.0">

  <base>.</base>

  <source-resolution>72</source-resolution>
  <target-resolution>72</target-resolution>
  <default-page-settings height="11in" width="8.26in"/>
  <renderers>
    <renderer mime="application/pdf">
      <filterList>
        <value>flate</value>
      </filterList>

      <fonts>

       <font metrics-url="file:///C:/Users/z003a5bp/Desktop/FOP2/src/codegen/fonts/arial.xml"
            kerning="yes"
            embed-url="file:///C:/Users/z003a5bp/Desktop/FOP2/arial.ttf">
        <font-triplet name="Arial" style="normal" weight="normal"/>
            </font> 

          <auto-detect/>
      </fonts>

    </renderer>

ほとんどすべての要素に font-family="Arial" を追加しました:D

コマンド ラインで fop ディレクトリに移動し、次のように入力します。

fop -xml blabla\file.xml -xsl blabla\stylesheet.xsl -pdf output.pdf

そして、私は次のようになります:

Nov 07, 2013 1:34:29 PM org.apache.fop.events.LoggingEventListener processEvent
Schwerwiegend: Image not found. URI: 15300145419.PNG. (See position 44:-1)
Nov 07, 2013 1:34:29 PM org.apache.fop.events.LoggingEventListener processEvent
Warnung: The following feature isn't implemented by Apache FOP, yet: table-layout="auto" (on fo:table) (Siehe Position 29:-1)
Nov 07, 2013 1:34:29 PM org.apache.fop.events.LoggingEventListener processEvent
Schwerwiegend: Image not found. URI: 15627351051.PNG. (See position 44:-1)
Nov 07, 2013 1:34:29 PM org.apache.fop.events.LoggingEventListener processEvent
Schwerwiegend: Image not found. URI: 15629782795.PNG. (See position 44:-1)
Nov 07, 2013 1:34:29 PM org.apache.fop.events.LoggingEventListener processEvent
Warnung: Font "Arial,normal,400" not found. Substituting with "any,normal,400".
Nov 07, 2013 1:34:29 PM org.apache.fop.events.LoggingEventListener processEvent
Warnung: Glyph "?" (0x95) not available in font "Times-Roman".
Nov 07, 2013 1:34:29 PM org.apache.fop.events.LoggingEventListener processEvent
Warnung: Font "Arial,italic,400" not found. Substituting with "any,italic,400".
Nov 07, 2013 1:34:29 PM org.apache.fop.events.LoggingEventListener processEvent
Warnung: Content overflows the viewport of the fo:region-before on page 1 in block-progression direction by 2989 millipoints. (See position 50:-1)
Nov 07, 2013 1:34:29 PM org.apache.fop.events.LoggingEventListener processEvent
Information: Rendered page #1.
Nov 07, 2013 1:34:29 PM org.apache.fop.events.LoggingEventListener processEvent
Warnung: Content overflows the viewport of the fo:region-before on page 2 in block-progression direction by 2989 millipoints. (See position 59:-1)
Nov 07, 2013 1:34:29 PM org.apache.fop.events.LoggingEventListener processEvent
Information: Rendered page #2.

URLは気にしないでください。

4

5 に答える 5

4

私はまったく同じ問題を抱えていました(Windowsではs / Arial / Verdana /とfwiw - fop-2.1ですが)。さまざまなことを試した後、一歩下がった後、私は私たちの多くが犯したのと同じ間違いを犯していることに気付きました -

  1. デフォルト以外の拡張子を持つ提供/サンプル構成ファイルを編集していたため、fop によって自動的に使用されません。つまり、fop.xconf
  2. fop.bat (または提供されているその他のプラットフォーム呼び出しスクリプト) は、-c fop.xconf を指定して org.apache.fop.cli.Main を呼び出したり、.conf ファイルを指定して -c を呼び出したりしないため、fop.xconf への変更は使用されていない

私のために働いた解決策は -

  1. 作成conf\fop.conf
  2. 内部のpdfフォントの自動検出を有効にする構成を配置しますconf\fop.conf

  3. fop に conf ファイルを提供していることを確認します。つまり、-c オプションを指定して fop.bat (または他のプラットフォーム スクリプト) を呼び出します。

fop.bat -fo path\to\fo.fo -c path\to\fop.conf -pdf path\to\output.pdf

前に言ったように、これに巻き込まれるのは私たちだけではありません。例を参照してください -

PDFにbase14フォントを埋め込むにはどうすればよいですか

埋め込みフォントが Apache FOP で機能しない

IMHO - 呼び出しスクリプトで既に参照されている空の fop.conf を使用して Apache FOP が配布されていた場合、すべての人がこれに巻き込まれることはなかったと思います。

于 2016-06-30T15:44:44.563 に答える
0

xml ファイルを生成するには、xmlgraph_commons-1.4.jar もクラスパスに追加する必要があります。

また、少なくとも古いバージョンの fop では、アプリケーションへのパスは org.apache.fop.fonts.apps.TTFReader であり、OP が投稿したものではありません。

これが作業中のエクスポートです

java -cp build\fop.jar;lib\avalon-framework-4
.2.0.jar;lib\commons-logging-1.0.4.jar;lib\commons-io-1.3.1.jar;lib\xmlgraphics-
commons-1.4.jar org.apache.fop.fonts.apps.TTFReader C:\Windows\Fonts\arial.ttf A
rial.xml
于 2016-02-15T22:48:58.807 に答える