日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

使用IText打印PDF...

 ShangShujie 2007-05-05

使用IText打印PDF

IText是開源的,對與打印PDF做的還不錯,下邊一個例子關(guān)于IText的,列出了大部份常用的功能。
import java.io.FileOutputStream;

import com.lowagie.text.Cell;
import com.lowagie.text.Document;
import com.lowagie.text.Font;
import com.lowagie.text.PageSize;
import com.lowagie.text.Paragraph;
import com.lowagie.text.Table;
import com.lowagie.text.pdf.BaseFont;
import com.lowagie.text.pdf.PdfWriter;


public class Example {
    
private static Font FONT_11;
    
private static BaseFont msgothic;
    
public static void main(String[] args) throws Exception{
        
try{
            
//定義字體
            msgothic = BaseFont.createFont("D:\\workspace\\UseIText\\MSMINCHO.TTC,0",BaseFont.IDENTITY_H,BaseFont.EMBEDDED);
            FONT_11
=new Font(msgothic);
            FONT_11.setSize(
11);
        }
catch(Exception e){
            e.printStackTrace();
        }

        
//為了測試方便,加入自動關(guān)閉打開acrord32
        Runtime.getRuntime().exec("tskill acrord32").waitFor();
        Thread.sleep(
1000);
        Document document
=new Document(PageSize.A4.rotate());
        
//寫文件
        PdfWriter writer=PdfWriter.getInstance(document, new FileOutputStream("d:/temp.pdf"));
        document.open();
        makeDocument(document);
        document.close();
        
//為了測試方便,加入自動關(guān)閉打開acrord32
        Runtime.getRuntime().exec("\"c:\\Program Files\\Adobe\\Acrobat 7.0\\Reader\\acrord32.exe\" d:/temp.pdf").waitFor();
    }

    
public static void makeDocument(Document document)throws Exception{
        
//table大部份操做類似與html,下邊是一些常用的參數(shù)
        
//3是總的列數(shù),也可以同時指定行數(shù)和列數(shù)new Table(3,4)
        Table table=new Table(3);
        
//table的寬度
        table.setWidth(98);
        
//類似html的cellSpaceing
        table.setSpacing(2);
        
//每一列的寬度,是比例不是固定寬度
        table.setWidths(new int[]{10,30,60});
        
//對齊方式
        table.setAlignment("CENTER");
        
//table是否有邊框
        table.setBorder(0);
        
//cell默認(rèn)是否有邊框
        table.setDefaultCellBorder(0);
        
//自動填充空白
        table.setAutoFillEmptyCells(true);
        
int n=10;
        
for(int i=0;i<n;i++){
            makeContent(table);
        }

        
//新的一頁要加上這句
        document.newPage();
        
for(int i=0;i<n;i++){
            makeContent(table);
        }

        document.add(table);
    }

    
public static void  makeContent(Table table)throws Exception {
        
int len = table.columns();
        
for(int i=0;i<len;i++){
            String testStr 
= "test"+i+"xxxxxxxxxxxxxxxxxxxxxx";
            Cell cell
=new Cell(testStr);
            
//max lines ,設(shè)置成1防止換行,配合cell寬度,可以實(shí)現(xiàn)自動截取
            cell.setMaxLines(1);
            table.addCell(cell);
        }

    }

    
//構(gòu)造一個自定義的cell
    public static Cell makeCell(int colspan,String align,int maxLines,Font font){
        Cell cell 
= null;
        Paragraph paragraph 
=null;
        
try{
            
//使用自定義字體
            paragraph=new Paragraph("testxxx",font);
            cell
=new Cell(paragraph);
            
//設(shè)置colspan,同樣的方法可以設(shè)置rowspan
            if(colspan >1){
                cell.setColspan(colspan);
            }

            
//設(shè)置對齊
            if((align != null&& (!align.equals(""))){
                cell.setHorizontalAlignment(align);
            }

            
//設(shè)置maxlines
            cell.setMaxLines(maxLines);
        }
catch(Exception e){
            e.printStackTrace();
        }

        
return cell;
    }

}

posted on 2007-01-29 11:55 dreamstone 閱讀(346) 評論(8)  編輯 收藏 引用 所屬分類: 飯碗

# 

評論

# re: 使用IText打印PDF 2007-01-29 16:42 寸土



不錯?。?!  回復(fù)  更多評論   

# re: 使用IText打印PDF 2007-01-30 08:40 robin0925

不知道,對於中文的打印,有沒有解決換行的問題,即:如果換行的時候,行首是標(biāo)點(diǎn)的情況的處理?  回復(fù)  更多評論   

# re: 使用IText打印PDF[未登錄] 2007-01-30 21:25 dreamstone

標(biāo)點(diǎn)的問題我當(dāng)時也查了一下,沒有找到IText提供的解決方案,有個臨時辦法是取一下列寬,然后算一下,如果位置剛好是標(biāo)點(diǎn)就在標(biāo)點(diǎn)前的一個字加一個空格,擠下一個字來,但這樣的問題造成要多次算。也在找解決方案  回復(fù)  更多評論   

# re: 使用IText打印PDF 2007-03-02 09:28 dreamstone

補(bǔ)充幾個問題的答案:
如何取得一個空的Cell
Cell cell = Cell.getDummyCell();空格的情況會被忽略
  回復(fù)  更多評論   

# re: 使用IText打印PDF 2007-03-02 09:29 dreamstone

如何調(diào)整行高
調(diào)整字體大小就可以
  回復(fù)  更多評論   

# re: 使用IText打印PDF 2007-03-02 09:30 dreamstone

如何調(diào)整空行的行高
也是用字體,但是要用\n來構(gòu)造空行
Paragraph paragraph=new Paragraph("\n",FONT_44);
Cell cell=new Cell(paragraph);
cell.setColspan(len);
cell.setMaxLines(1);
table.addCell(cell);   回復(fù)  更多評論   

# re: 使用IText打印PDF 2007-03-02 09:30 dreamstone

如何打印一條線:
用DummyCell來構(gòu)造空行,同時設(shè)置邊框顏色
Cell cell = Cell.getDummyCell();
cell.setColspan(len);
cell.setMaxLines(1);
cell.setBorderColorBottom(Color.black);
cell.setBorderWidthBottom(1);
table.addCell(cell);   回復(fù)  更多評論   

# re: 使用IText打印PDF 2007-03-02 09:30 dreamstone

強(qiáng)行調(diào)整行高,縮小行間距
Paragraph paragraph=new Paragraph(content,font);
Cell cell=new Cell(paragraph);
cell.setColspan(colspan);
cell.setHorizontalAlignment(align);
//主要是這個
cell.setLeading(font.size());
cell.setMaxLines(1);
table.addCell(cell);  回復(fù)  更多評論   

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多