L'incorporation des Polices dans Apache FOP
Je suis tring pour obtenir Apache FOP à utiliser Arial comme police. Jusqu'à présent, mais sans succès.
Dans mon config.xml il dit:
<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>
Mais il ne semble pas fonctionner. Quand je commence FOP sur la ligne de commande, il dit que la police Arial normal de ne pas trouvé.
J'ai essayé de générer de l'Arial.xml fichier à partir de la ttf avec TTFReader dans la FOP, mais qui, aussi, n'en a pas travaillé (même en suivant les instructions sur le terrain de la page web).
Je reçois le message d'erreur suivant:
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)
Peut-être Im ne pas voir la forêt pour les arbres, mais je suis à une perte pour quoi faire.
Des suggestions?
UDPDATE:
- J'ai téléchargé beaucoup de Fichiers xml à partir de ce site:
http://www.java2s.com/Code/Jar/f/Downloadfopfontmetricsjar.htm
(qui m'a l'air un peu comme les fichiers xml qui étaient déjà dans la fop. donc je suppose qu'ils sont dans le bon format)
Je les ai mis dans le dossier fop/src/codegen
J'ai aussi mis la police arial.de la fft, il y
dans le fichier fop/conf/xconf il dit
<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>
Si ive a obtenu auto-detec et spécifié un répertoire pour les polices de caractères embarquées et arial - stil, je reçois des messages d'erreur comme "glyphe xyz n'est pas inclus dans Helvetica", bien que nulle part dans mes feuilles de style, il ne disent font-family: Helvetica. Les documents pdf sont affichés en Times New Roman...
++ ++ Mise à JOUR
Bon...
mon fop.xconf fichier dit:
<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>
J'ai ajouté font-family="Arial" à peu près tous les éléments maintenant 😀
Je vais à mon fop répertoire dans la ligne de commande et entrez
fop -xml blabla\file.xml -xsl blabla\stylesheet.xsl -pdf output.pdf
Et je reçois le texte suivant:
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.
Dont l'esprit de l'Url.
OriginalL'auteur user2791739 | 2013-11-04
Vous devez vous connecter pour publier un commentaire.
J'ai eu le même Problème, à l'aide de FopFactory .NET et résolu avec le java exemple sur la doc Apache:
http://xmlgraphics.apache.org/fop/1.1/embedding.html#config-external
J'ai créé un fichier de config avec ce code:
Ensuite ajouté info FopFactory:
L'option "auto-detect" pour détecter toutes les polices installées sur le système et il peut prend un certain temps et la sortie est de grande taille.
Pour configurer une police spécifique du système, voir la doc dans le lien ci-dessus.
OriginalL'auteur Zalem
J'ai eu exactement le même problème (bien que s/Arial/Verdana/et fwiw - fop-2.1 sur Windows). Après avoir essayé diverses choses, et puis en prenant un peu de recul, j'ai découvert que je faisais la même erreur qu'un certain nombre d'entre nous ont -
La solution qui a fonctionné pour moi était -
conf\fop.conf
Mettre le configuration pour activer la détection automatique pour pdf les polices à l'intérieur de
conf\fop.conf
De vous assurer de la fourniture de fop avec le fichier conf c'est à dire appel fop.chauve-souris (ou autre plate-forme de script) avec l'option-c par exemple -
fop.bat -fo path\to\fo.fo -c path\to\fop.conf -pdf path\to\output.pdf
Comme je le disais précédemment, nous ne sommes pas les seuls à être pris au dépourvu par cette question, voir par exemple -
Comment puis-je intégrer un base14 police de caractères dans un fichier pdf
Police intégrée ne fonctionne pas dans Apache FOP
À mon humble avis - je pense que nous n'aurions pas tous les suis fait piéger par ce que si Apache FOP a été distribué avec un vide fop.conf qui était déjà référencé dans l'invocation des scripts.
OriginalL'auteur jjee
Pour des raisons historiques, l'Helvetica est la police par défaut pour postscript sur qui TO PDF le rendu est basé sur. Comme un résultat, si vous n'avez pas explicitement déclarer une police dans vos modèles XSL, FOP essaie d'utiliser Helvetica.
Donc mon Problème a été FOP en essayant d'intégrer police Helvetica lors de la génération d'un document PDF/a, mais Helvetica n'est jamais déclarée dans les modèles ni installé sur mon système Linux.
Solution était simple, je l'ai associé à une substitution pour Helvetica dans mon fopconf.xml et de fait LiberationSans ma police par défaut de cette façon. Exemple fopconf.xml:
La solution de rechange pour les modèles qui ne peuvent utiliser d'autres polices, a été réglage de la police de la famille directement sur l'élément racine comme
<fo:root font-family="LiberationSans">
.Espère que ma réponse ajoute une valeur supplémentaire à cette question.
[Mise à JOUR]pourrais-je ajouter, que je suis en utilisant la FOP 2.1[/mise à JOUR]
OriginalL'auteur mondjunge
La "ClassNotFoundException" indique que vous avez un problème de chargement de classe. Étant donné qu'il manque des "org.apache.xmlgraphics.les polices.Glyphes", cela signifie que vous n'avez pas xmlgraphics-commons.jar dans votre classpath (ou une version obsolète). Vous verrez que dans le FOP "lib".
J'aurais vu ça plus tôt: vous n'avez pas besoin TTFReader plus avec FOP 1.0 ou ultérieure. FOP peut extraire le droit à des mesures de police à la volée. Aussi, pensez à utiliser le <directory> tag au lieu de <font> plus facilement configurer les polices pour la FOP. Voir aussi xmlgraphics.apache.org/fop/1.1/fonts.html#bulk
J'ai juste vu que vous avez mis à jour la question. Si vous utilisez <auto-detect/>, il rend <directory>C:\Windows\Fonts</directory> redondant. Pour vous assurer de ne pas utiliser toute Fois/police serif, spécifiez font-family="Arial" fo:root. Et enfin, assurez-vous que le <polices> tag est un enfant du droit de format <convertisseur> tag.
J'ai mis à jour de nouveau la question, dans le cas où vous souhaitez avoir un autre regard sur elle.
OK, ajouter "-c fop.xconf" à la ligne de commande. Supprimer les paramètres de l'url de la police config. En fait, vous pouvez supprimer l'ensemble de la <font> tag et juste aller avec <auto-detect/>.
OriginalL'auteur Jeremias Märki
J'ai juste pensé que je voudrais ajouter qu'une solution partielle ici pour les gens qui sont encore à se demander à ce sujet, afin de générer le fichier xml, vous devez également ajouter xmlgraph_commons-1.4.jar pour le classpath.
Aussi, le chemin d'accès à l'application est org.apache.fop.les polices.des apps.TTFReader, pas ce que l'OP posté, au moins dans les anciennes versions de fop.
Ici est un travail d'exportation
OriginalL'auteur techdude