Я работаю над приложением, которое имеет некоторые формы, а затем с помощью FOP создает pdf-файлы. Файлы PDF, которые создаются, находятся во времени New Roman, но я хочу их в шрифте Arial. Я добавил arial.ttf в projectName-> fonts-> arial.ttf, как описано здесь: http://www.publicstaticfinal.de/2011/01/26/fop-embedding-fonts-from-classpath/Невозможно включить шрифт Arial в FOPTransformer
Это TTF и код должен идти в файл под открытым небом ампера, но сейчас я добавил его нету в банке файл для arial.ttf потому что я не знаю, как сделать банку файл с только .ttf файл, вот что я сделал для достижения этой цели, но PDF еще в Times New Roman: fopconfig:
<fop version="0.94">
<base>./</base>
<font-base>./</font-base>
<renderer mime="application/postscript">
<fonts>
<font kerning="yes" embed-url="/fonts/arial.ttf" encoding-mode="auto">
<font-triplet name="Arial" style="normal" weight="normal" />
</font>
</fonts>
</renderer>
</fop>
создал файл класса следующим образом :
import java.io.InputStream;
import javax.xml.transform.Source;
import javax.xml.transform.TransformerException;
import javax.xml.transform.URIResolver;
import javax.xml.transform.stream.StreamSource;
public class ClasspathUriResolver implements URIResolver
{
public Source resolve(String href, String base) throws TransformerException
{
Source source = null;
InputStream inputStream = ClassLoader.getSystemResourceAsStream(href);
if (inputStream != null)
{
source = new StreamSource(inputStream);
}
return source;
}
}
А вот часть моего кода для FOPTranformer:
FopFactory fopFactory = FopFactory.newInstance();
FOURIResolver uriResolver = (FOURIResolver)fopFactory.getURIResolver();
uriResolver.setCustomURIResolver(new ClasspathUriResolver());
FOUserAgent foUserAgent = fopFactory.newFOUserAgent();
Большое спасибо, это сэкономило мне много времени :) – Ramkumar