2011年5月30日星期一

  iText in Action 笔记——Hello world express

设置页面大小及页边距(参数都是float型):

Rectangle pagesize = new Rectangle(200f, 800f);   //设置页面 200*800 单位是用户显示单元,默认是1/72英寸。
Document document = new Document(pagesize, 20f, 20f ,20f ,20f);    //页边距,顺序是左右上下。

自定义用户显示单元大小:

PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("HelloWorld.pdf")); 
writer.setUserunit(72f);   //这和上面的配合可以更改实际的页面大小和边距。

使用标准页面格式:

Document document = new Document(PageSize.LETTER);  //在 PageSize 类中,包括A0-A10,B0-B10,LETER,LEGAL,LEDGER,TABLOID。

设置大小边距等属性的另一种方式:

document.setMargins(10f, 20f, 10f, 20f);//上下左右顺序同上
document.setPageSize(PageSize.A5);

模仿实体书横版边距对称(即奇数页边距同 setMargins 中的设置,偶数页的左右边距对调,上下边距不变),或纵版边距对称:

document.setMarginMirroring(true);
document.setMarginMirroringTopBottom(true);

先写进内存,最后再输出:

     public static void main(String args[]) throws DocumentException, IOException{
        Document document = new Document();
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        PdfWriter.getInstance(document, baos);
        document.open();
        document.add(new Paragraph("Hello World!"));
        document.close();
        FileOutputStream fos = new FileOutputStream("Hello.pdf");
        fos.write(baos.toByteArray());
        fos.close();
    }

另一种方式:

    public static void main(String args[]) throws DocumentException,
            IOException {
        Document document = new Document();
        PdfWriter writer = PdfWriter.getInstance(document,
                new FileOutputStream("HelloWorld1.pdf"));
        document.open();
        PdfContentByte canvas = writer.getDirectContentUnder();
        writer.setCompressionLevel(0);//设置压缩等级,0为不压缩,可以用文本编辑器直接看到内容。
         canvas.saveState();
        canvas.beginText();
        canvas.moveText(30, 180);//文本初始位置左偏移和上偏移
         canvas.setFontAndSize(BaseFont.createFont(), 12);
        canvas.showText("Hello world!");
        canvas.endText();
        canvas.restoreState();
        document.close();
    }

将“Hello world!”作为短语插入(效果同上):

public static void main(String args[]) throws DocumentException,
        IOException {
    Document document = new Document();
    PdfWriter writer = PdfWriter.getInstance(document,
            new FileOutputStream("HelloWorld1.pdf"));
    document.open();
    PdfContentByte canvas = writer.getDirectContentUnder();
    writer.setCompressionLevel(0);// 设
     Phrase hello = new Phrase("Hello world!");
    //下面这句的意思是将短句  hello 变量中的文字,以左对齐的方式,添加到画布 canvas 变量中,
     //坐标位置为(30,180),旋转角度为0。
    ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, hello, 30, 180, 0);
    document.close();
}

创建 n 个文档并将它们保存到压缩包中:

public static void main(String args[]) throws DocumentException,
        IOException {
    ZipOutputStream zip = new ZipOutputStream(new FileOutputStream(
            "test.zip"));
    for (int i = 0; i < 3; i++){
        ZipEntry entry = new ZipEntry("hello" + i + ".pdf");
        zip.putNextEntry(entry);
        Document document = new Document();
        PdfWriter writer = PdfWriter.getInstance(document, zip);
        writer.setCloseStream(false);//如果不这么做,在第一次循环中就会自动关闭zip的输出流。
        document.open();
        document.add(new Paragraph("Hello world " + i));
        document.close();
        zip.closeEntry();
    }
    zip.close();
 
}

没有评论:

发表评论