-2
我正在做一個項目,我需要爲出現在考試中的學生創建一張錄取卡。 PDF生成部分工作正常,但我的問題是我必須將我的PDF編碼爲Base64格式。我沒有找到任何解決方案。我的代碼是作爲波紋管如何將在response.outputStream中生成的PDF轉換爲Base64編碼
public void downloadPdf() throws IOException, DocumentException {
System.out.println("hi i ma in");
resultList=examinationDetailsService.readAdmitCardData();
for(Object[] data:resultList)
{
personalDetails=(PersonalDetails)data[0];
System.out.println("name"+personalDetails.getApplicantName());
rollNoAssign=(RollNoAssign)data[1];
System.out.println("rollno"+rollNoAssign.getRollNo());
examDateAssign=(ExamDateAssign)data[2];
}
//Converting Date
SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("dd-MM-yyyy");
String date = DATE_FORMAT.format(examDateAssign.getExaminationDate());
// Get the FacesContext
FacesContext facesContext = FacesContext.getCurrentInstance();
// Get HTTP response
HttpServletResponse response = (HttpServletResponse) facesContext.getExternalContext().getResponse();
// Set response headers
response.reset(); // Reset the response in the first place
response.setHeader("Content-Type", "application/pdf"); // Set only the content type
// Open response output stream
OutputStream responseOutputStream = response.getOutputStream();
Document document = new Document(PageSize.A4, 0, 0, 0, 0);
PdfWriter.getInstance(document,response.getOutputStream());
document.open();
PdfPTable maintable = new PdfPTable(1);
maintable.setWidthPercentage(90);
maintable.setSpacingBefore(0f);
maintable.setSpacingAfter(0f);
Paragraph ph1 = new Paragraph();
ph1.add(new Chunk("\n\nGOVERNMENT OF ASSAM \nOFFICE OF THE ELECTRICAL LICENSING BOARD, ASSAM\n1", FontFactory.getFont(FontFactory.TIMES_ROMAN, 12, Font.NORMAL)));
//ph1.add(new Chunk("ST", FontFactory.getFont(FontFactory.TIMES_ROMAN, 12, Font.NORMAL)));
Chunk superScript = new Chunk("ST", FontFactory.getFont(FontFactory.TIMES_ROMAN, 8, Font.NORMAL));
superScript.setTextRise(5f);
ph1.add(superScript);
ph1.add(new Chunk(" FLOOR, WEST END BLOCK, HOUSEFED COMPLEX,DISPUR, GUWAHATI-781006, ASSAM.", FontFactory.getFont(FontFactory.TIMES_ROMAN, 12, Font.NORMAL)));
ph1.add(new Chunk("\n***\n", FontFactory.getFont(FontFactory.TIMES_ROMAN, 12, Font.BOLD)));
ph1.add(new Chunk("\nADMIT CARD", FontFactory.getFont(FontFactory.TIMES_ROMAN, 12, Font.BOLD)));
PdfPCell heading1 = new PdfPCell(ph1);
heading1.setBorder(0);
heading1.setHorizontalAlignment(Element.ALIGN_CENTER);
heading1.setVerticalAlignment(Element.ALIGN_CENTER);
maintable.addCell(heading1);
PdfPTable maintable1 = new PdfPTable(1);
maintable1.setWidthPercentage(87);
maintable1.setSpacingBefore(0f);
maintable1.setSpacingAfter(0f);
Paragraph ph2 = new Paragraph();
ph2.add(new Chunk("\n\nShri/Smti "+personalDetails.getApplicantName()+", Roll No. "+rollNoAssign.getRollNo()+" is hereby "
+ "allowed to appear in the examination for grant of Electrical Supervisor's Certificate of Competency "
+ "to be held at "+ rollNoAssign.getVenue().getName()
+ "as per schedule given below:", FontFactory.getFont(FontFactory.TIMES_ROMAN, 11, Font.NORMAL)));
ph2.add(new Chunk("\n\n Viva-voce", FontFactory.getFont(FontFactory.TIMES_ROMAN, 11, Font.BOLD)));
ph2.add(new Chunk(" test on "+date+ " at 9 AM/12.30 PM ;", FontFactory.getFont(FontFactory.TIMES_ROMAN, 11, Font.NORMAL)));
ph2.add(new Chunk(" Written", FontFactory.getFont(FontFactory.TIMES_ROMAN, 11, Font.BOLD)));
ph2.add(new Chunk(" test on __________ at 9 AM.", FontFactory.getFont(FontFactory.TIMES_ROMAN, 11, Font.NORMAL)));
ph2.add(new Chunk("\n\n\nPlease bring the followings with you while coming for the said examinations: \n"
+ "\n1.Original copy of Degree/Diploma/ITI Certificate/Supervisor's Certificate of Competency/"
+ "Workmen's Permit\n\n belonging to you and this Admit Card in original.\n"
+ "\n2.Detail experience certificate(s) relevant to the part(s) of Supervisor's examination applied for.\n"
+ "\n3.\n"
+ "\n\nNB: (a) No alteration is allowed in the entries on this Admit Card without the authority of the Board."
+ "\n (b) No expense(s) incurred by any candidate will be borne by the Board.\n\n\n", FontFactory.getFont(FontFactory.TIMES_ROMAN, 11, Font.NORMAL)));
PdfPCell heading2 = new PdfPCell(ph2);
heading2.setBorder(0);
heading2.setHorizontalAlignment(Element.ALIGN_JUSTIFIED);
heading2.setVerticalAlignment(Element.ALIGN_CENTER);
maintable1.addCell(heading2);
PdfPTable maintable2 = new PdfPTable(2);
float[] columnWidths = new float[]{55f, 45f};
maintable2.setWidths(columnWidths);
maintable2.setWidthPercentage(84);
maintable2.setSpacingBefore(0f);
maintable2.setSpacingAfter(0f);
Paragraph ph31 = new Paragraph();
ph31.add(new Chunk("Details furnished by you in the application form and/or examination process are used by the Board"
+ " for further needful, hence, if you feel any correction(s) in the same is/are required, please get those done before"
+ " leaving the examination venue. The Board shall not be under any obligation of removing the difficulties arising later"
+ " on out of incorrect/improper information furnished by you or non-furnishing of required ones.\n", FontFactory.getFont(FontFactory.COURIER, 10, Font.NORMAL)));
PdfPCell heading31 = new PdfPCell(ph31);
heading31.setBorder(15);
heading31.setHorizontalAlignment(Element.ALIGN_JUSTIFIED);
heading31.setVerticalAlignment(Element.ALIGN_LEFT);
maintable2.addCell(heading31);
Paragraph ph32 = new Paragraph();
ph32.add(new Chunk("\n\n\n(Member Secretary)\nElectrical Licensing Board,\nAssam.", FontFactory.getFont(FontFactory.TIMES_ROMAN, 12, Font.NORMAL)));
PdfPCell heading32 = new PdfPCell(ph32);
heading32.setBorder(0);
heading32.setHorizontalAlignment(Element.ALIGN_CENTER);
heading32.setVerticalAlignment(Element.ALIGN_CENTER);
maintable2.addCell(heading32);
document.add(maintable);
document.add(maintable1);
document.add(maintable2);
document.close();
/* // Read PDF contents
URL url = new URL(PDF_URL);
InputStream pdfInputStream = url.openStream();*/
// Read PDF contents and write them to the output
byte[] bytesBuffer = new byte[2048];
int bytesRead;
/* while ((bytesRead = pdfInputStream.read(bytesBuffer)) > 0) {
responseOutputStream.write(bytesBuffer, 0, bytesRead);
}
*/
Base64 encoder = new Base64();
byte[] decodedBytes = encoder.o
// Make sure that everything is out
responseOutputStream.write(decodedBytes);
responseOutputStream.flush();
// Close both streams
//pdfInputStream.close();
responseOutputStream.close();
// JSF doc:
// Signal the JavaServer Faces implementation that the HTTP response for this request has already been generated
// (such as an HTTP redirect), and that the request processing lifecycle should be terminated
// as soon as the current phase is completed.
facesContext.responseComplete();
}
請給我任何解決方案。我利用iText
感謝Bruno Lowagie – 2014-12-18 05:07:19
我打算寫一個更長的答案,但我沒有時間詳細說明,所以我很高興看到我的答案足以解決問題。 – 2014-12-18 07:16:15
布魯諾Lowagie請更新它,因爲我需要使用pdf與webservice – 2014-12-18 07:32:40