フレーズと段落の2つのチャンクが追加されています。
Chunk reportTitle= new Chunk("Candidate Login Report ",catFont);
Chunk divisiontitle = new Chunk("Division : \t\t"+divisionName);
Phrase phrase = new Phrase();
phrase.add(reportTitle);
phrase.add(divisiontitle);
Paragraph para = new Paragraph();
para.add(phrase);
チャンクdivisiontitle
を右揃えに設定する必要があります。 iIextでこれを行うための規定はありますか?
あなたは本当にあなたのコメントであなた自身に答えました。
Chunk reportTitle= new Chunk("Candidate Login Report ",catFont);
Chunk divisiontitle = new Chunk("Division : \t\t"+divisionName);
Phrase phrase = new Phrase();
phrase.add(reportTitle);
phrase.add(divisiontitle);
Paragraph para = new Paragraph();
para.add(phrase);
para.setAlignment(Element.ALIGN_RIGHT);
次に、それを任意のセルに追加すると、正しく配置されます。
バジャンギ、
ColumnText.showTextAligned()を使用してテキストを揃えることができます。次のことを試してください。
Document document = new Document();
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(filename));
PdfContentByte canvas = writer.getDirectContent();
ColumnText.showTextAligned(canvas, Element.ALIGN_RIGHT, phrase, xPosition, yPosition, 0);
乾杯!
-エリック
add multiple Chunk and Phrase in itextpdf
package com.pdf.hl;
import Java.io.FileOutputStream;
import Java.io.IOException;
import Java.net.URL;
import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Chunk;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Element;
import com.itextpdf.text.Font;
import com.itextpdf.text.Image;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.Phrase;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.html.WebColors;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;
public class GraphicsStateOperators {
public static final String RESULT = "d:/graphics_state.pdf";
static Font.FontFamily ff = Font.FontFamily.HELVETICA;
static float size = 10;
static float size1 = 8;
public void createPdf(String filename) throws Exception {
Font bold = new Font(Font.FontFamily.HELVETICA, 8f, Font.BOLD);
Font normal = new Font(Font.FontFamily.HELVETICA, 8f, Font.NORMAL);
Document document = new Document();
PdfWriter writer = PdfWriter.getInstance(document,
new FileOutputStream(filename));
document.open();
// /////////////////////////////////////////////
PdfPTable tabletmp = new PdfPTable(1);
tabletmp.getDefaultCell().setBorder(Rectangle.NO_BORDER);
tabletmp.setWidthPercentage(100);
PdfPTable table = new PdfPTable(2);
float[] colWidths = { 45, 55 };
table.setWidths(colWidths);
String imageUrl = "http://logo.com/content1/images/logo_heartSmart.jpg";
Image image2 = Image.getInstance(new URL(imageUrl));
image2.setWidthPercentage(60);
table.getDefaultCell().setBorder(Rectangle.NO_BORDER);
table.getDefaultCell().setHorizontalAlignment(Element.ALIGN_RIGHT);
table.getDefaultCell().setVerticalAlignment(Element.ALIGN_TOP);
PdfPCell cell = new PdfPCell();
cell.setBorder(Rectangle.NO_BORDER);
cell.addElement(image2);
table.addCell(cell);
String receiptNo = "123455555555555555";
String collectionDate = "09/09/09";
Chunk chunk1 = new Chunk("Date: ", normal);
Phrase ph1 = new Phrase(chunk1);
Chunk chunk2 = new Chunk(collectionDate, bold);
Phrase ph2 = new Phrase(chunk2);
Chunk chunk3 = new Chunk("\nReceipt No: ", normal);
Phrase ph3 = new Phrase(chunk3);
Chunk chunk4 = new Chunk(receiptNo, bold);
Phrase ph4 = new Phrase(chunk4);
Paragraph ph = new Paragraph();
ph.add(ph1);
ph.add(ph2);
ph.add(ph3);
ph.add(ph4);
table.addCell(ph);
tabletmp.addCell(table);
PdfContentByte canvas = writer.getDirectContent();
canvas.saveState();
canvas.setLineWidth((float) 10 / 10);
canvas.moveTo(40, 806 - (5 * 10));
canvas.lineTo(555, 806 - (5 * 10));
canvas.stroke();
document.add(tabletmp);
canvas.restoreState();
PdfPTable tabletmp1 = new PdfPTable(1);
tabletmp1.getDefaultCell().setBorder(Rectangle.NO_BORDER);
tabletmp1.setWidthPercentage(100);
PdfPTable table1 = new PdfPTable(2);
table1.getDefaultCell().setBorder(Rectangle.NO_BORDER);
table1.getDefaultCell().setHorizontalAlignment(Element.ALIGN_JUSTIFIED);
table1.getDefaultCell().setVerticalAlignment(Element.ALIGN_JUSTIFIED);
float[] colWidths1 = { 60, 40 };
table1.setWidths(colWidths1);
String Patient = "abcddd";
String Email = "[email protected]";
String Phone = "89890099890890";
PdfPCell cell3 = new PdfPCell();
cell3.setBorder(Rectangle.NO_BORDER);
Chunk chunkPatientLabal = new Chunk("Patient: ", normal);
Phrase phPatientLabal = new Phrase(chunkPatientLabal);
Chunk chunkPatient = new Chunk(Patient, bold);
Phrase phPatient = new Phrase(chunkPatient);
Chunk chunkEmailLabal = new Chunk("\nEmail: ", normal);
Phrase phEmailLabal = new Phrase(chunkEmailLabal);
Chunk chunkEmail = new Chunk(Email, bold);
Phrase phEmail = new Phrase(chunkEmail);
Chunk chunkPhoneLabal = new Chunk("\nPhone: ", normal);
Phrase phPhoneLabal = new Phrase(chunkPhoneLabal);
Chunk chunkPhone = new Chunk(Phone, bold);
Phrase phPhone = new Phrase(chunkPhone);
Paragraph phN = new Paragraph();
phN.add(phPatientLabal);
phN.add(phPatient);
phN.add(phEmailLabal);
phN.add(phEmail);
phN.add(phPhoneLabal);
phN.add(phPhone);
cell3.addElement(phN);
table1.addCell(cell3);
PdfPCell cell4 = new PdfPCell();
cell4.getBorderWidthRight();
cell4.setBorder(Rectangle.NO_BORDER);
String ReferingPhysician = "phy Patient";
Chunk chunkRefPhyLabal = new Chunk("Refering Physician: ", normal);
Phrase phRefPhyLabal = new Phrase(chunkRefPhyLabal);
Chunk chunkRefPhy = new Chunk(ReferingPhysician, bold);
Phrase phRefPhy = new Phrase(chunkRefPhy);
Paragraph phN1 = new Paragraph();
phN1.add(phRefPhyLabal);
phN1.setAlignment(com.itextpdf.text.Element.ALIGN_RIGHT);
phN1.add(phRefPhy);
cell4.addElement(phN1);
table1.addCell(cell4);
tabletmp1.addCell(table1);
tabletmp1.setSpacingAfter(10);
document.add(tabletmp1);
PdfPTable table7 = new PdfPTable(1);
table7.setWidthPercentage(100);
PdfPCell c7 = new PdfPCell(new Phrase("Payment Summry", new Font(ff,
size, Font.BOLD)));
BaseColor headingColor7 = WebColors.getRGBColor("#989898");
c7.setBackgroundColor(headingColor7);
c7.setHorizontalAlignment(com.itextpdf.text.Element.ALIGN_LEFT);
table7.addCell(c7);
table7.setSpacingAfter(2f);
document.add(table7);
// ////////////////////////////////////////////////////////
PdfPTable tabletmp2 = new PdfPTable(1);
BaseColor headingColor8 = WebColors.getRGBColor("#F0F0F0");
tabletmp2.setWidthPercentage(100);
PdfPTable table8 = new PdfPTable(2);
table8.getDefaultCell().setBorder(Rectangle.NO_BORDER);
table8.getDefaultCell().setHorizontalAlignment(Element.ALIGN_JUSTIFIED);
table8.getDefaultCell().setVerticalAlignment(Element.ALIGN_JUSTIFIED);
float[] colWidths8 = { 50, 50 };
table8.setWidths(colWidths8);
PdfPCell cellPaymentSummry = new PdfPCell();
cellPaymentSummry.setBackgroundColor(headingColor8);
cellPaymentSummry.setBorder(Rectangle.NO_BORDER);
Chunk chunkPaymentInvoiceLabal = new Chunk("Invoice Id", normal);
Phrase phPaymentInvoiceLabal = new Phrase(chunkPaymentInvoiceLabal);
Chunk chunkPaymentModeLabal = new Chunk("\nPayment Mode", normal);
Phrase phPaymentModeLabal = new Phrase(chunkPaymentModeLabal);
Chunk chunkAmountReceivedLabal = new Chunk("\nAmount Received", normal);
Chunk chunkAmountDueLabal = new Chunk("\nAmount Due", normal);
Phrase phAmountDueLabal = new Phrase(chunkAmountDueLabal);
Phrase phAmountReceivedLabal = new Phrase(chunkAmountReceivedLabal);
Paragraph phPaymentSummry = new Paragraph();
phPaymentSummry.add(phPaymentInvoiceLabal);
phPaymentSummry.add(phPaymentModeLabal);
phPaymentSummry.add(phAmountReceivedLabal);
phPaymentSummry.add(phAmountDueLabal);
cellPaymentSummry.addElement(phPaymentSummry);
table8.addCell(cellPaymentSummry);
PdfPCell cellPaymentSummry1 = new PdfPCell();
cellPaymentSummry1.setBackgroundColor(headingColor8);
cellPaymentSummry1.getBorderWidthRight();
cellPaymentSummry1.setBorder(Rectangle.NO_BORDER);
String PaymentMode = "rannnnnnnnnnnnnnnnn";
String amountReceived = "2.33";
String amountDue = "28.00";
String invoice = "123";
Chunk chunkPaymentInvoicel = new Chunk(invoice, bold);
Phrase phPaymentInvoice = new Phrase(chunkPaymentInvoicel);
Chunk chunkPaymentMode = new Chunk("\n" + PaymentMode, bold);
Phrase phPaymentMode = new Phrase(chunkPaymentMode);
Chunk chunkAmountReceived = new Chunk("\n$" + amountReceived, bold);
Phrase phAmountReceived = new Phrase(chunkAmountReceived);
Chunk chunkAmountDue = new Chunk("\n$" + amountDue, bold);
Phrase phAmountDue = new Phrase(chunkAmountDue);
Paragraph phPaymentSummry1 = new Paragraph();
phPaymentSummry1.add(phPaymentInvoice);
phPaymentSummry1.add(phPaymentMode);
phPaymentSummry1.setAlignment(com.itextpdf.text.Element.ALIGN_RIGHT);
phPaymentSummry1.add(phAmountReceived);
phPaymentSummry1.add(phAmountDue);
cellPaymentSummry1.addElement(phPaymentSummry1);
table8.addCell(cellPaymentSummry1);
tabletmp2.addCell(table8);
document.add(tabletmp2);
document.close();
}
/**
* Main method.
*
* @param args
* no arguments needed
* @throws DocumentException
* @throws IOException
*/
public static void main(String[] args) throws Exception {
new GraphicsStateOperators().createPdf(RESULT);
System.out.println("Done Please check........");
}
}
@WebServlet(name = "Servlet")
public class PDFServlet extends HttpServlet {
private String RESOURCE = "images/logo-new.png";
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
response.setContentType("application/pdf");
Document document = new Document(PageSize.LETTER);
PdfWriter writer = null;
try {
writer = PdfWriter.getInstance(document, response.getOutputStream());
document.open();
document.add(createHeaderTable());
document.add(comapnyNameTable());
document.add(createAddressTable());
document.add(getTable());
document.add(createFooterTable());
PdfContentByte canvas = writer.getDirectContent();
canvas.setLineWidth((float) 10 / 10);
canvas.moveTo(40, 765 - (5 * 10));
canvas.lineTo(570, 770 - (5 * 10));
canvas.stroke();
document.close();
} catch (DocumentException e) {
e.printStackTrace();
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
private PdfPTable createHeaderTable(){
Font bold = new Font(Font.FontFamily.HELVETICA, 8f, Font.BOLD);
Font normal = new Font(Font.FontFamily.HELVETICA, 8f, Font.NORMAL);
PdfPTable table = new PdfPTable(2);
try{
table.setWidthPercentage(100f);
table.setHorizontalAlignment(0);;
table.setSpacingBefore(10);
table.setWidths(new int[]{2, 6});
Image img = Image.getInstance(RESOURCE);
img.scalePercent(28f);
PdfPCell pdfPCell = new PdfPCell(img,true);
//pdfPCell.addElement(img);
pdfPCell.setBorder(Rectangle.NO_BORDER);
pdfPCell.setFixedHeight(50);
table.addCell(pdfPCell);
Paragraph paragraph = new Paragraph(10);
paragraph.add(new Chunk("Date:",bold));
paragraph.add(new Chunk("11-09-2015",normal));
paragraph.add(new Chunk("\nOrder Id:",bold));
paragraph.add(new Chunk("OrderId#12345",normal));
paragraph.setIndentationLeft(260);
table.addCell(newPdfPcel(paragraph,50));
}
catch (DocumentException e){
e.printStackTrace();
}
catch (Exception e){
e.printStackTrace();
}
return table;
}
private PdfPTable createAddressTable(){
PdfPTable table = new PdfPTable(2);
Font bold = new Font(Font.FontFamily.HELVETICA, 8f, Font.BOLD);
Font normal = new Font(Font.FontFamily.HELVETICA, 8f, Font.NORMAL);
try{
table.setWidthPercentage(100f);
table.setHorizontalAlignment(0);;
table.setSpacingBefore(10);
table.setSpacingAfter(10);
table.setWidths(new int[]{2, 6});
Paragraph paragraph = new Paragraph(10);
paragraph.add(new Chunk("Billed To",bold));
paragraph.add(new Chunk("\nOrdered By tdhdghfjghjg fvgfdghgfhg gfhggjdjh ghgfhgjhgjhg gfhghjghj dghgfh ghggfhgfh ghgffgh ghjggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg", normal));
paragraph.setIndentationRight(40);
table.addCell(newPdfPcel(paragraph,60));
Paragraph paragraph2 = new Paragraph(10);
paragraph2.add(new Chunk("Service By ",bold));
paragraph2.add(new Chunk("\nService B gfdsgfdhghhhhy tdhdghfjghjg fvgfdghgfhg gfhggjdjh ghgfhgjhgjhg gfhghjghj dghgfhh ghfddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",normal));
paragraph2.setIndentationLeft(260);
table.addCell(newPdfPcel(paragraph2,60));
Paragraph paragraph3 = new Paragraph(10);
paragraph3.add(new Chunk("Payment Method:", bold));
paragraph3.add(new Chunk("\nVisa ending with *888888888888888888888888888888888888888888888**********123,\[email protected]",normal));
table.addCell(newPdfPcel(paragraph3,60));
Paragraph paragraph4 = new Paragraph(10);
paragraph4.add(new Chunk("Order Date:",bold));
paragraph4.add(new Chunk("\nMarch 7,2014",normal));
paragraph4.setIndentationLeft(260);
table.addCell(newPdfPcel(paragraph4,60));
}
catch (DocumentException e){
e.printStackTrace();
}
catch (Exception e){
e.printStackTrace();
}
return table;
}
private PdfPTable comapnyNameTable(){
PdfPTable table = new PdfPTable(1);
Font bold = new Font(Font.FontFamily.HELVETICA, 8f, Font.BOLD);
Font normal = new Font(Font.FontFamily.HELVETICA, 8f, Font.NORMAL);
try{
table.setWidthPercentage(100f);
Paragraph paragraph = new Paragraph(10);
paragraph.add(new Chunk("Travels Company",bold));
paragraph.add(new Chunk("\nOrdered By tdhdghfjghjg fvgfdghgfhg gfhggjdjh ghgfhgjhgjhg gfhghjghj dghgfh ghggfhgfh ghgffgh ghjggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg",normal));
paragraph.setIndentationLeft(200f);
paragraph.setIndentationRight(200f);
table.addCell(newPdfPcel(paragraph,60));
}
catch (Exception e){
e.printStackTrace();
}
return table;
}
private PdfPTable createFooterTable(){
PdfPTable table = new PdfPTable(2);
Font bold = new Font(Font.FontFamily.HELVETICA, 8f, Font.BOLD);
Font normal = new Font(Font.FontFamily.HELVETICA, 8f, Font.NORMAL);
try{
table.setWidthPercentage(100f);
table.setHorizontalAlignment(0);;
table.setSpacingBefore(10);
table.setSpacingAfter(10);
table.setWidths(new int[]{2, 6});
Paragraph paragraph = new Paragraph(10);
paragraph.add(new Chunk("Tearms & Conditions",bold));
paragraph.add(new Chunk("\ngfdhgfhgfh",normal));
Paragraph paragraph2 = new Paragraph(10);
paragraph2.add(new Chunk("Aggrigate Service By",bold));
paragraph2.add(new Chunk("\nTruckWay",normal));
paragraph2.setIndentationLeft(260);
table.addCell(newPdfPcel(paragraph2,0));
}
catch (DocumentException e){
e.printStackTrace();
}
catch (Exception e){
e.printStackTrace();
}
return table;
}
private Paragraph createParagraph(String text,Font font,float indentationLeft,float indentationRight){
Paragraph paragraph = new Paragraph(10);
paragraph.add(new Chunk(text,font));
paragraph.setIndentationLeft(indentationLeft);
paragraph.setIndentationRight(indentationRight);
return paragraph;
}
private PdfPCell newPdfPcel(Paragraph paragraph,float fixedHight){
PdfPCell pdfPCell = new PdfPCell();
pdfPCell.addElement(paragraph);
pdfPCell.setBorder(Rectangle.NO_BORDER);
pdfPCell.setFixedHeight(fixedHight);
return pdfPCell;
}
public PdfPTable getTable()throws DocumentException, IOException {
// Create a table with 7 columns
PdfPTable table = new PdfPTable(2);
table.setWidthPercentage(100f);
// Add the first header row
PdfPCell cell = new PdfPCell(new Phrase("Order Details", FontFactory.getFont("Arial",10,Font.BOLD,BaseColor.BLACK)));
cell.setBackgroundColor(BaseColor.CYAN);
cell.setHorizontalAlignment(Element.ALIGN_LEFT);
cell.setColspan(7);
table.addCell(cell);
Font font = new Font();
font.setSize(10);
font.setFamily("Arial");
table.addCell(createCel("From Place",font,Element.ALIGN_LEFT));
table.addCell(createCel("Hyderabad",font,Element.ALIGN_LEFT));
table.addCell(createCel("To Place",font,Element.ALIGN_LEFT));
table.addCell(createCel("Bangolore",font,Element.ALIGN_LEFT));
table.addCell(createCel("Truck RequestDate",font,Element.ALIGN_LEFT));
table.addCell(createCel("09/9/15",font,Element.ALIGN_LEFT));
table.addCell(createCel("Truck Type",font,Element.ALIGN_LEFT));
table.addCell(createCel("6 wheeler",font,Element.ALIGN_LEFT));
table.addCell(createCel("No OfTrucks",font,Element.ALIGN_LEFT));
table.addCell(createCel("1",font,Element.ALIGN_LEFT));
table.addCell(createCel("Total Capacity",font,Element.ALIGN_LEFT));
table.addCell(createCel("8",font,Element.ALIGN_LEFT));
table.addCell(createCel("Total Amount",font,Element.ALIGN_LEFT));
table.addCell(createCel("1000.00",font,Element.ALIGN_LEFT));
table.addCell(createCel("From Addressy",font,Element.ALIGN_LEFT));
table.addCell(createCel("hyd",font,Element.ALIGN_LEFT));
table.addCell(createCel("To Address",font,Element.ALIGN_LEFT));
table.addCell(createCel("Bang",font,Element.ALIGN_LEFT));
table.addCell(createCel("Advance",font,Element.ALIGN_RIGHT));
table.addCell(createCel("1000.00",font,Element.ALIGN_RIGHT));
table.addCell(createCel("Service Charges",font,Element.ALIGN_RIGHT));
table.addCell(createCel("25.00",font,Element.ALIGN_RIGHT));
table.addCell(createCel("Total",font,Element.ALIGN_RIGHT));
table.addCell(createCel("1000.25",font,Element.ALIGN_RIGHT));
return table;
}
private PdfPCell createCel(String text,Font font,int alignment){
PdfPCell pdfPCel = new PdfPCell(new Phrase(text,font));
pdfPCel.setHorizontalAlignment(alignment);
return pdfPCel;
}
}