用到了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();
}
}
}