2017-06-15 10 views
3

私はthymeleafでレンダリングするhtmlのflying-saucer-pdfでダウンロード可能なpdfを作成するシンプルなスプリングブートWebアプリケーションを持っています。それは正常に動作し、正しくhtml文字列を生成します。私はWindows上で開発し、開発中にもpdfもうまく動作しますが、ubuntuサーバーでは動作しません。flying-saucer-pdfテーブル 'name'はubuntuの例外として存在しません

ITextRenderer renderer = new ITextRenderer(); 
    renderer.getFontResolver().addFont(fontFile, BaseFont.IDENTITY_H, BaseFont.EMBEDDED); 

fontFileもUbuntuの上、存在し、それはプログラムによってアクセス可能だし、これにアクセスすることができますが、私は次の例外を得たPDFファイルをレンダリングするとき。 私は実際に何を意味するのかideを持っていません。 com.lowagie.text.DocumentException:によって引き起こさ

表 'name' がcom.lowagie.textで /opt/RFIT/TextileApp/conf/font/Rubik-Regular.ttf には存在しません。 pdf.TrueTypeFont.getBaseFont(不明なソース)〜[itext-2.1.7.jar:na] at com.lowagie.text.pdf.TrueTypeFont.process(不明なソース)〜[itext-2.1.7.jar:na] at com.lowagie.text.pdf.TrueTypeFontUnicode。(不明なソース)〜[itext-2.1.7.jar:na] at com.lowagie.text.pdf.BaseFont.createFont(不明なソース)〜[itext-2.1 .7.jar:na] at com.lowagie.text.pdf.BaseFont.createFont(不明なソース)〜[itext-2.1.7.jar:na] at com.lowagie.text.pdf.BaseFont.createFo (ITextFontResolver.java:201) 〜[flying-saucer-pdf-9.1.6.jar:] org.xhtmlrenderer.pdf.ITextFontResolver.addFontでNA] (ITextFontResolver:org.xhtmlrenderer.pdf.ITextFontResolver.addFontでナ] (ITextFontResolver.java:193) 〜[フライングソーサー-PDF-9.1.6.jar .java:188) 〜[flying-saucer-pdf-9.1.6.jar:na] hu.rfit.textile.service.impl.PdfPrinterService.printPDF(PdfPrinterService.java:53) 〜[TextileApp-1.0 .0-SNAPSHOT.jar:1.0.0-SNAPSHOT:4749]

いくつかのフォーラムでは、 d/usr/share/fonts dirtにフォントを置き換え、フォントキャッシュを再構築します。しかし、それは動作しません。

答えて

1

フライングソーサでフォントを追加するのと同じ問題がありました。 問題の主な原因は切り抜かれたフォントファイルです。オペレーティングシステムまたはフィルタリングによってこの問題が発生する可能性があります。私の例では、私はmavenを使用して、次の手順で問題を解決しました。

mavenを使用している場合は、フォントファイルをリソースフォルダに追加する必要があります。例えば

のsrc /メイン/リソース/フォント/ samplefont.ttf

その後、次のようなのpom.xml上のリソースを定義する必要があります。

 <resources> 
      <resource> 
       <directory>src/main/resources</directory> 
       <filtering>true</filtering> 
       <excludes> 
        <exclude>font/*</exclude> 
       </excludes> 
      </resource> 
      <resource> 
       <directory>src/main/resources</directory> 
       <filtering>false</filtering> 
       <includes> 
        <include>font/*</include> 
       </includes> 
      </resource> 
     </resources> 

その後、私はそれが役に立つことを願って、定義以下

ITextRenderer renderer = new ITextRenderer(); 
renderer.getFontResolver().addFont("/font/samplefont.ttf", 
            BaseFont.IDENTITY_H, 
            BaseFont.EMBEDDED); 

を使用することができます。

関連する問題