/*
* Vige, Home of Professional Open Source
* Copyright 2010, Vige, and individual contributors
* by the @authors tag. See the copyright.txt in the distribution for a
* full listing of individual contributors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package it.vige.magazzino.pdf;
import it.vige.magazzino.model.Data;
import it.vige.magazzino.model.Receipt;
import java.io.ByteArrayOutputStream;
import java.util.List;
import java.util.ResourceBundle;
import javax.enterprise.inject.Model;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import com.itextpdf.text.Document;
import com.itextpdf.text.Element;
import com.itextpdf.text.Font;
import com.itextpdf.text.FontFactory;
import com.itextpdf.text.Image;
import com.itextpdf.text.Phrase;
import com.itextpdf.text.pdf.ColumnText;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;
/**
* The maker for pdf documents using format 1
*
* @author <a href="http://www.vige.it">Luca Stancapiano</a>
*/
@Model
public class Format1DocumentReceipt implements DocumentReceipt {
@Inject
private ExternalContext extCtx;
@Inject
FacesContext facesContext;
@Model
public void build(Receipt receipt) throws Exception {
ResourceBundle bundle = ResourceBundle.getBundle("messages");
Document document = new Document();
ByteArrayOutputStream bytesOS = new ByteArrayOutputStream();
PdfWriter writer = PdfWriter.getInstance(document, bytesOS);
document.open();
Font normalFont = new Font();
Font headerFont = FontFactory.getFont(FontFactory.TIMES, 9);
PdfContentByte canvas = writer.getDirectContentUnder();
List<Data> imagesJar = receipt.getJar().getFiles();
if (imagesJar != null && imagesJar.size() > 0) {
Image image1 = Image.getInstance(imagesJar.get(0).getData());
image1.setAbsolutePosition(166, 738);
image1.scalePercent(60);
document.add(image1);
if (imagesJar.size() > 1) {
Image image2 = Image.getInstance(imagesJar.get(1).getData());
image2.setAbsolutePosition(326, 748);
image2.scalePercent(40);
document.add(image2);
}
}
Phrase phrase1 = new Phrase(receipt.getJar().getRagSoc1(), normalFont);
Phrase phrase2 = new Phrase(receipt.getJar().getAddress().getAddress()
+ " " + receipt.getJar().getAddress().getCivicNumber(),
normalFont);
Phrase phrase3 = new Phrase("Loc. "
+ receipt.getJar().getAddress().getTown() + " - "
+ receipt.getJar().getAddress().getCap() + " "
+ receipt.getJar().getAddress().getCity() + " ("
+ receipt.getJar().getAddress().getProvince() + ")", normalFont);
Phrase phrase4 = new Phrase("Tel. "
+ receipt.getJar().getAddress().getPhone() + " r.a.Fax "
+ receipt.getJar().getAddress().getFax(), normalFont);
Phrase phrase5 = new Phrase(receipt.getJar().getAddress().getSite()
+ " E-mail: " + receipt.getJar().getAddress().getEmail(),
normalFont);
ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, phrase1, 36,
784, 0);
ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, phrase2, 36,
774, 0);
ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, phrase3, 36,
764, 0);
ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, phrase4, 36,
754, 0);
ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, phrase5, 36,
744, 0);
Phrase phrase6 = new Phrase(bundle.getString("magazzino_iva") + " "
+ receipt.getJar().getIva(), normalFont);
Phrase phrase7 = new Phrase(bundle.getString("magazzino_capsoc") + " "
+ receipt.getJar().getCapSoc() + " - "
+ bundle.getString("magazzino_reapi") + " n. "
+ receipt.getJar().getReaPI(), normalFont);
Phrase phrase8 = new Phrase("Reg. Impr. PI n. "
+ receipt.getJar().getIva(), normalFont);
ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, phrase6, 36,
724, 0);
ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, phrase7, 36,
714, 0);
ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, phrase8, 36,
704, 0);
Phrase phrase9 = new Phrase("prova 2: prova 2", normalFont);
Phrase phrase10 = new Phrase("prova 3: prova 3", normalFont);
Phrase phrase11 = new Phrase("prova 4: prova 4", normalFont);
Phrase phrase12 = new Phrase("prova 2: prova 2", normalFont);
Phrase phrase13 = new Phrase("prova 3: prova 3", normalFont);
Phrase phrase14 = new Phrase("prova 4: prova 4", normalFont);
Phrase phrase15 = new Phrase("prova 4: prova 4", normalFont);
ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, phrase9, 36,
664, 0);
ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, phrase10, 36,
654, 0);
ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, phrase11, 36,
644, 0);
ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, phrase12, 36,
634, 0);
ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, phrase13, 36,
624, 0);
ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, phrase14, 36,
614, 0);
ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, phrase15, 36,
604, 0);
List<Data> imagesCustomer = receipt.getCustomer().getFiles();
if (imagesCustomer != null && imagesCustomer.size() > 0) {
Image image3 = Image.getInstance(imagesCustomer.get(0).getData());
image3.setAbsolutePosition(212, 664);
image3.scalePercent(40);
document.add(image3);
}
Phrase phrase16 = new Phrase(receipt.getCustomer().getName(),
normalFont);
Phrase phrase17 = new Phrase(receipt.getCustomer().getAddress()
.getAddress()
+ ", " + receipt.getCustomer().getAddress().getCivicNumber(),
normalFont);
Phrase phrase18 = new Phrase(receipt.getCustomer().getAddress()
.getCap()
+ " "
+ receipt.getCustomer().getAddress().getCity()
+ " "
+ receipt.getCustomer().getAddress().getProvince(), normalFont);
ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, phrase16, 206,
644, 0);
ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, phrase17, 206,
624, 0);
ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, phrase18, 206,
604, 0);
Phrase phrase19 = new Phrase("prova", normalFont);
Phrase phrase20 = new Phrase("prova", normalFont);
ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, phrase19, 316,
694, 0);
ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, phrase20, 356,
694, 0);
Phrase phrase21 = new Phrase(bundle.getString("customer_code")
.toUpperCase()
+ " "
+ bundle.getString("customer").toUpperCase(), headerFont);
Phrase phrase22 = new Phrase(bundle.getString("pdf_partita_iva")
.toUpperCase(), headerFont);
Phrase phrase23 = new Phrase(bundle.getString("pdf_agent")
.toUpperCase(), headerFont);
Phrase phrase24 = new Phrase(bundle.getString("pdf_number_receipt")
.toUpperCase(), headerFont);
Phrase phrase25 = new Phrase(bundle.getString("receipt_date")
.toUpperCase()
+ " "
+ bundle.getString("receipt").toUpperCase(), headerFont);
Phrase phrase26 = new Phrase(bundle.getString("pdf_number_page")
.toUpperCase(), headerFont);
ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, phrase21, 24,
540, 0);
ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, phrase22, 100,
540, 0);
ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, phrase23, 176,
540, 0);
ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, phrase24, 390,
540, 0);
ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, phrase25, 466,
540, 0);
ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, phrase26, 542,
540, 0);
Phrase phrase27 = new Phrase("aaqaqaq", normalFont);
Phrase phrase28 = new Phrase("cddcddcd", normalFont);
Phrase phrase29 = new Phrase("cnjcndkd", normalFont);
Phrase phrase30 = new Phrase(receipt.getCodeReceipt() + "", normalFont);
Phrase phrase31 = new Phrase(receipt.getDate(), normalFont);
Phrase phrase32 = new Phrase("tgsb", normalFont);
ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, phrase27, 36,
530, 0);
ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, phrase28, 106,
530, 0);
ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, phrase29, 176,
530, 0);
ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, phrase30, 396,
530, 0);
ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, phrase31, 470,
530, 0);
ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, phrase32, 546,
530, 0);
Phrase phrase33 = new Phrase("aaqaqaq", headerFont);
Phrase phrase34 = new Phrase("cddcddcd", headerFont);
ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, phrase33, 24,
513, 0);
ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, phrase34, 264,
513, 0);
Phrase phrase35 = new Phrase("cnjcndkd", normalFont);
Phrase phrase36 = new Phrase("dddedreqq", normalFont);
ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, phrase35, 36,
503, 0);
ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, phrase36, 276,
503, 0);
Phrase phrase37 = new Phrase(bundle.getString("article_code")
.toUpperCase(), headerFont);
Phrase phrase38 = new Phrase(bundle.getString("article_description")
.toUpperCase(), headerFont);
Phrase phrase39 = new Phrase(bundle.getString("article_um")
.toUpperCase(), headerFont);
Phrase phrase40 = new Phrase(bundle.getString("pdf_number_articles")
.toUpperCase(), headerFont);
Phrase phrase41 = new Phrase(bundle.getString("article_prize")
.toUpperCase(), headerFont);
Phrase phrase42 = new Phrase(bundle.getString("pdf_reduction")
.toUpperCase(), headerFont);
Phrase phrase43 = new Phrase(bundle.getString("pdf_amount")
.toUpperCase(), headerFont);
Phrase phrase44 = new Phrase(bundle.getString("pdf_iva").toUpperCase(),
headerFont);
ColumnText.showTextAligned(canvas, Element.ALIGN_CENTER, phrase37, 47,
480, 0);
ColumnText.showTextAligned(canvas, Element.ALIGN_CENTER, phrase38, 126,
480, 0);
ColumnText.showTextAligned(canvas, Element.ALIGN_CENTER, phrase39, 286,
480, 0);
ColumnText.showTextAligned(canvas, Element.ALIGN_CENTER, phrase40, 324,
480, 0);
ColumnText.showTextAligned(canvas, Element.ALIGN_CENTER, phrase41, 373,
480, 0);
ColumnText.showTextAligned(canvas, Element.ALIGN_CENTER, phrase42, 440,
480, 0);
ColumnText.showTextAligned(canvas, Element.ALIGN_CENTER, phrase43, 488,
480, 0);
ColumnText.showTextAligned(canvas, Element.ALIGN_CENTER, phrase44, 552,
480, 0);
Phrase phrase45 = null;
Phrase phrase46 = null;
Phrase phrase47 = null;
Phrase phrase48 = null;
Phrase phrase49 = null;
Phrase phrase50 = null;
Phrase phrase51 = null;
Phrase phrase52 = null;
int i = 0;
for (i = 0; i < 70; i = i + 15) {
phrase45 = new Phrase("dgbsbb", normalFont);
phrase46 = new Phrase("323232", normalFont);
phrase47 = new Phrase("bbg", normalFont);
phrase48 = new Phrase("wefwe", normalFont);
phrase49 = new Phrase("ewrew", normalFont);
phrase50 = new Phrase("ewr5", normalFont);
phrase51 = new Phrase("dsadasd", normalFont);
phrase52 = new Phrase("ds", normalFont);
ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, phrase45,
59, 460 - i, 0);
ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, phrase46,
126, 460 - i, 0);
ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, phrase47,
280, 460 - i, 0);
ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, phrase48,
306, 460 - i, 0);
ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, phrase49,
368, 460 - i, 0);
ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, phrase50,
436, 460 - i, 0);
ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, phrase51,
480, 460 - i, 0);
ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, phrase52,
556, 460 - i, 0);
}
int j = 298;
if (i - 298 < 0)
i = 298;
else {
j = i;
i = 460 - i;
}
Phrase phrase81 = new Phrase(receipt.getCause(), normalFont);
Phrase phrase82 = new Phrase(receipt.getDescription(), normalFont);
ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, phrase81, 59, i,
0);
ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, phrase82, 326,
i, 0);
Phrase phrase53 = new Phrase(bundle.getString("pdf_total_goods")
.toUpperCase(), headerFont);
Phrase phrase54 = new Phrase(bundle.getString("pdf_reduction")
.toUpperCase(), headerFont);
Phrase phrase55 = new Phrase(bundle.getString("pdf_total_net")
.toUpperCase(), headerFont);
ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, phrase53, 26,
i - 30, 0);
ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, phrase54, 104,
i - 30, 0);
ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, phrase55, 182,
i - 30, 0);
Phrase phrase56 = new Phrase("opoppp", normalFont);
Phrase phrase57 = new Phrase("2ws", normalFont);
Phrase phrase58 = new Phrase("78900", normalFont);
ColumnText.showTextAligned(canvas, Element.ALIGN_RIGHT, phrase56, 96,
i - 50, 0);
ColumnText.showTextAligned(canvas, Element.ALIGN_RIGHT, phrase57, 176,
i - 50, 0);
ColumnText.showTextAligned(canvas, Element.ALIGN_RIGHT, phrase58, 252,
i - 50, 0);
Phrase phrase59 = new Phrase(bundle.getString("pdf_expiries")
.toUpperCase(), headerFont);
ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, phrase59, 36,
i - 70, 0);
Phrase phrase60 = new Phrase("78900", normalFont);
Phrase phrase61 = new Phrase("opoppp", normalFont);
Phrase phrase62 = new Phrase("2ws", normalFont);
ColumnText.showTextAligned(canvas, Element.ALIGN_RIGHT, phrase60, 166,
i - 90, 0);
ColumnText.showTextAligned(canvas, Element.ALIGN_RIGHT, phrase61, 166,
i - 110, 0);
ColumnText.showTextAligned(canvas, Element.ALIGN_RIGHT, phrase62, 166,
i - 130, 0);
Phrase phrase63 = new Phrase("78900", normalFont);
Phrase phrase64 = new Phrase("opoppp", normalFont);
Phrase phrase65 = new Phrase("2ws", normalFont);
ColumnText.showTextAligned(canvas, Element.ALIGN_RIGHT, phrase63, 256,
i - 90, 0);
ColumnText.showTextAligned(canvas, Element.ALIGN_RIGHT, phrase64, 256,
i - 110, 0);
ColumnText.showTextAligned(canvas, Element.ALIGN_RIGHT, phrase65, 256,
i - 130, 0);
Phrase phrase66 = new Phrase(bundle.getString("pdf_transport")
.toUpperCase(), headerFont);
Phrase phrase67 = new Phrase(bundle.getString("pdf_caching")
.toUpperCase(), headerFont);
Phrase phrase68 = new Phrase(bundle.getString("pdf_various_costs")
.toUpperCase(), headerFont);
Phrase phrase69 = new Phrase(bundle.getString("pdf_stamps")
.toUpperCase(), headerFont);
ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, phrase66, 260,
i - 30, 0);
ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, phrase67, 340,
i - 30, 0);
ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, phrase68, 418,
i - 30, 0);
ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, phrase69, 496,
i - 30, 0);
Phrase phrase70 = new Phrase("2ws", normalFont);
Phrase phrase71 = new Phrase("78900", normalFont);
Phrase phrase72 = new Phrase("opoppp", normalFont);
Phrase phrase73 = new Phrase("2ws", normalFont);
ColumnText.showTextAligned(canvas, Element.ALIGN_RIGHT, phrase70, 300,
i - 50, 0);
ColumnText.showTextAligned(canvas, Element.ALIGN_RIGHT, phrase71, 390,
i - 50, 0);
ColumnText.showTextAligned(canvas, Element.ALIGN_RIGHT, phrase72, 468,
i - 50, 0);
ColumnText.showTextAligned(canvas, Element.ALIGN_RIGHT, phrase73, 546,
i - 50, 0);
Phrase phrase74 = new Phrase(bundle.getString("article_imponible")
.toUpperCase(), headerFont);
Phrase phrase75 = new Phrase(bundle.getString("pdf_tax").toUpperCase(),
headerFont);
Phrase phrase76 = new Phrase(bundle.getString("pdf_total_receipt")
.toUpperCase(), headerFont);
ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, phrase74, 260,
i - 70, 0);
ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, phrase75, 352,
i - 70, 0);
ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, phrase76, 484,
i - 70, 0);
Phrase phrase77 = new Phrase("2ws", normalFont);
Phrase phrase78 = new Phrase("78900", normalFont);
Phrase phrase79 = new Phrase("opoppp", normalFont);
Phrase phrase80 = new Phrase("2ws", normalFont);
ColumnText.showTextAligned(canvas, Element.ALIGN_RIGHT, phrase77, 310,
i - 90, 0);
ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, phrase78, 352,
i - 90, 0);
ColumnText.showTextAligned(canvas, Element.ALIGN_RIGHT, phrase79, 450,
i - 90, 0);
ColumnText.showTextAligned(canvas, Element.ALIGN_RIGHT, phrase80, 536,
i - 110, 0);
PdfPTable table = new PdfPTable(1);
table.getDefaultCell().setPadding(50);
table.setWidthPercentage(105);
PdfPCell cell = new PdfPCell();
cell.setPadding(127);
table.addCell(cell);
document.add(table);
table = new PdfPTable(6);
table.getDefaultCell().setPadding(5);
table.setWidthPercentage(105);
table.setWidths(new float[] { 7, 7, 20, 7, 7, 3 });
cell = new PdfPCell();
cell.setPadding(14);
table.addCell(cell);
table.addCell(cell);
table.addCell(cell);
table.addCell(cell);
table.addCell(cell);
table.addCell(cell);
document.add(table);
table = new PdfPTable(2);
table.getDefaultCell().setPadding(5);
table.setWidthPercentage(105);
table.setWidths(new float[] { 15.5f, 20 });
cell = new PdfPCell();
cell.setPadding(14);
table.addCell(cell);
table.addCell(cell);
document.add(table);
table = new PdfPTable(1);
table.getDefaultCell().setPadding(50);
table.setWidthPercentage(105);
cell = new PdfPCell();
cell.setPadding(3);
table.addCell(cell);
document.add(table);
table = new PdfPTable(7);
table.getDefaultCell().setPadding(100);
table.setWidths(new float[] { 23.5f, 2, 5, 6, 4, 7, 3 });
table.setWidthPercentage(105);
cell = new PdfPCell();
cell.setPadding(j * 8 - 2279);
table.addCell(cell);
table.addCell(cell);
table.addCell(cell);
table.addCell(cell);
table.addCell(cell);
table.addCell(cell);
table.addCell(cell);
document.add(table);
table = new PdfPTable(7);
table.getDefaultCell().setPadding(5);
table.setWidthPercentage(105);
cell = new PdfPCell();
cell.setPadding(17);
table.addCell(cell);
table.addCell(cell);
table.addCell(cell);
table.addCell(cell);
table.addCell(cell);
table.addCell(cell);
table.addCell(cell);
document.add(table);
table = new PdfPTable(4);
table.getDefaultCell().setPadding(5);
table.setWidths(new float[] { 10.5f, 4, 6, 4 });
table.setWidthPercentage(105);
cell = new PdfPCell();
cell.setPadding(48);
table.addCell(cell);
table.addCell(cell);
table.addCell(cell);
table.addCell(cell);
document.add(table);
document.close();
HttpServletResponse response = (HttpServletResponse) extCtx
.getResponse();
response.setContentType("application/pdf");
response.addHeader("Content-disposition", "attachment; filename=\""
+ bundle.getString("receipt") + "-" + receipt.getDate()
+ ".pdf\"");
ServletOutputStream os = response.getOutputStream();
os.write(bytesOS.toByteArray());
os.flush();
os.close();
facesContext.responseComplete();
}
}