用到了iText库,可以下载,
import lotus.domino.*; import java.io.*; import com.lowagie.text.*; import com.lowagie.text.pdf.PdfWriter; import java.util.*; import java.awt.*; import java.awt.event.*; import com.lowagie.text.pdf.PdfWriter;
public class ViewToPDF extends NotesThread{ public static void main(String args[]){ ViewToPDF t = new ViewToPDF(); t.start(); } /** 退出程序 */ private void exitForm(java.awt.event.WindowEvent evt) { System.exit(0); } /* 按钮*/ private void buttonAction(java.awt.event.ActionEvent evt, Frame frame, String serverName, String dbName, String viewName, String pageOrient){ try{ NotesThread.sinitThread(); Session sess = NotesFactory.createSession(); System.out.println("访问数据库 " + dbName + " on Server: " + serverName); Database db = sess.getDatabase(serverName, dbName); DocumentCollection collection = db.getAllDocuments(); System.out.println("视图: " + viewName + " in Database: " + dbName); View view = db.getView(viewName); frame.dispose(); FileDialog fd = new FileDialog(new Frame(),"Save As..",FileDialog.SAVE); fd.show(); String path = fd.getDirectory() + fd.getFile();
com.lowagie.text.Document pdfDoc; if(pageOrient.equals("Landscape")){ pdfDoc = new com.lowagie.text.Document(PageSize.A4.rotate()); }else{ pdfDoc = new com.lowagie.text.Document(); } PdfWriter.getInstance(pdfDoc, new FileOutputStream(path)); System.out.println("Creating document: " + path); pdfDoc.open(); Table aTable = new Table(view.getColumnCount()); aTable.setBorderWidth(1); aTable.setBorderColor(new Color(0,0,0)); aTable.setAutoFillEmptyCells(true); com.lowagie.text.Font font = new com.lowagie.text.Font(2, 9, com.lowagie.text.Font.NORMAL); Cell cell = new Cell("header"); Vector columnNames = view.getColumnNames(); for (int k=0; k<columnNames.size(); k++) { cell = new Cell((String)columnNames.elementAt(k)); cell.setBackgroundColor(new Color(192,192,192)); aTable.addCell(cell); } ViewEntryCollection vec = view.getAllEntries(); ViewEntry tmpEntry; System.out.println("Documents to Process: " + vec.getCount()); ViewEntry entry = vec.getFirstEntry(); while (entry != null) { Vector v = entry.getColumnValues(); for (int i=0; i<v.size(); i++) { String vName = v.elementAt(i).toString(); aTable.addCell(vName); } tmpEntry = vec.getNextEntry(); entry.recycle(); entry = tmpEntry; tmpEntry = null; } pdfDoc.add(aTable); pdfDoc.close(); /* 对象释放 */ vec.recycle(); view.recycle(); db.recycle(); NotesThread.stermThread(); System.runFinalization(); System.gc(); System.out.println("文档: " + path + " 产生!"); System.exit(0); }catch(Exception e){ System.out.println("程序遇到错误:"); e.printStackTrace(); System.exit(0); } } public void runNotes(){ try{ final Frame frame = new Frame("User Input:"); frame.setSize(300, 400); Color color = new Color(100,100,255); frame.setBackground(color); frame.setLayout(new java.awt.GridLayout(11, 1)); frame.addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent evt) { exitForm(evt); } }); Label label1 = new java.awt.Label(); label1.setFont(new java.awt.Font("Arial", 1, 14)); label1.setText("Server Name:"); Label label2 = new java.awt.Label(); label2.setFont(new java.awt.Font("Arial", 1, 14)); label2.setText("Database Name:"); Label label3 = new java.awt.Label(); label3.setFont(new java.awt.Font("Arial", 1, 14)); label3.setText("View Name:"); Label label4 = new java.awt.Label(); label4.setFont(new java.awt.Font("Arial", 1, 14)); label4.setText("Page Orientation:"); Label label5 = new java.awt.Label(); label5.setFont(new java.awt.Font("Arial", 1, 9)); label5.setText("Developed by: "); label5.setBackground(new Color(255, 255, 255)); final TextField textField1 = new java.awt.TextField(); final TextField textField2 = new java.awt.TextField(); final TextField textField3 = new java.awt.TextField(); final Choice choice1 = new java.awt.Choice(); choice1.add("Landscape"); choice1.add("Portrait"); Button button1 = new java.awt.Button(); button1.setFont(new java.awt.Font("Arial", 1, 14)); button1.setLabel("OK"); button1.setBackground(new Color(0, 128, 0)); Button button2 = new java.awt.Button(); button2.setFont(new java.awt.Font("Arial", 1, 14)); button2.setLabel("Cancel"); button2.setBackground(new Color(255, 128, 128)); button1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { String serverName= textField1.getText(); String dbName = textField2.getText(); String viewName = textField3.getText(); String pageOrient = choice1.getSelectedItem(); buttonAction(evt, frame, serverName, dbName, viewName, pageOrient); } }); button2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { System.exit(0); } }); frame.add(label1); frame.add(textField1); frame.add(label2); frame.add(textField2); frame.add(label3); frame.add(textField3); frame.add(label4); frame.add(choice1); frame.add(button1); frame.add(button2); frame.add(label5); frame.pack(); frame.show(); }catch (Exception e){ e.printStackTrace(); } } }

|