Package com.exedosoft.plat.pdf

Source Code of com.exedosoft.plat.pdf.DOPDF3

package com.exedosoft.plat.pdf;

import java.awt.Color;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.MalformedURLException;
import java.util.Random;

import com.lowagie.text.Chapter;
import com.lowagie.text.Chunk;
import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Element;
import com.lowagie.text.Font;
import com.lowagie.text.FontFactory;
import com.lowagie.text.Image;
import com.lowagie.text.PageSize;
import com.lowagie.text.Paragraph;
import com.lowagie.text.Phrase;
import com.lowagie.text.Section;
import com.lowagie.text.pdf.BaseFont;
import com.lowagie.text.pdf.ColumnText;
import com.lowagie.text.pdf.MultiColumnText;
import com.lowagie.text.pdf.PdfContentByte;
import com.lowagie.text.pdf.PdfWriter;

//http://blog.csdn.net/zerolsy/archive/2008/02/18/2103480.aspx

public class DOPDF3 {

  public final static Font createChineseFont(int size, int style,boolean isBold) {
   


    Font chineseFont = null;
    try {
     
      BaseFont bf = null;
      if(isBold){
        bf = BaseFont.createFont("STSong-Light,Bold", "UniGB-UCS2-H", BaseFont.EMBEDDED);
      }else{
        bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.EMBEDDED);
      }
      chineseFont = new Font(bf, size, style);
    } catch (DocumentException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
    return chineseFont;
  }

  public static void main(String[] args) throws DocumentException,
      MalformedURLException, IOException {

    Document document = new Document(PageSize.A4.rotate(), 30, 30, 30, 30);
    PdfWriter writer = PdfWriter.getInstance(document,
        new FileOutputStream("C:\\ITextTest3.pdf"));
    writer.setStrictImageSequence(true);
    // ///////////////为了处理Column

    // //////打开文档
    document.open();

    MultiColumnText mct = new MultiColumnText();

    // set up 3 even columns with 10pt space between
    mct.addRegularColumns(document.left(), document.right(), 10f, 2);
   
///////加入头部分
    Image jpg = Image.getInstance("c:\\lh.jpg");
    jpg.setAlignment(Image.LEFT);
    mct.addElement(jpg);
   
 
   
    Font theFont = createChineseFont(13,Font.NORMAL,true);
    Paragraph p1 = new Paragraph("第六期", theFont);
    p1.setAlignment(Element.ALIGN_CENTER);
    mct.addElement(p1);
   
    /////////输出空行
    Paragraph pt = new Paragraph("\n", theFont);
    pt.setAlignment(Element.ALIGN_CENTER);
    mct.addElement(pt);

    Paragraph p2 = new Paragraph("中油辽河油田公司勘查处                    二零零八年二月二十二日", theFont);
    p2.setAlignment(Element.ALIGN_LEFT);
    mct.addElement(p2);
   
    //////////再输出空行
    mct.addElement(pt);
   
        PdfContentByte cb = writer.getDirectContent();
       
        ///////////划线
      cb.setLineWidth(1);
      ////填充划线颜色
      cb.setColorStroke(Color.RED);
       

      cb.moveTo(document.left(),  document.top()-150);
       
      cb.lineTo((document.right() - document.left())/2,  document.top() -150);
       
      cb.stroke();
     
   

    // Write some iText poems
    for (int i = 0; i < 30; i++) {
      mct.addElement(new Paragraph(String.valueOf(i + 1)));
      mct.addElement(newPara(randomWord(noun), Element.ALIGN_CENTER,
          Font.BOLDITALIC));
      for (int j = 0; j < 4; j++) {
        mct.addElement(newPara(poemLine(), Element.ALIGN_LEFT,
            Font.NORMAL));
      }
      mct.addElement(newPara(randomWord(adverb), Element.ALIGN_LEFT,
          Font.NORMAL));
      mct.addElement(newPara("\n\n", Element.ALIGN_LEFT, Font.NORMAL));
    }
 

   
    ////////////盖章
   
    mct.addElement(Chunk.NEWLINE);
    mct.addElement(Chunk.NEWLINE);
    mct.addElement(Chunk.NEWLINE);
    mct.addElement(Chunk.NEWLINE);

   
//////  /加入头部分
 

    Image zhang = Image.getInstance("c:\\zhang.jpg");
    zhang.setAlignment(Image.UNDERLYING);
   
      Chunk cc = new Chunk(zhang, 0, -5);
      mct.addElement(cc);
     
         
    Phrase qianzhang = new Phrase("二零零八年二月二十二日", theFont);
//    qianzhang.add(cc);
   
    mct.addElement(qianzhang);
   
   
   
    document.add(mct);
     
   
   

    ///////////两列输出完毕
   
    ////////变为普通情况输出
   
    document.add(Chunk.NEWLINE);
 
    Image jpg2 = Image.getInstance("c:\\mgjt.jpg");
    jpg2.setAlignment(Image.ALIGN_CENTER);
    document.add(jpg2);
   
   
   
   
    document.add(Chunk.NEXTPAGE);

 
   
    Font theFontSign = createChineseFont(10,Font.NORMAL,false);

    Phrase ps1 = new Phrase("\n\t                                               编图",theFontSign);
// 
    Image ss1 = Image.getInstance("c:\\ss1.jpg");
    ss1.setAlignment(Image.ALIGN_CENTER);
      Chunk ck = new Chunk(ss1, 0, -5);
      ps1.add(ck);
     
      ps1.add("        制表:");
      ps1.add(ck);
     
    document.add(ps1);
   
 
//
    document.close();
   
    System.out.println("Out Finish!");

  }

  private static Element newPara(String text, int alignment, int type) {
    Font font =  FontFactory.getFont("Helvetica", 10, type, Color.BLACK);
    Paragraph p = new Paragraph(text, font);
    p.setAlignment(alignment);
    p.setLeading(font.getSize() * 1.2f);
    return p;
  }

  static Random rand = new Random();

  static String[] verb = { "flows", "draws", "renders", "throws exception",
      "runs", "crashes", "downloads", "usurps", "vexes", "whispers",
      "boils", "capitulates", "crashes", "craves", "looks", "defies",
      "defers", "defines", "envelops", "entombs", "falls", "fails",
      "halts", "appears", "nags", "overflows", "burns", "dies", "writes",
      "flushes" };

  static String[] noun = { "ColumnText", "paragraph", "phrase", "chunk",
      "PdfContentByte", "PdfPTable", "iText", "color",
      "vertical alignment", "horizontal alignment", "PdfWriter",
      "ListItem", "PdfStamper", "PDF", "HTML", "XML", "column", "font",
      "table", "FDF", "field", "NullPointerException", "CJK font" };

  static String[] adjective = { "foul", "broken", "gray", "slow",
      "beautiful", "throbbing", "sharp", "stout", "soundless", "neat",
      "swift", "uniform", "upright", "vibrant", "dingy", "vestigal",
      "messy", "sloppy", "baleful", "boastful", "dark", "capricious",
      "concrete", "deliberate", "sharp", "drunken", "undisciplined",
      "perfect", "bloated" };

  static String[] adverb = { "randomly", "quickly", "triumphantly",
      "suggestively", "slowly", "angrily", "uncomfortably", "finally",
      "unexpectedly", "hysterically", "thinly", "dryly", "blazingly",
      "terribly", "bleakly", "irritably", "dazzlingly", "expectantly",
      "impersonally", "abruptly", "awfully", "caressingly", "completely",
      "undesirably", "drolly", "hypocritically", "blankly", "dimly" };

  private static String randomWord(String[] type) {
    return type[rand.nextInt(type.length)];
  }

  /**
   * Generates a random poem line.
   *
   * @return a poem that is generated with some keywords.
   */
  public static String poemLine() {
    StringBuffer results = new StringBuffer(150);
    results.append(randomWord(adjective));
    results.append(' ');
    results.append(randomWord(noun));
    results.append(' ');
    results.append(randomWord(verb));
    results.append(' ');
    results.append(randomWord(adverb));
    results.append(", ");
    return results.toString();
  }

}
TOP

Related Classes of com.exedosoft.plat.pdf.DOPDF3

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.