zoukankan      html  css  js  c++  java
  • 使用 Itext 生成PDF

    一、生成PDF,所需jar包(itext-2.0.8.jar,iTextAsian.jar)

    在springboot中只需要引入依赖即可,依赖代码如下:

    <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>itextpdf</artifactId>
        <version>5.0.6</version>
    </dependency>

    二、生成落地pdf及pdf转字节数组

    package com.ulic.yyl.customerCenter.controller;
    
    import java.io.ByteArrayOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    import com.itextpdf.text.Document;
    import com.itextpdf.text.DocumentException;
    import com.itextpdf.text.Element;
    import com.itextpdf.text.PageSize;
    import com.itextpdf.text.Phrase;
    import com.itextpdf.text.pdf.PdfPCell;
    import com.itextpdf.text.pdf.PdfPTable;
    import com.itextpdf.text.pdf.PdfWriter;
    /**
     * 生成pdf落地文件
     * 将落地pdf文件转成字节数组
     * 2019年7月12日
     */
    @Controller
    public class CreatePdf {
    
        @RequestMapping(value="/testPdf")
        public void testPdf() throws IOException {
            String filename = "D:/testpdf/testTable3.pdf";
            createPDF(filename);
            System.out.println("打印完成");
        }
          /*public void createPDF(String filename) throws IOException {
                Document document = new Document(PageSize.A4);
                try {
                    PdfWriter.getInstance(document, new FileOutputStream(filename));
                    document.addTitle("example of PDF");
                    document.open();
                    document.add(new Paragraph("Hello World!"));
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                } catch (DocumentException e) {
                    e.printStackTrace();
                } finally {
                    document.close();
                }
              }*/
        public static PdfPTable createTable(PdfWriter writer) throws DocumentException, IOException{
            PdfPTable table = new PdfPTable(2);//生成一个两列的表格
            PdfPCell cell;
            int size = 15;
            cell = new PdfPCell(new Phrase("one"));
            cell.setFixedHeight(size*2);
            table.addCell(cell);
            cell = new PdfPCell(new Phrase("two"));
            cell.setFixedHeight(size*2);
            table.addCell(cell);
            cell = new PdfPCell(new Phrase("three"));
            cell.setFixedHeight(size*2);
            table.addCell(cell);
            cell = new PdfPCell(new Phrase("four"));
            cell.setFixedHeight(size*2);
            table.addCell(cell);
            cell = new PdfPCell(new Phrase("five"));
            cell.setColspan(2);//设置所占列数
            cell.setFixedHeight(size*2);//设置高度
            cell.setHorizontalAlignment(Element.ALIGN_CENTER);//设置水平居中
            cell.setVerticalAlignment(Element.ALIGN_MIDDLE);//设置垂直居中
            table.addCell(cell);
            return table;
          }
          
        public void createPDF(String filename) throws IOException {
            Document document = new Document(PageSize.A4);
            try {
                PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(filename));
                document.addTitle("example of PDF");
                document.open();
                PdfPTable table = createTable(writer);
                document.add(table);
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (DocumentException e) {
                e.printStackTrace();
            } finally {
                document.close();
            }
            
          }
         
        /**
         * 获取字节数组
         * @throws IOException
         */
        @RequestMapping(value="/downLoadByUrl")
        public void  downLoadByUrl() throws IOException {
            
            String urlStr = "D:/testpdf/testTable3.pdf";
            
            InputStream inputStream = new FileInputStream(new File(urlStr));
            byte[] getData = readInputStream(inputStream);
            if(inputStream!=null){
                inputStream.close();
            }
            System.out.println("byte[]:{}"+getData.length);
            
        }
    
    
            /**
             * 从输入流中获取字节数组
             * @param inputStream
             * @return
             * @throws IOException
             */
            public static  byte[] readInputStream(InputStream inputStream) throws IOException {
                byte[] buffer = new byte[1024];
                int len = 0;
                ByteArrayOutputStream bos = new ByteArrayOutputStream();
                while((len = inputStream.read(buffer)) != -1) {
                    bos.write(buffer, 0, len);
                }
                bos.close();
                return bos.toByteArray();
            }
    }
  • 相关阅读:
    python K-means工具包初解
    Struts2学习笔记1
    北邮iptv用WindowsMediaplayer打不开的解决的方法
    数据挖掘十大经典算法(9) 朴素贝叶斯分类器 Naive Bayes
    Java中Queue类实现
    LinkedList
    android 自定义 radiobutton 文字颜色随选中状态而改变
    Android自定义radiobutton(文字靠左,选框靠右)
    Android进阶2之APK方式换肤
    Android APK方式换肤实现原理
  • 原文地址:https://www.cnblogs.com/yinyl/p/11175531.html
Copyright © 2011-2022 走看看