亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

itextpdf怎么生成PDF

發布時間:2021-07-08 17:33:36 來源:億速云 閱讀:165 作者:chen 欄目:大數據

本篇內容主要講解“itextpdf怎么生成PDF”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“itextpdf怎么生成PDF”吧!

生成PDF 

package com.sw.busi.license.cites.approve.spi.service.impl.approval;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.Date;

import com.itextpdf.text.Chunk;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Font;
import com.itextpdf.text.Image;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfCopy;
import com.itextpdf.text.pdf.PdfImportedPage;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfPageEventHelper;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfWriter;
import com.sw.busi.common.log.Logger;
import com.sw.busi.common.utils.SEnv;

public class test {
    private static final String HEAD_IMG = "head.jpg";
    private static final String SUPERVISE_END_IMG = "supervise_end.jpg";
    private static final String FONT = "static/fonts/simfang.ttf";
    private static final String FONTHEI = "static/fonts/simhei.ttf";
public static void main(String[] args) {
    
    try {
        byte[] byteDate = createCurCitesApprovalPDF("林護許準云【2019】0100007號", new Date());
        byteDate=createHeanAndEndRedFile(byteDate);
        writeFile("C:/xuexi/", "1.pdf", byteDate);
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    
}
public static byte[] createCurCitesApprovalPDF(String approvNo,Date sendDte) throws Exception{
    ByteArrayOutputStream output = new ByteArrayOutputStream();
    
    URL headUrl = getURLTemplate(HEAD_IMG);//頁碼上的紅頭標題
    URL endUrl = getURLTemplate(SUPERVISE_END_IMG);//每頁上的尾部紅線
    //拿到字庫
    String FONT_PATH="E:/Git/busi/cites/sw-citesapprove-parent/citesapprove-server/src/main/webapp/static/fonts/";  //這個是仿宋體的路勁       測試的時候這個指向本地也行
    String FONTHEI_PATH="E:/Git/busi/cites/sw-citesapprove-parent/citesapprove-server/src/main/webapp/static/fonts/";//這個是黑體的路勁       測試的時候這個指向本地也行
    //單元測試文件
    //path = path.substring(1,path.length());// 從路徑字符串中取出工程路勁
    FONT_PATH=FONT_PATH+"simfang.ttf";
    FONTHEI_PATH=FONTHEI_PATH+"simhei.ttf";
    //仿宋體
    BaseFont baseFont = BaseFont.createFont(FONT_PATH,  "Identity-H", BaseFont.EMBEDDED);
    //黑體   文件標題用黑體
    BaseFont baseFontHei = BaseFont.createFont(FONTHEI_PATH, "Identity-H", BaseFont.EMBEDDED);
    
    
    
    //創建文本 
    //構造函數  選擇對應的紙張型號,以及左右上下的邊距
    Document document = new Document(PageSize.A4, 35, 35, 110, 60);
    //PDF文件對應的位置可以是指定位置的,也可以是輸出流,輸出流可以寫到硬盤上
    PdfWriter pdfWriter = PdfWriter.getInstance(document, output);
    
    pdfWriter.setPageEvent(new BackGroundImage(headUrl,endUrl));  
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy年M月d日");
    try {  
      //打開文本  
      document.open(); 
      //根據圖片得到文件頭
      /*Image img1 = Image.getInstance(headUrl);
        img1.setAbsolutePosition(0, 750);//設置圖片位置
        img1.scaleAbsolute(600, 150);//設置圖片大小
        document.add(img1);//把圖片添加到PDF文檔
        //得到尾部圖片
        Image img2 = Image.getInstance(endUrl);
        img2.setAbsolutePosition(0, 20);//設置圖片位置
        img2.scaleAbsolute(600, 50);//設置圖片所占大小
        document.add(img2);//添加到PDF上
*/        //文件號      
        //Paragraph fileNumberParagraph = new Paragraph(70);  //這是段落   傳入的值是距離上一段的位置,沒有上一段則是距離邊框的位置
        //fileNumberParagraph.setAlignment(2);//設置對齊方式 對齊方式有三種  分別是 1 2 3  中右左
        //Font font = new Font(baseFont);//得到對應的字
        //font.setSize(16);//設置字體大小
        //fileNumberParagraph.setFont(font); //設置字體            
        //Chunk chunk = new Chunk();  //塊,文字區域,表示一個區域,也能放圖片
        //fileNumberParagraph.add(chunk); //把文字區域放入段落
        //document.add(fileNumberParagraph);//把段落放入文檔
        
       /* CurCitesApprovalHeadVo tempVo=new CurCitesApprovalHeadVo();
        ReflectionUtils.updateBeanData(headBo, tempVo);
        ParaMappingConfig[] configs = new ParaMappingConfig[]{
                // 境外國家地區
                new ParaMappingConfig(ParaMappingConfig.sw_app, "iEType", CitesSwPara.CITES_I_E_TYPE.getUserNm(),CitesSwPara.CITES_I_E_TYPE.getParaTypeCd()),// 進出口類型
        };
        paraServiceUtil.setParaNameVal2Vo(tempVo, configs, "Text");*/
    
        
         Paragraph title = getParagraph(approvNo, baseFontHei,1,0,22,0,0);
          document.add(title);
        
        
        
        
        //第一段
      StringBuilder noticeText=new StringBuilder();
      noticeText.append("關于同意");
      noticeText.append("tempVo.getCopName()");
      noticeText.append("tempVo.getiETypeText()");
      noticeText.append("野生動植物及其制品的行政許可決定你(單位)的申請材料(");
      noticeText.append("tempVo.getApplyNo()");
      noticeText.append(")收悉。經審核,同意你(單位)");
      noticeText.append("tempVo.getiETypeText()");
      noticeText.append("的申請,詳見附表");
     
      
      Paragraph noticeOne = getParagraph(noticeText.toString(), baseFont, 3, 20,16,33,24);

        document.add(noticeOne);
      /*************************************************************************************/
      //畫擺表格   
      PdfPTable table = new PdfPTable(7); //傳入的參數表示有幾列
      
      table.setTotalWidth(520);
      float[] columnWidth={40,100,100,60,60,100,60};//沒列的大小
      table.setTotalWidth(columnWidth);
      table.setLockedWidth(true);
      
      //標題與表格中間的距離
      Paragraph p = new Paragraph();
      Font f = new Font(baseFont);//字體
      f.setSize(18);//字體大小
      p.setFont(f);//設置段落字體
      Chunk c = new Chunk(" ");  
      p.add(c);  
      document.add(p);
      
      
      //表格開始  每一個cell 對應一列,不滿六列不打印,這個幾列是自己設置的   表格每一行必須有列,
      PdfPCell cell = getPdfPCell("序號",baseFontHei,14,1);//表格第一個標題
      cell.setFixedHeight(40);//設置表格單元格高度
      table.addCell(cell);
      //表格第2個標題
      cell = getPdfPCell("物種名稱(中文名)",baseFontHei,14,1);
      cell.setFixedHeight(40);//設置表格單元格高度
      table.addCell(cell);
      //表格第3個標題
      cell = getPdfPCellCenter("物種名稱(拉丁學名)",baseFontHei);
      cell.setFixedHeight(40);//設置表格單元格高度
      table.addCell(cell);
      //表格第4個標題
      cell = getPdfPCellCenter("數量",baseFontHei);
      cell.setFixedHeight(40);//設置表格單元格高度
      table.addCell(cell);
      //表格第5個標題
      cell = getPdfPCellCenter("單位",baseFontHei);
      cell.setFixedHeight(40);//設置表格單元格高度
      table.addCell(cell);
      //表格第5個標題
      cell = getPdfPCellCenter("標本類型",baseFontHei);
      cell.setFixedHeight(40);//設置表格單元格高度
      table.addCell(cell);
      //表格第6個標題
      cell = getPdfPCellCenter("境外國家/地區",baseFontHei);
      cell.setFixedHeight(40);//設置表格單元格高度
      table.addCell(cell);
    /*  List<CurCitesSpeListVo> list = citesApprovalVoDao.queryCurCitesSpeListVoByApplyNo(headBo.getApplyNo());
      ParaMappingConfig[] listLonfigs = new ParaMappingConfig[]{
                // 境外國家地區
                new ParaMappingConfig(ParaMappingConfig.sw_dep, "abrCounName", "CITES_PARA_COUNTRY")
        };
        paraServiceUtil.setParaNameVal2Vo(list, listLonfigs, "Text");
      //序號    物種名稱(中文名)    物種名稱(拉丁學名)    數量    單位    標本類型    境外國家/地區
        int num=1;
        //開始編列細項
        for (CurCitesSpeListVo vo : list) {
            table.addCell(getPdfPCell(num+"",baseFont,12,1));  //這個是第幾個物種
            table.addCell(getPdfPCell(vo.getSpeName(),baseFont,12,1));  //
            table.addCell(getPdfPCell(vo.getSpeEname(),baseFont,12,1)); //
            table.addCell(getPdfPCell(vo.getQty().toString(),baseFont,12,3));//
            table.addCell(getPdfPCell(vo.getUnit(),baseFont,12,1));//
            table.addCell(getPdfPCell(vo.getMarkType(),baseFont,12,1));//
            table.addCell(getPdfPCell(vo.getAbrCounNameText(),baseFont,12,1));//
            num++;
        }*/
        for (int i = 1; i <65; i++) {

            table.addCell(getPdfPCell(i+"",baseFont,12,1));  //這個是第幾個物種
            table.addCell(getPdfPCell("2",baseFont,12,1));  //
            table.addCell(getPdfPCell("3",baseFont,12,1)); //
            table.addCell(getPdfPCell("4",baseFont,12,3));//
            table.addCell(getPdfPCell("5",baseFont,12,1));//
            table.addCell(getPdfPCell("6",baseFont,12,1));//
            table.addCell(getPdfPCell("7",baseFont,12,1));//
          
        
            
        }
        
        
      document.add(table);
      /*************************************************************************************/
      
      
      StringBuilder noticeTwoText=new StringBuilder();
      noticeTwoText.append("是否需要申請標識?");
      noticeTwoText.append("請你(單位)于");
      noticeTwoText.append("sdf.format(tempVo.getValidDate())");
      noticeTwoText.append("前向國家瀕危物種進出口管理機構辦理《允許進出口證明書》,逾期無效。");
      
      //第二段
      Paragraph noticeTwo = getParagraph(noticeTwoText.toString(), baseFont, 3, 20,16,33,24);

      document.add(noticeTwo);
      
      StringBuilder noticeThreeText=new StringBuilder();
      
      /*if("01".equals(tempVo.getDep())){
          noticeThreeText.append("抄送:國家瀕管辦、");
          noticeThreeText.append(tempVo.getCcDepName());
          noticeThreeText.append("\n");
          noticeThreeText.append("本局發送:局行政許可辦公室");
          noticeThreeText.append("國家林業和草原局  ");
          noticeThreeText.append(sdf.format(sendDte));
          noticeThreeText.append("印發");
      }else{
          noticeThreeText.append("抄送:國家林業和草原局野生動植物保護司、國家瀕管辦、");
          noticeThreeText.append(tempVo.getCcDepName());
          noticeThreeText.append("\n");
          noticeThreeText.append(headBo.getDepName());
          noticeThreeText.append(sdf.format(sendDte));
          noticeThreeText.append("印發");
      }*/
     
      
      noticeThreeText.append("抄送:國家林業和草原局野生動植物保護司、國家瀕管辦、");
      noticeThreeText.append("tempVo.getCcDepName()");
      noticeThreeText.append("\n");
      noticeThreeText.append("headBo.getDepName()");
      noticeThreeText.append(sdf.format(sendDte));
      noticeThreeText.append("印發"); 
      
    
      Paragraph noticeThree = getParagraph(noticeThreeText.toString(), baseFont, 3, 20,16,33,24);
      document.add(noticeThree);
      PdfPageEventHelper aa=new PdfPageEventHelper();
      
      //關閉文本  
      document.close();  
    } catch (DocumentException e) { 
    } catch (FileNotFoundException e) {  
    }
    return output.toByteArray();
}
public static URL getURLTemplate(String urlAdress) {
    URL url = null;
    String path = "E:/Git/busi/cites/sw-citesapprove-parent/sw-citesapprove-front/src/main/webapp/static/pdfjs/template/";// 得到d:/tomcat/webapps/工程名WEB-INF/classes/路徑
    path=path+urlAdress;
    try {
        // SEnv.WINDOWS獲取當前系統操作類型
        if (SEnv.WINDOWS) {
            url = new URL("file", null, path);// String轉化成URL
        } else if (SEnv.LINUX || SEnv.SUN_OS) {
            url = new URL("file", null, "/" + path);// String轉化成URL
        }

    } catch (Exception e) {
    }
    return url;
}
private static  PdfPCell getPdfPCellCenter(String cellText,BaseFont baseFont) throws Exception{
    //為null會報錯  防止報錯
    if(cellText==null){
        cellText=" ";
    }
    //表格開始
    Paragraph paragraph = new Paragraph();//為了讓起居中
    paragraph.setAlignment(1);  //對齊方式
    Font font = new Font(baseFont);//字體
    font.setSize(14);//字體大小
    paragraph.setFont(font);//設置段落字體
    Chunk chunk = new Chunk(cellText);  
    paragraph.add(chunk);  
    PdfPCell cell = new PdfPCell();
    cell.setMinimumHeight(25);//設置單元格最小高度,會隨著數據增多而增多
    cell.addElement(paragraph);
    return cell;
}
/**
 * 
 * @param chunkText  段落文本
 * @param baseFont  字體
 * @param alignment //設置對齊方式 對齊方式有三種  分別是 1 2 3  中右左
 * @param leading //是距離上一段的位置,沒有上一段則是距離邊框的位置
 * @param fontSize //字體大小
 * @param firstLineIndent //首行縮進
 * @param fixedLeading //行間距
 * @return
 */
private static  Paragraph getParagraph(String chunkText,BaseFont baseFont,int alignment,int leading,int fontSize,int firstLineIndent,
                int fixedLeading ) {
    //為null會報錯  防止報錯
    if(chunkText==null){
        chunkText=" ";
    }
     //標題
    Paragraph paragraph = new Paragraph(leading);
    Font titlefont = new Font(baseFont);
    titlefont.setSize(fontSize);
    
    paragraph.setFirstLineIndent(33); 
    paragraph.setFont(titlefont);
    paragraph.setAlignment(alignment);
    paragraph.setLeading(fixedLeading);
    
    Chunk titleChunk = new Chunk(chunkText);
    paragraph.add(titleChunk);
    return paragraph;
    
}

private static  PdfPCell getPdfPCell(String cellText,BaseFont baseFont,float size,int alignment) throws Exception{
    //為null會報錯  防止報錯
    if(cellText==null){
        cellText=" ";
    }
    //表格開始
    Paragraph paragraph = new Paragraph();
    paragraph.setAlignment(alignment);  //對齊方式
    Font font = new Font(baseFont);//字體
    font.setSize(size);//字體大小
    paragraph.setFont(font);//設置段落字體
    Chunk chunk = new Chunk(cellText);  
    paragraph.add(chunk);  
    PdfPCell cell = new PdfPCell();
    cell.setMinimumHeight(25);//設置單元格最小高度,會隨著數據增多而增多
    cell.addElement(paragraph);
    return cell;
}


public static void writeFile(String path, String fileName, byte[] content)
        throws IOException {
    try {
        File f = new File(path);
        if (!f.exists()) {
            f.mkdirs();
        }
        FileOutputStream fos = new FileOutputStream(path + fileName);
        fos.write(content);
        fos.close();
    } catch (IOException e) {
        throw new RuntimeException(e);
    }
}
public static byte[] createHeanAndEndRedFile(byte[] byteDate){
	
	URL headUrl = getURLTemplate(HEAD_IMG);//頁碼上的紅頭標題
	URL endUrl = getURLTemplate(SUPERVISE_END_IMG);//每頁上的尾部紅線

	

	ByteArrayOutputStream outputEnd = new ByteArrayOutputStream();
    Document documentEnd = null;
    PdfCopy copyEnd = null;
    try {
        PdfReader reader = new PdfReader(byteDate);
        int n = reader.getNumberOfPages();
    	 documentEnd = new Document(reader.getPageSize(1));
    	 
          copyEnd = new PdfCopy(documentEnd, outputEnd);
          documentEnd.open();
         
    	for (int i = 1; i <= n; i++) {
          documentEnd.newPage();
          Image img1 = Image.getInstance(headUrl);
		  img1.setAbsolutePosition(0, 750);//設置圖片位置
		  img1.scaleAbsolute(600, 150);//設置圖片大小
		  copyEnd.add(img1);//把圖片添加到PDF文檔
		  //得到尾部圖片
		  Image img2 = Image.getInstance(endUrl);
		  img2.setAbsolutePosition(0, 20);//設置圖片位置
		  img2.scaleAbsolute(600, 50);//設置圖片所占大小
		  copyEnd.add(img2);//添加到PDF上
  		  PdfImportedPage pageEnd = copyEnd.getImportedPage(reader, i);
  		  copyEnd.addPage(pageEnd);
  		
  		  
		}
    	
            documentEnd.close();
    } catch (IOException e) {
    	 Logger.error("split pdf file error:{}",e.getMessage(),e);
    } catch(DocumentException e) {
    	 Logger.error("split pdf file error:{}",e.getMessage(),e);
    }

	
    return outputEnd.toByteArray();
}
}

加載背景    每頁都加上同一個圖片

package com.sw.busi.license.cites.approve.spi.service.impl.approval;

import java.io.IOException;
import java.net.URL;

import com.itextpdf.text.BadElementException;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Image;
import com.itextpdf.text.pdf.PdfPageEventHelper;
import com.itextpdf.text.pdf.PdfWriter;

/** 
 * @Description: 為每一頁pdf都生成背景圖片 
 * @author: kylin 
 * @create: 2018-01-08 18:00 
 **/  
public class  BackGroundImage extends PdfPageEventHelper {  
	URL headUrl =null;
	URL endUrl =null;
    public URL getHeadUrl() {
		return headUrl;
	}

	public void setHeadUrl(URL headUrl) {
		this.headUrl = headUrl;
	}

	public URL getEndUrl() {
		return endUrl;
	}

	public void setEndUrl(URL endUrl) {
		this.endUrl = endUrl;
	}

	public BackGroundImage(){  
  
    }  
    public BackGroundImage(URL headUrl,URL endUrl){  
    	this.headUrl = headUrl;  
    	this.endUrl = endUrl;  
    }  
  
    @Override  
    public void onStartPage(PdfWriter pdfWriter, Document document) {  
    	
        try {  
        	Image img1 = Image.getInstance(headUrl);
            img1.setAbsolutePosition(0, 750);//設置圖片位置
            img1.scaleAbsolute(600, 150);//設置圖片大小
            document.add(img1);//把圖片添加到PDF文檔
            //得到尾部圖片
            Image img2 = Image.getInstance(endUrl);
            img2.setAbsolutePosition(0, 20);//設置圖片位置
            img2.scaleAbsolute(600, 50);//設置圖片所占大小
            document.add(img2);
        	
        } catch (BadElementException e) {  
            e.printStackTrace();  
        } catch (IOException e) {  
            e.printStackTrace();  
        } catch (DocumentException e) {  
            e.printStackTrace();  
        }  
  
        super.onStartPage(pdfWriter, document);  
    }  
}

到此,相信大家對“itextpdf怎么生成PDF”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

昌都县| 山丹县| 普洱| 肥乡县| 闽清县| 南平市| 资阳市| 石屏县| 九龙坡区| 盘山县| 长治市| 中超| 鹤峰县| 土默特左旗| 额济纳旗| 正阳县| 页游| 兰溪市| 贺州市| 维西| 太保市| 台湾省| 佛学| 大关县| 凤翔县| 玉屏| 盐池县| 肥东县| 青龙| 开远市| 哈尔滨市| 诸城市| 乐陵市| 巢湖市| 玉田县| 南木林县| 文昌市| 乌海市| 沈丘县| 松桃| 九江市|