【发布时间】:2015-03-27 14:03:23
【问题描述】:
我下面的代码会输出一个简单的收据,其中包含用户的一些详细信息,例如姓名、票价和停靠站号。这会生成一个包含这些详细信息的 PDF 文件。每当新用户在主表单中输入数据时,这只会覆盖 PDF 文件中第一个用户的数据。如何在不附加或覆盖第一个用户的原始数据的情况下创建新的 PDF 文件? (如sample.pdf、sample2.pdf、sample3.pdf...等等)
public class PDFDisplay {
public static void generatePDF(PassengerBean passengerBean) {
Document document = new Document();
try {
final Chunk NEWLINE = new Chunk("\n");
PdfWriter.getInstance(document,
new FileOutputStream("C://sample.pdf"));
document.open();
Image img = Image.getInstance("C:\\Documents and Settings\\Pinky\\My Documents\\Angel's files\\ICS 113\\eclipse_ws\\MRTApplicationIteration2\\WebContent\\image\\mrt.jpg");
document.add(img);
String or = "Official Receipt";
String hr = "-----------------------------------------------------------";
String spacer = " ";
String name = "Passenger Name: " + passengerBean.lname + "," + " " + passengerBean.fname;
String dest = "Destination: " + passengerBean.dest + " STATION";
String stopno = passengerBean.stop;
double fare = passengerBean.fare;
String fare1 = "Fare: PHP" + " " + String.valueOf(fare);
String ccnum = "CREDIT CARD NUMBER: " + " " + "************" + passengerBean.ccnum.substring(Math.max(0, passengerBean.ccnum.length() - 4));
Paragraph para10 = new Paragraph(32);
para10.setSpacingBefore(10);
para10.setSpacingAfter(10);
para10.add(new Chunk(or));
document.add(para10);
Paragraph para9 = new Paragraph(32);
para9.setSpacingBefore(30);
para9.setSpacingAfter(10);
para9.add(new Chunk(hr));
document.add(para9);
// Setting paragraph line spacing to 32
Paragraph para1 = new Paragraph(32);
para1.setSpacingBefore(5);
para1.setSpacingAfter(10);
para1.add(new Chunk(name));
document.add(para1);
Paragraph para2 = new Paragraph();
para2.setSpacingAfter(10);
para2.add(new Chunk(dest));
document.add(para2);
Paragraph para3 = new Paragraph();
para3.setSpacingAfter(10);
para3.add(new Chunk(stopno));
document.add(para3);
Paragraph para4 = new Paragraph();
para4.setSpacingAfter(10);
para4.add(new Chunk(fare1));
document.add(para4);
Paragraph para5 = new Paragraph();
para5.setSpacingAfter(10);
para5.add(new Chunk(ccnum));
document.add(para5);
document.close();
} catch (DocumentException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
【问题讨论】:
-
这与 PDF、PDF 生成或 iText 无关。
-
@Jongware 为什么?我正在生成一个 PDF 文件,并且正在使用 IText 库。那我应该用什么标签呢?