Seam ile pdf üretmek için ilgili configurasyon ve ornek sayfa aşağıda bulunuyor. Bunun için arka planda itext kütüphanesini kullanıyor.
Öncelikle components.xml içerisinde aşağıdaki tanımı yapmalıyız.
<pdf:document-store use-extensions="true" error-page="/pdfHata.seam" />
components.xml içerisinde namespace tanımı muhtemelen bulunmuyordur bunun için aşağıdaki namespace i ekleyebilirsiniz.
xmlns:pdf="http://jboss.com/products/seam/pdf"
aynı şekilde schema tanımı da aşağıdaki şekilde eklenmelidir.
http://jboss.com/products/seam/pdf http://jboss.com/products/seam/pdf-2.0.xsd
web.xml içerisine servlet tanımı yapılması gerekiyor örneği aşağıda bulunuyor.
<servlet>
<servlet-name>Document Store Servlet</servlet-name>
<servlet-class>
org.jboss.seam.pdf.DocumentStoreServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Document Store Servlet</servlet-name>
<url-pattern>*.pdf</url-pattern>
</servlet-mapping>
Son olarak “WEB-INF\lib\” klasörü içerisine “itext.jar” kütüphanesi eklenmelidir bu kütüphaneleri “jboss-seam-2.0.3.CR1\lib\” dizini altında bulabilirsiniz.
Pdf çıktısı için “WebContent” altında “demoPDF.xhtml” isminde bir dosya oluşyuruyoruz deploy sonrası “http://localhost:8080/demo/demoPDF.seam” linkinden pdf dosyamızı gösterebiliriz.
Örnek demoPDF.xhtml dosyası.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<p:document xmlns:p="http://jboss.com/products/seam/pdf" title="Merhaba Dunya">
<p:chapter number="1">
<p:title>
<p:paragraph>Merhaba</p:paragraph>
</p:title>
<p:paragraph>Deneme amacli bir yazı </p:paragraph>
</p:chapter>
<p:chapter number="2">
<p:title>
<p:paragraph>İkinci sayfa</p:paragraph>
</p:title>
<p:paragraph>Deneme amaçlı ikinci sayfanın yazısı</p:paragraph>
</p:chapter>
</p:document>
Üst başlık ve alt başlık oluşturmak
<p:chapter number="2">
<p:header alignment="center">Seam Deneme</p:header>
<p:title>
<p:paragraph>İkinci sayfa</p:paragraph>
</p:title>
<p:paragraph>Deneme amaçlı ikinci sayfanın yazısı</p:paragraph>
<p:footer borderWidthTop="1" borderColorTop="blue"
borderWidthBottom="0" alignment="center">
Deneme dökümanı [<p:pageNumber />]
</p:footer>
</p:chapter>
Facelet ile dinamik pdf çıktılarıda üretebilirsiniz bunun için facelet ui kütüphanesini kullanabilirsiniz.
örnek
<p:document xmlns:p="http://jboss.com/products/seam/pdf"
xmlns:ui="http://java.sun.com/jsf/facelets"
title="Hello">
<p:list style="numbered">
<ui:repeat value="#{kullanicilar}" var="kullanici">
<p:listItem>#{kullanici.ad}</p:listItem>
</ui:repeat>
</p:list>
</p:document>
Pdf ortamında grafik üretimi
Öncelikle “WEB-INF\lib\” dizini altına “jfreechart.jar” ve “jcommon.jar” kütüphanelerini kopyalamamız gerekiyor bu kütüphaneleri yine “jboss-seam-2.0.3.CR1\lib\” altında bulabilirsiniz.
Örnek
<p:piechart title=“Parite" circular="false" direction="anticlockwise"
startAngle="30" labelGap="0.1" labelLinkPaint="red">
<p:series key="Prices">
<p:data key="2003" columnKey="2003" value="7.36" />
<p:data key="2004" columnKey="2004" value="11.50" />
<p:data key="2005" columnKey="2005" value="34.625" />
<p:data key="2006" columnKey="2006" value="76.30" />
<p:data key="2007" columnKey="2007" value="85.05" />
</p:series>
</p:piechart>
Dinamik pdf üretimi.
<p:piechart title="Kullanicilar" circular="false" direction="anticlockwise"
startAngle="30" labelGap="0.1" labelLinkPaint="red">
<p:series key="Prices">
<ui:repeat value="#{kullanicilar}" var="kullanici">
<p:data key="#{kullanici.ad}" columnKey="#{kullanici.yil}" value="#{kullanici.value}" />
</ui:repeat>
</p:series>
</p:piechart>
Barcode cıktısı üretimi
<p:barCode type="code128"
barHeight="80"
textSize="20"
code="(10)45566(17)040301"
codeType="code128_ucc"
altText="Ürün İsmi" />
Örneklerin pdf çıktısı
Pdf oluşturma ile ilgilenenler jasper report u inceleyebilirler
http://jasperforge.org/
Vakit bulabilirsem seam – jasper entegrasyonu ile ilgili de bir ornek hazirlamayı planlıyorum.