czwartek, 7 stycznia 2010

Polskie czcionki FOP

Polskie czcionki w dokumentach PDF generowanych przez aplikacjie Java z użyciem Apache FOP

Czynności do wykonania
1. Generacja metryk
2. Ustawienie konfiguracji czcionek
3. Załadowanie konfiguracji czcionek
4. Ustawienie w szablonie wartości family-font nazwą czcionki, dla której wygenerowano metryki

Realizacja:
1. W katalogu głownym FOPa wykonujemy przykładowe polecenia, w celu wygenerowania metryk dla czcionki Arial oraz jej odmian (pogrubiona, pochylona, itp)

java -cp build\fop.jar;lib\avalon-framework.jar;lib\commons-logging-1.0.4.jar;lib\commons-io-1.3.1.jar;lib\xmlgraphics-commons-1.3.1.jar org.apache.fop.fonts.apps.TTFReader C:\WINDOWS\Fonts\arial.TTF arial.xml

java -cp build\fop.jar;lib\avalon-framework.jar;lib\commons-logging-1.0.4.jar;lib\commons-io-1.3.1.jar;lib\xmlgraphics-commons-1.3.1.jar org.apache.fop.fonts.apps.TTFReader C:\WINDOWS\Fonts\ARIALBD.TTF ARIALBD.xml

java -cp build\fop.jar;lib\avalon-framework.jar;lib\commons-logging-1.0.4.jar;lib\commons-io-1.3.1.jar;lib\xmlgraphics-commons-1.3.1.jar org.apache.fop.fonts.apps.TTFReader C:\WINDOWS\Fonts\ARIALBI.TTF ARIALBI.xml

java -cp build\fop.jar;lib\avalon-framework.jar;lib\commons-logging-1.0.4.jar;lib\commons-io-1.3.1.jar;lib\xmlgraphics-commons-1.3.1.jar org.apache.fop.fonts.apps.TTFReader C:\WINDOWS\Fonts\ARIALI.TTF ARIALI.xml

 2. Utworzenie przykładowego pliku zkonfuguracją czcnioek (fonts.xsl)
 <?xml version="1.0"?>
<fop version="1.0">
  <base>.</base>
  <source-resolution>72</source-resolution>
  <target-resolution>72</target-resolution>
  <default-page-settings height="297mm" width="210mm"/>
  <renderers>

  <renderer mime="application/pdf">
  <filterList>
  <value>flate</value>
  </filterList>
  <fonts>

  <font metrics-url="C:/Documents and Settings/pkarpik/Pulpit/fop-0.95/arial.xml" kerning="yes" embed-url="C:/WINDOWS/Fonts/arial.TTF">
  <font-triplet name="arial" style="normal" weight="normal"/>
  </font>
 
  <font metrics-url="C:/Documents and Settings/pkarpik/Pulpit/fop-0.95/ARIALBD.xml" kerning="yes" embed-url="C:/WINDOWS/Fonts/ARIALBD.TTF">
  <font-triplet name="arial" style="normal" weight="bold"/>
  </font>
 
  <font metrics-url="C:/Documents and Settings/pkarpik/Pulpit/fop-0.95/ARIALBI.xml" kerning="yes" embed-url="C:/WINDOWS/Fonts/ARIALBI.TTF">
  <font-triplet name="arial" style="italic" weight="bold"/>
  </font>
 
  <font metrics-url="C:/Documents and Settings/pkarpik/Pulpit/fop-0.95/ARIALI.xml" kerning="yes" embed-url="C:/WINDOWS/Fonts/ARIALI.TTF">
  <font-triplet name="arial" style="italic" weight="normal"/>
  </font>
 
  </fonts>
  </renderer>

  <renderer mime="application/postscript">
  </renderer>

  <renderer mime="application/vnd.hp-PCL">
  </renderer>

  <renderer mime="image/svg+xml">
  <format type="paginated"/>
  <link value="true"/>
  <strokeText value="false"/>
  </renderer>

  <renderer mime="application/awt">
  </renderer>

  <renderer mime="image/png">
  </renderer>

  <renderer mime="image/tiff">
  </renderer>

  <renderer mime="text/xml">
  </renderer>

  <renderer mime="text/plain">
  <pageSize columns="80"/>
  </renderer>
  </renderers>
</fop>


3. Załadowanie konfiguracji czcionek
FopFactory fopFactory = FopFactory.newInstance();
DefaultConfigurationBuilder cfgBuilder = new DefaultConfigurationBuilder();
File file = new File("C:/Documents and Settings/pkarpik/workspace/Fop/src/fop/tutorial/fon.xsl");
Configuration cfg = cfgBuilder.buildFromFile(file);
fopFactory.setUserConfig(cfg);



4. Ustawienie w szablonie wartości family-font nazwą czcionki, dla której wygenerowano metryki
 <fo:block font-family="arial"></fo:block>


Źródła:
http://xmlgraphics.apache.org/fop/0.94/fonts.html 
http://blog.dosiek.pl/?p=31
http://old.nabble.com/Embed-Fonts-in-PDF-using-Java-td26112969.html

2 komentarze:

  1. Bardzo pomocny tutorial.
    Udało mi się wyświetlić polskie czcionki :)

    Dzięki,
    Paweł

    OdpowiedzUsuń
  2. mi też pomogło:)
    dzięki,
    Krzysiek

    OdpowiedzUsuń