package ml; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.OutputStream; import javax.servlet.*; import javax.servlet.http.*; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDPage; import org.apache.pdfbox.pdmodel.font.PDFont; import org.apache.pdfbox.pdmodel.font.PDType1Font; import org.apache.pdfbox.pdmodel.font.PDTrueTypeFont; import java.io.FileInputStream; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDPage; import java.awt.*; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.util.TreeMap; import java.awt.*; import java.awt.image.BufferedImage; import java.io.File; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDPage; import org.apache.pdfbox.pdmodel.common.PDRectangle; import org.apache.pdfbox.pdmodel.font.PDType1Font; import org.apache.pdfbox.pdmodel.font.PDType0Font; import org.apache.pdfbox.pdmodel.font.PDSimpleFont; import org.apache.pdfbox.pdmodel.common.PDStream; import org.apache.pdfbox.pdmodel.PDPageContentStream; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDPage; import org.apache.pdfbox.pdmodel.common.PDRectangle; import org.apache.pdfbox.pdmodel.font.PDType0Font; import org.apache.pdfbox.util.Matrix; public class GPdf extends HttpServlet { /** * @see HttpServlet#service(HttpServletRequest request, HttpServletResponse response) */ protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { ByteArrayOutputStream output = new ByteArrayOutputStream(); output = createPDF(); response.addHeader("Content-Type", "application/force-download"); response.addHeader("Content-Disposition", "attachment; filename=\"yourFile.pdf\""); response.getOutputStream().write(output.toByteArray()); } catch (Exception ex) { ex.printStackTrace(); } } /** * Serial version UID. */ private static final long serialVersionUID = 6067021675155015602L; public ByteArrayOutputStream createPDF() throws IOException { PDDocument document; PDPage page; // PDFont font; PDPageContentStream contentStream; // PDJpeg front; // PDJpeg back; // InputStream inputFront; // InputStream inputBack; ByteArrayOutputStream output = new ByteArrayOutputStream(); // Creating Document document = new PDDocument(); // Creating Pages for(int i=0; i<2; i++) { page = new PDPage(); // Adding page to document document.addPage(page); // Adding FONT to document //font = PDType1Font.HELVETICA; // String dir = "../pdfbox/src/main/resources/org/apache/pdfbox/resources/ttf/"; // PDType0Font font = PDType0Font.load(document, new File((new StringBuilder()).append(getServletConfig().getServletContext().getRealPath("/")).append("files/servletfonts/ArialUni.ttf").toString())); PDType0Font font = PDType0Font.load(document, new File(getServletConfig().getServletContext().getRealPath("/")+"files/servletfonts/ArialUni.ttf")); // PDType0Font font = PDType0Font.load(document, new File(getServletConfig().getServletContext().getRealPath("/")+"files/servletfonts/Universalia.ttf")); // Retrieve Image to be added to the PDF /* inputFront = new FileInputStream(new File("D:/Media/imageFront.jpg")); inputBack = new FileInputStream(new File("D:/Media/imageBack.jpg")); BufferedImage buffFront = ImageIO.read(inputFront); BufferedImage resizedFront = Scalr.resize(buffFront, 460); BufferedImage buffBack = ImageIO.read(inputBack); BufferedImage resizedBack = Scalr.resize(buffBack, 460); front = new PDJpeg(document, resizedFront); back = new PDJpeg(document, resizedBack); */ // Next we start a new content stream which will "hold" the to be created content. contentStream = new PDPageContentStream(document, page); // Let's define the content stream contentStream.beginText(); contentStream.setFont(font, 0.68f); contentStream.setTextMatrix(new Matrix(12, 0, 0, 12, 10, 770)); contentStream.showText("Amount: $1.00"); contentStream.endText(); contentStream.beginText(); contentStream.setFont(font, 0.68f); contentStream.setTextMatrix(new Matrix(12, 0, 0, 12, 200, 770)); contentStream.showText("Sequence Number: 123456789"); contentStream.endText(); contentStream.beginText(); contentStream.setFont(font, 0.68f); contentStream.setTextMatrix(new Matrix(12, 0, 0, 12, 10, 760)); contentStream.showText("Account: 123456789"); contentStream.endText(); contentStream.beginText(); contentStream.setFont(font, 0.68f); contentStream.setTextMatrix(new Matrix(12, 0, 0, 12, 200, 760)); contentStream.showText("Captura Date: 04/25/2011"); contentStream.endText(); contentStream.beginText(); contentStream.setFont(font, 0.68f); contentStream.setTextMatrix(new Matrix(12, 0, 0, 12, 10, 750)); contentStream.showText("Bank Number: 123456789"); contentStream.endText(); contentStream.beginText(); contentStream.setFont(font, 0.68f); contentStream.setTextMatrix(new Matrix(12, 0, 0, 12, 200, 750)); contentStream.showText("Check Number: 123456789"); contentStream.endText(); contentStream.beginText(); contentStream.setFont(font, 1.5f); contentStream.setTextMatrix(new Matrix(12, 0, 0, 12, 10, 700)); contentStream.showText("English, Deütsch, Русский язык Tiếng Việt 中華人民共和國"); contentStream.endText(); contentStream.beginText(); contentStream.setFont(font, 1.5f); contentStream.setTextMatrix(new Matrix(12, 0, 0, 12, 10, 650)); contentStream.showText("Петя"); contentStream.endText(); // Let's close the content stream contentStream.close(); } // Finally Let's save the PDF document.save(output); document.close(); return output; } } |