25. oktober 2003 - 10:43
Der er
3 kommentarer og
1 løsning
at loade en *.ttf font ind i en servlet
hej der
jeg har en servlet der skal generere et billede, men da jeg ikke kan bestemme hvilke fonts der er tilgængelige på serveren ville jeg gerne kunne hente en ttf fil direkte.
er der nogen der kan sige hvordan man kan lave "c:\minfont.ttf" om til en awt font??
25. oktober 2003 - 11:24
#2
jeg skal lave et billede der bliver generret af servleten ved at hente et baggrund billede og så skrive på det. inholdet hentes ud fra en XML skabelon, i skabalonen er det angivet hvilken skrifttype der skal bruges.
jeg ved derfor ikke om skrifttypen er understøttet af serveren.
herunder kan du se servletten
package tag2;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import com.sun.image.codec.jpeg.*;
import java.awt.image.*;
import java.awt.*;
import java.awt.color.*;
import java.awt.RenderingHints.*;
import model.*;
public class GenerateJpeg extends GenericServlet
{
public void service(ServletRequest request, ServletResponse response) throws IOException
{
Visitkort vk = (Visitkort) ((HttpServletRequest) request).getSession().getAttribute("Visitkort");
BufferedImage buffimg = new BufferedImage( vk.getWidth(), vk.getHøjde(), BufferedImage.TYPE_INT_RGB);
Graphics2D grafik = (Graphics2D) buffimg.getGraphics();
grafik.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
Toolkit toolkit = Toolkit.getDefaultToolkit();
Image image = toolkit.getImage(vk.getBaggrund());
grafik.drawImage(image, 0, 0, null);
while (vk.NesteElement()){
TekstElement text = (TekstElement) vk.Hent();
Font font = new Font(text.getSkrifttype(), text.getTypografi(), text.getFontStr());
grafik.setFont(font);
Farve f= text.getFarve();
grafik.setColor(setCMYKColor((float) f.getC(), (float) f.getM(), (float) f.getY(), (float) f.getK()));
float fontMod = (float) 0.93; // DBQ.getFontMod(font.getFontName());
float yMod = vk.getHøjde() - text.getY();// - font.getSize();
grafik.drawString(text.getTekst(), text.getX(), yMod);
}
response.setContentType("image/jpeg");
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(response.getOutputStream());
JPEGEncodeParam params = JPEGCodec.getDefaultJPEGEncodeParam(buffimg);
params.setQuality(1, true);
encoder.encode(buffimg, params);
}
}