我有这个代码

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

ByteArrayOutputStream output = new ByteArrayOutputStream();

try{

response.setContentType("application/pdf");

response.setHeader("Content-Disposition", "inline; filename=details.pdf");

try{

Document document = new Document(PageSize.A4, 20, 20, 130, 20);

PdfWriter writer=PdfWriter.getInstance(document, output);

document.open();

BaseFont bf = BaseFont.createFont("c:/windows/fonts/arialuni.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);

writer.setPageEvent(new HeaderAndFooter(date));

XMLWorkerHelper worker = XMLWorkerHelper.getInstance();

List arrlist = new ArrayList();

List arrlist1 = new ArrayList();//user list

List arrlist2 = new ArrayList();//time list

Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/765a", "root", "root");

Statement st=con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);

ResultSet rs=st.executeQuery("SELECT * FROM user_start2 where date='"+date+"' ");

while(rs.next()){

arrlist.add(rs.getString("data"));

arrlist1.add(rs.getString("users"));

arrlist2.add(rs.getString("strtime"));

}

for(int i=0;i

String str =(String) arrlist.get(i);

String str1 ='\n'+(String) arrlist1.get(i);

String str2 =(String) arrlist2.get(i);

String string =str.replace("

","\n").replace("

", "\n");

document.add(new Paragraph(str1+"("+str2+")",new com.itextpdf.text.Font(bf, 10)));

document.add(new Paragraph(str2,new com.itextpdf.text.Font(bf, 10)));

document.add(new Paragraph(string,new com.itextpdf.text.Font(bf, 12)));

}

document.close();

response.setContentLength(output.size());

OutputStream os = response.getOutputStream();

output.writeTo(os);

os.flush();

os.close();

con.close();

}catch(IOException e){e.printStackTrace();}

}catch(IOException e){e.printStackTrace();}

catch(DocumentException e) {}

catch(Exception e) {

}

//PDF READER

// Create a reader

try{

OutputStream out = new ByteArrayOutputStream();

PdfReader reader = new PdfReader(output.toByteArray());

PdfStamper stamper = new PdfStamper(reader, out);

Document document = new Document();

document.open();

int n = reader.getNumberOfPages();

PdfContentByte cbq;

Font headerFont = new Font(FontFamily.COURIER, 13, Font.UNDERLINE);

for (int i = 1; i <= n; i++) {

cbq = stamper.getOverContent(i);

ColumnText ct = new ColumnText( cbq );

ct.setSimpleColumn( 300 , 300, 50, 50 , 150, Element.ALIGN_CENTER );

ct.addElement( new Paragraph( "Mathias" , headerFont ) );

ct.go();

}

// Close the stamper

stamper.close();

reader.close();

document.close();

} catch (DocumentException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

我正在尝试将页码添加到我的pdf中,但上面的代码不起作用 . 现在作为示例我只是添加文本 "mathias" 来检查它是否有效但文本 "mathias" 没有出现在pdf页面上 . 其他一切正常, Headers ,pdf上的文字显示 but not the data from the stamper .

我也试过用这个

for (int i = 1; i <= n; i++) {

getHeaderTable(i, n).writeSelectedRows(0, -1, 34, 803, stamper.getOverContent(i));

}

public static PdfPTable getHeaderTable(int x, int y) {

PdfPTable table = new PdfPTable(2);

table.setTotalWidth(527);

table.setLockedWidth(true);

table.getDefaultCell().setFixedHeight(20);

table.getDefaultCell().setBorder(Rectangle.BOTTOM);

table.addCell("FOOBAR FILMFESTIVAL");

table.getDefaultCell().setHorizontalAlignment(Element.ALIGN_RIGHT);

table.addCell(String.format("Page %d of %d", x, y));

return table;

}

但是压模没有出现任何东西 .

我错过了什么吗?

更多推荐

java pdf stamper_使用pdfstamper(Itext)将页码添加到pdf