Avatar billede jetrit Nybegynder
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??
Avatar billede arne_v Ekspert
25. oktober 2003 - 11:08 #1
Kan du forklare lidt hvad du vil ?

En servlet og en AWT GUI har ikke umiddelbart så meget med hinanden at gøre.
Avatar billede jetrit Nybegynder
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);
  }
}
Avatar billede farnsworth Praktikant
25. oktober 2003 - 12:37 #3
prøv at kigge her og se om det hjælper. 8D

http://java.sun.com/j2se/1.3/docs/guide/intl/fontprop.html#using
Avatar billede jetrit Nybegynder
06. februar 2004 - 11:04 #4
lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester