import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import wkc.pdf.PdfException;
import wkc.pdf.PdfGrayColor;
import wkc.pdf.PdfProperties;
import wkc.pdf.PdfRGBColor;
import wkc.pdf.Type1Font;
import wkc.pdf.tool.Field;
import wkc.pdf.tool.Quadding;
import wkc.pdf.tool.Report;
import wkc.pdf.tool.ReportException;
public class SampleServlet extends HttpServlet {
private static final String SCRATCH_PATH = "out_pdf";
private static final String FORM_PATH = "form";
private static final String IMAGE_PATH = "image";
private File scratchDirectory;
private File wprlHomeDirectory;
private File imageDirectory;
private File formDirectory;
public void init(ServletConfig config) throws ServletException{
super.init(config);
ServletContext context = config.getServletContext();
scratchDirectory =new File(context.getRealPath(SCRATCH_PATH));
context.log("scratchDirectory="+scratchDirectory);
String pdfname = config.getInitParameter("wprlib.template.pdf.filename");
String datname = config.getInitParameter("wprlib.template.dat.filename");
try {
wprlHomeDirectory = new File(PdfProperties.getInstance().getProperty(PdfProperties.WKC_PDF_HOME));
formDirectory = new File(wprlHomeDirectory,FORM_PATH);
imageDirectory = new File(wprlHomeDirectory,IMAGE_PATH);
} catch (IOException e) {
context.log("",e);
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
boolean done = false;
File tmpFile = null; //出力先ファイル
FileOutputStream fout = null; //出力ファイルストリーム
Report report = null;
try{
// 出力先のファイルを作成します。
tmpFile = File.createTempFile("wprl",".pdf",scratchDirectory);
fout = new FileOutputStream(tmpFile);
File formFile = new File(formDirectory,"template.pdf");
File datFile = new File(formDirectory,"template.dat");
/* ここから
* CookBook / Chapter1-11 で紹介したサンプルプログラムと同等
* です。
*/
report = new Report(formFile,datFile,fout);
report.createPage(1);
report.setDefaultFontSize(11);
report.putFieldData("xFormType", "お客様控え");
Field g0Field = report.getField("xGram.0");
g0Field.setQuadding(Quadding.RIGHT);
report.putFieldData(g0Field, "0");
Field g1Field = report.getField("xGram.1");
g1Field.setQuadding(Quadding.RIGHT);
report.putFieldData(g1Field, "0");
Field g2Field = report.getField("xGram.2");
g2Field.setQuadding(Quadding.RIGHT);
report.putFieldData(g2Field, "1");
Field g3Field = report.getField("xGram.3");
g3Field.setQuadding(Quadding.RIGHT);
report.putFieldData(g3Field, "0");
Field g4Field = report.getField("xGram.4");
g4Field.setQuadding(Quadding.RIGHT);
report.putFieldData(g4Field, "1");
Field g5Field = report.getField("xGram.5");
g5Field.setQuadding(Quadding.RIGHT);
report.putFieldData(g5Field, "0");
Field g6Field = report.getField("xGram.6");
g6Field.setQuadding(Quadding.RIGHT);
report.putFieldData(g6Field, "0");
Field g7Field = report.getField("xGram.7");
g7Field.setQuadding(Quadding.RIGHT);
report.putFieldData(g7Field, "0");
Field g8Field = report.getField("xGram.8");
g8Field.setQuadding(Quadding.RIGHT);
report.putFieldData(g8Field, "0");
Field g9Field = report.getField("xGram.9");
g9Field.setQuadding(Quadding.RIGHT);
report.putFieldData(g9Field, "0");
Field ac0Field = report.getField("xAmountC.0");
ac0Field.setQuadding(Quadding.RIGHT);
report.putFieldData(ac0Field, "0");
Field ac1Field = report.getField("xAmountC.1");
ac1Field.setQuadding(Quadding.RIGHT);
report.putFieldData(ac1Field, "0");
Field ac2Field = report.getField("xAmountC.2");
ac2Field.setQuadding(Quadding.RIGHT);
report.putFieldData(ac2Field, "490");
Field ac3Field = report.getField("xAmountC.3");
ac3Field.setQuadding(Quadding.RIGHT);
report.putFieldData(ac3Field, "0");
Field ac4Field = report.getField("xAmountC.4");
ac4Field.setQuadding(Quadding.RIGHT);
report.putFieldData(ac4Field, "1,350");
Field ac5Field = report.getField("xAmountC.5");
ac5Field.setQuadding(Quadding.RIGHT);
report.putFieldData(ac5Field, "0");
Field ac6Field = report.getField("xAmountC.6");
ac6Field.setQuadding(Quadding.RIGHT);
report.putFieldData(ac6Field, "0");
Field ac7Field = report.getField("xAmountC.7");
ac7Field.setQuadding(Quadding.RIGHT);
report.putFieldData(ac7Field, "0");
Field ac8Field = report.getField("xAmountC.8");
ac8Field.setQuadding(Quadding.RIGHT);
report.putFieldData(ac8Field, "0");
Field ac9Field = report.getField("xAmountC.9");
ac9Field.setQuadding(Quadding.RIGHT);
report.putFieldData(ac9Field, "0");
Field n0Field = report.getField("xNumber.0");
n0Field.setQuadding(Quadding.RIGHT);
report.putFieldData(n0Field, "0");
Field n1Field = report.getField("xNumber.1");
n1Field.setQuadding(Quadding.RIGHT);
report.putFieldData(n1Field, "0");
Field n2Field = report.getField("xNumber.2");
n2Field.setQuadding(Quadding.RIGHT);
report.putFieldData(n2Field, "0");
Field n3Field = report.getField("xNumber.3");
n3Field.setQuadding(Quadding.RIGHT);
report.putFieldData(n3Field, "0");
Field n4Field = report.getField("xNumber.4");
n4Field.setQuadding(Quadding.RIGHT);
report.putFieldData(n4Field, "0");
Field n5Field = report.getField("xNumber.5");
n5Field.setQuadding(Quadding.RIGHT);
report.putFieldData(n5Field, "1");
Field n6Field = report.getField("xNumber.6");
n6Field.setQuadding(Quadding.RIGHT);
report.putFieldData(n6Field, "0");
Field n7Field = report.getField("xNumber.7");
n7Field.setQuadding(Quadding.RIGHT);
report.putFieldData(n7Field, "0");
Field n8Field = report.getField("xNumber.8");
n8Field.setQuadding(Quadding.RIGHT);
report.putFieldData(n8Field, "0");
Field aa0Field = report.getField("xAmountA.0");
aa0Field.setQuadding(Quadding.RIGHT);
report.putFieldData(aa0Field, "0");
Field aa1Field = report.getField("xAmountA.1");
aa1Field.setQuadding(Quadding.RIGHT);
report.putFieldData(aa1Field, "0");
Field aa2Field = report.getField("xAmountA.2");
aa2Field.setQuadding(Quadding.RIGHT);
report.putFieldData(aa2Field, "0");
Field aa3Field = report.getField("xAmountA.3");
aa3Field.setQuadding(Quadding.RIGHT);
report.putFieldData(aa3Field, "0");
Field aa4Field = report.getField("xAmountA.4");
aa4Field.setQuadding(Quadding.RIGHT);
report.putFieldData(aa4Field, "0");
Field aa5Field = report.getField("xAmountA.5");
aa5Field.setQuadding(Quadding.RIGHT);
report.putFieldData(aa5Field, "1,700");
Field aa6Field = report.getField("xAmountA.6");
aa6Field.setQuadding(Quadding.RIGHT);
report.putFieldData(aa6Field, "0");
Field aa7Field = report.getField("xAmountA.7");
aa7Field.setQuadding(Quadding.RIGHT);
report.putFieldData(aa7Field, "0");
Field aa8Field = report.getField("xAmountA.8");
aa8Field.setQuadding(Quadding.RIGHT);
report.putFieldData(aa8Field, "0");
Field aamField = report.getField("xAllAmount");
aamField.setQuadding(Quadding.RIGHT);
aamField.setTextColor(PdfRGBColor.RED);
report.putFieldData(aamField, "3,540");
Field pm2Field = report.getField("xPayment.2");
pm2Field.setFillColor(PdfGrayColor.BLACK);
report.putFieldData(pm2Field, (String) null);
Field cd0Field = report.getField("xCard.0");
cd0Field.setFillColor(PdfGrayColor.BLACK);
report.putFieldData(cd0Field, (String) null);
Field cn0Field = report.getField("xCardNo.0");
cn0Field.setQuadding(Quadding.RIGHT);
report.putFieldData(cn0Field, "1234");
Field cn1Field = report.getField("xCardNo.1");
cn1Field.setQuadding(Quadding.RIGHT);
report.putFieldData(cn1Field, "5678");
Field cn2Field = report.getField("xCardNo.2");
cn2Field.setQuadding(Quadding.RIGHT);
report.putFieldData(cn2Field, "9123");
Field cn3Field = report.getField("xCardNo.3");
cn3Field.setQuadding(Quadding.RIGHT);
report.putFieldData(cn3Field, "4567");
Field ctyField = report.getField("xCardTermY");
ctyField.setQuadding(Quadding.RIGHT);
report.putFieldData(ctyField, "2008");
Field ctmField = report.getField("xCardTermM");
ctmField.setQuadding(Quadding.RIGHT);
report.putFieldData(ctmField, "08");
report.putFieldData("xCardName", "山田 太郎");
Field sdField = report.getField("xSendDay.1");
sdField.setFillColor(PdfGrayColor.BLACK);
report.putFieldData(sdField, (String) null);
Field stField = report.getField("xSendTime.2");
stField.setFillColor(PdfGrayColor.BLACK);
report.putFieldData(stField, (String) null);
Field yearField = report.getField("xYear");
yearField.setQuadding(Quadding.RIGHT);
report.putFieldData(yearField, "2003");
Field monthField = report.getField("xMonth");
monthField.setQuadding(Quadding.RIGHT);
report.putFieldData(monthField, "12");
Field dayField = report.getField("xDay");
dayField.setQuadding(Quadding.RIGHT);
report.putFieldData(dayField, "29");
Field ctnField = report.getField("xCustomerName");
//ctnField.setFontName("MSGothic,Bold");
report.putFieldData(ctnField, "山田 太郎");
report.putFieldData("xCustomerNo", "1234567");
Field postField = report.getField("xPostCode");
postField.setFontSize(8);
report.putFieldData(postField, "133-0061");
report.putFieldData("xAddress", "東京都江東区南砂町5-7-21");
Field phnField = report.getField("xPhoneNo");
phnField.setFontName(Type1Font.COURIER);
report.putFieldData(phnField, "03-1234-5678");
Field freeField = report.getField("xFree");
freeField.setOnMultiline(true);
report.putFieldData(freeField, "上記電話番号でつながらない場合は下記番号におねがいします。\n 勤務先 \n 03-5555-5555");
Field faxField = report.getField("xFax");
faxField.setBorderStyle(Field.BORDER_STYLE_SOLID);
faxField.setBorderColor(PdfGrayColor.BLACK);
report.putFieldData(faxField, "FAX番号:03-4444-5555");
report.close();
report = null;
/* ここまで
* CookBook / Chapter1-11 で紹介したサンプルプログラムと同等
* です。
*/
done = true;
} catch (ReportException e) {
log("report error.",e);
} catch (PdfException e) {
log("report error.",e);
}finally{
if(report != null){
try {
report.close();
} catch (ReportException e) {}
report = null;
}
if(fout != null){
fout.close();
}
}
/* レスポンスを組み立てます。
* オーダフォーム(お客様控え)のリンクをクリック後、
* ブラウザの別Windowを開き、PDFを表示します。
*/
response.setContentType("text/html;charset=UTF-8");
PrintWriter writer = response.getWriter();
writer.println("");
writer.println("");
writer.println("WebKCore PDFレポート デモ ");
writer.println("");
writer.println("オーダーフォーム出力結果
");
if(done){
String path = SCRATCH_PATH+"/"+tmpFile.getName();
writer.println("");
writer.println("こちらのリンクをクリックし内容を確認してください >>");
//writer.println("オーダーフォーム(お客様控え)");
writer.println("オーダーフォーム(お客様控え)");
writer.println("
");
writer.println("
");
}else{
writer.println("出力できませんでした。
");
}
writer.println("
");
// 出力ストリームのクローズ
writer.close();
}
}