zoukankan      html  css  js  c++  java
  • Itext操作PDF

    <!-- https://mvnrepository.com/artifact/com.itextpdf/itextpdf -->
    <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>itextpdf</artifactId>
        <version>5.5.13</version>
    </dependency>
    //源码
    package test;
    
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import com.itextpdf.text.BaseColor;
    import com.itextpdf.text.Document;
    import com.itextpdf.text.DocumentException;
    import com.itextpdf.text.Image;
    import com.itextpdf.text.Rectangle;
    import com.itextpdf.text.RectangleReadOnly;
    import com.itextpdf.text.pdf.BaseFont;
    import com.itextpdf.text.pdf.PdfContentByte;
    import com.itextpdf.text.pdf.PdfWriter;
    
    public class ReadPDF {
    	
    	private final static String FILE_DIR="D:\";
    	
    	/**
    	 * pdf文件基本操作
    	 * @param args
    	 * @throws documentumentException 
    	 * @throws FileNotFoundException 
    	 * @throws DocumentException 
    	 */
    	public static void main(String[] args) throws FileNotFoundException, DocumentException {
    		try {
    			//页面大小  
    			//Rectangle rect = new Rectangle(PageSize.B5.rotate());  //rotate()宽和高交替数值
    			Rectangle rect = new Rectangle(new RectangleReadOnly(282.86f,424.99f));//宽、高            单位/厘
    			//创建
    			Document document = new Document(rect);
    			//写入pdf
    			PdfWriter writer=PdfWriter.getInstance(document, new FileOutputStream(FILE_DIR + "createSamplePDF.pdf"));  
    			 //页边空白 
                document.setMargins(0, 0, 0, 0);
    			document.open();  //开始向文档正文添加内容
    			
    			//内容:——————————————
    			PdfContentByte cbHG = writer.getDirectContent();
    			BaseFont bfHG= BaseFont.createFont(BaseFont.HELVETICA_BOLD, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
    			cbHG.beginText();
    			cbHG.setFontAndSize(bfHG, 15.6f);
    			cbHG.setTextMatrix(0, 52);
    			cbHG.showText("————————————————————————————————————————————");
    			cbHG.endText();
    			
    			//内容:YYZ
    			PdfContentByte cbYYZ = writer.getDirectContent();
    			BaseFont bfYYZ = BaseFont.createFont(BaseFont.HELVETICA_BOLD, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
    			cbYYZ.beginText();
    			cbYYZ.setFontAndSize(bfYYZ, 15.6f);
    			cbYYZ.setTextMatrix(225, 10);
    			cbYYZ.showText("YYZ");
    			cbYYZ.endText();
    			
    			//内容:Order NO:
    			PdfContentByte cbOrderNO = writer.getDirectContent();
    			BaseFont bfOrderNO = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
    			cbOrderNO.beginText();
    			cbOrderNO.setFontAndSize(bfOrderNO, 9.36f);
    			cbOrderNO.setTextMatrix(133, 40);
    			cbOrderNO.showText("Order NO:");
    			cbOrderNO.endText();
    			
    			//内容:Order NO:
    			PdfContentByte cbNO = writer.getDirectContent();
    			BaseFont bfNO = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
    			cbNO.beginText();
    			cbNO.setFontAndSize(bfNO, 9.36f);
    			cbNO.setTextMatrix(180, 40);
    			cbNO.showText("JCS0858491222WS");
    			cbNO.endText();
    			
    			//内容:SKU: 6204430090*1;
    			PdfContentByte cbSKU = writer.getDirectContent();
    			BaseFont bfSKU = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
    			cbSKU.beginText();
    			cbSKU.setFontAndSize(bfSKU, 9.36f);
    			cbSKU.setTextMatrix(133, 30);
    			cbSKU.showText("SKU:6204430090*1;");
    			cbSKU.endText();
    			
    			//内容:IN/NIF 442 SPEC 3696 V2
    			PdfContentByte cbNIF = writer.getDirectContent();
    			BaseFont bfNIF = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
    			cbNIF.beginText();
    			cbNIF.setFontAndSize(bfNIF, 10.32f);
    			cbNIF.setTextMatrix(5, 45);
    			cbNIF.showText("IN/NIF 442 SPEC 3696 V2");
    			cbNIF.endText();
    			
    			
    			
    			/*
    			 * Paragraph tParagraphYYZ = new Paragraph(); Font fontYYZ = new
    			 * Font(Font.FontFamily.UNDEFINED, 15.6f, Font.BOLD, BaseColor.BLACK);
    			 * //字体,字体大小,粗体、字体选择黑色 Chunk YYZ = new Chunk("YYZ", fontYYZ);
    			 * tParagraphYYZ.setIndentationLeft(228f);// 左缩进
    			 * //tParagraph.setIndentationRight(12);// 右缩进
    			 * //tParagraph.setFirstLineIndent(228);// 首行缩进 //tParagraph.setLeading(400f);//
    			 * 行间距 YYZ.setTextRise(-383f); tParagraphYYZ.add(YYZ);
    			 */
    			
                Image imgOIT = Image.getInstance("D:\1573461775(1).png");
                imgOIT.setAlignment(Image.LEFT);
                imgOIT.setBorder(Image.BOX);
                imgOIT.setBorderColor(BaseColor.WHITE);
                imgOIT.scaleToFit(35, 17);// 大小
                imgOIT.setAbsolutePosition(160,10);
                
                Image imgYIWEI = Image.getInstance("D:\barcode.png");
                imgYIWEI.setAlignment(Image.LEFT);
                imgYIWEI.setBorder(Image.BOX);
                imgYIWEI.setBorderColor(BaseColor.WHITE);
                imgYIWEI.scaleToFit(200, 30);// 大小
                imgYIWEI.setAbsolutePosition(13,8);
                
    			/*
    			 * Paragraph tParagraphOrderNO = new Paragraph(); Font fontOrderNO = new
    			 * Font(Font.FontFamily.UNDEFINED, 9.36f, Font.NORMAL, BaseColor.BLACK);
    			 * //字体,字体大小,粗体、字体选择黑色 Font fontNO = new Font(Font.FontFamily.UNDEFINED, 10.32f,
    			 * Font.NORMAL, BaseColor.BLACK); //字体,字体大小,粗体、字体选择黑色 Chunk orderNO = new
    			 * Chunk("Order NO: ",fontOrderNO);
    			 * tParagraphOrderNO.setIndentationLeft(130f);// 左缩进
    			 * //tParagraphOrderNO.setLeading(350f);//行间距 orderNO.setTextRise(-365f);
    			 * tParagraphOrderNO.add(orderNO); Chunk NO = new
    			 * Chunk("JCS0858491222WS",fontNO); NO.setTextRise(-365f);
    			 * tParagraphOrderNO.add(NO);
    			 * 
    			 * 
    			 * 
    			 * 
    			 * Paragraph tParagraphSKU = new Paragraph(); Chunk SKU = new
    			 * Chunk("SKU: 6204430090*1;",fontOrderNO);
    			 * tParagraphSKU.setIndentationLeft(130f);// 左缩进 SKU.setTextRise(-345f);
    			 * tParagraphSKU.add(SKU);
    			 */
                
    			/*
    			 * Paragraph tParagraphNIF= new Paragraph(); Chunk NIF = new
    			 * Chunk("IN/NIF 442 SPEC 3696 V2",fontNO); //NIF.setTextRise(-350f);
    			 * tParagraphNIF.add(NIF);
    			 * 
    			 * document.add(tParagraphNIF);
    			 */
                document.add(imgOIT);
                document.add(imgYIWEI);
    			/*
    			 * document.add(tParagraphOrderNO); document.add(tParagraphYYZ);
    			 * document.add(tParagraphSKU);
    			 */
    			document.close(); 
    		}catch (Exception e) {
    			// TODO: handle exception
    			System.out.println(e);
    		}finally {
    			System.out.println("执行完成!");
    		}
    		
    	}
    
    }
    

     

    package test;
    
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import com.itextpdf.text.BaseColor;
    import com.itextpdf.text.Document;
    import com.itextpdf.text.DocumentException;
    import com.itextpdf.text.Image;
    import com.itextpdf.text.PageSize;
    import com.itextpdf.text.Rectangle;
    import com.itextpdf.text.RectangleReadOnly;
    import com.itextpdf.text.pdf.BaseFont;
    import com.itextpdf.text.pdf.PdfContentByte;
    import com.itextpdf.text.pdf.PdfImportedPage;
    import com.itextpdf.text.pdf.PdfReader;
    import com.itextpdf.text.pdf.PdfStamper;
    import com.itextpdf.text.pdf.PdfTemplate;
    import com.itextpdf.text.pdf.PdfWriter;
    import com.itextpdf.text.pdf.parser.PdfTextExtractor;
    
    public class Test {
    public static void main(String[] args) throws DocumentException, IOException {
    PdfStamper stamper = null;
    try {
    PdfReader reader = new PdfReader("D://JCS1104017038IN.pdf");
    String pageContent = PdfTextExtractor.getTextFromPage(reader, 1);
    stamper = new PdfStamper(reader,new FileOutputStream("d:/help2.pdf"));
    stamper.setRotateContents(true);
    //获得pdfstamper在当前页的上层打印内容.也就是说 这些内容会覆盖在原先的pdf内容之上.
    PdfContentByte over = stamper.getOverContent(1);
    //开始写入文本
    over.beginText();
    //设置字体和大小
    BaseFont bfSKU = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
    over.setFontAndSize(bfSKU, 10);
    over.setColorFill(BaseColor.RED);
    //设置字体的输出位置
    over.setTextMatrix(0, -10);
    //要输出的text
    over.showText("YYN");
    over.endText();
    System.out.println("执行完成");
    } catch (Exception e) {
    // TODO: handle exception
    e.printStackTrace();
    }finally {
    stamper.close();
    }
    
    
    }
    /**
    * 获取来的pdf 更改页面大小
    * @param args
    * @throws DocumentException
    * @throws IOException
    */
    public static void main(String[] args) throws DocumentException, IOException {
    PdfReader reader = new PdfReader("D://JCS1104017038IN.pdf");
    Document doc = new Document(new RectangleReadOnly(282.86f,424.99f), 0, 0, 0, 0);
    PdfWriter writer = PdfWriter.getInstance(doc, new FileOutputStream("d:/help2.pdf"));
    doc.open();
    PdfContentByte cb = writer.getDirectContent();
    for(int i=1; i<=reader.getNumberOfPages(); i++){
    doc.newPage();
    PdfImportedPage page = writer.getImportedPage(reader, i);
    // cb.addTemplate(page, 1, 0, 0, 1, 1, 1);
    cb.addTemplate(page, 0,45);//调整原有pdf页面的格式改变坐标位置
    }
    //内容:——————————————
    PdfContentByte cbHG = writer.getDirectContent();
    BaseFont bfHG= BaseFont.createFont(BaseFont.HELVETICA_BOLD, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
    cbHG.beginText();
    cbHG.setFontAndSize(bfHG, 15.6f);
    cbHG.setTextMatrix(0, 52);
    cbHG.showText("————————————————————————————————————————————");
    cbHG.endText();
    
    //内容:YYZ
    PdfContentByte cbYYZ = writer.getDirectContent();
    BaseFont bfYYZ = BaseFont.createFont(BaseFont.HELVETICA_BOLD, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
    cbYYZ.beginText();
    cbYYZ.setFontAndSize(bfYYZ, 15.6f);
    cbYYZ.setTextMatrix(225, 10);
    cbYYZ.showText("YYZ");
    cbYYZ.endText();
    
    //内容:Order NO:
    PdfContentByte cbOrderNO = writer.getDirectContent();
    BaseFont bfOrderNO = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
    cbOrderNO.beginText();
    cbOrderNO.setFontAndSize(bfOrderNO, 9.36f);
    cbOrderNO.setTextMatrix(133, 40);
    cbOrderNO.showText("Order NO:");
    cbOrderNO.endText();
    
    //内容:Order NO:
    PdfContentByte cbNO = writer.getDirectContent();
    BaseFont bfNO = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
    cbNO.beginText();
    cbNO.setFontAndSize(bfNO, 9.36f);
    cbNO.setTextMatrix(180, 40);
    cbNO.showText("JCS8888888888WS");
    cbNO.endText();
    
    //内容:SKU: 6204430090*1;
    PdfContentByte cbSKU = writer.getDirectContent();
    BaseFont bfSKU = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
    cbSKU.beginText();
    cbSKU.setFontAndSize(bfSKU, 9.36f);
    cbSKU.setTextMatrix(133, 30);
    cbSKU.showText("SKU:688888888*1;");
    cbSKU.endText();
    
    //内容:IN/NIF 442 SPEC 3696 V2
    PdfContentByte cbNIF = writer.getDirectContent();
    BaseFont bfNIF = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
    cbNIF.beginText();
    cbNIF.setFontAndSize(bfNIF, 10.32f);
    cbNIF.setTextMatrix(5, 45);
    cbNIF.showText("IN/NIF 888 SPEC 8888 V2");
    cbNIF.endText();
    
    Image imgOIT = Image.getInstance("D:\1573461775(1).png");
    imgOIT.setAlignment(Image.LEFT);
    imgOIT.setBorder(Image.BOX);
    imgOIT.setBorderColor(BaseColor.WHITE);
    imgOIT.scaleToFit(35, 17);// 大小
    imgOIT.setAbsolutePosition(160,10);
    
    Image imgYIWEI = Image.getInstance("D:\barcode.png");
    imgYIWEI.setAlignment(Image.LEFT);
    imgYIWEI.setBorder(Image.BOX);
    imgYIWEI.setBorderColor(BaseColor.WHITE);
    imgYIWEI.scaleToFit(200, 30);// 大小
    imgYIWEI.setAbsolutePosition(13,8);
    
    doc.add(imgOIT);
    doc.add(imgYIWEI);
    doc.close();
    }
    
    }
    

      效果图:

    原图:

     更改过:

      

  • 相关阅读:
    SpringMVC框架学习笔记(一)
    Spring框架学习笔记(四)
    Spring框架学习笔记(三)
    Spring框架学习笔记(二)
    Spring框架学习笔记(一)
    单点登录与权限管理本质:cookie安全问题
    单点登录与权限管理本质:单点登录介绍
    单点登录与权限管理本质:HTTP重定向
    单点登录与权限管理本质:session和cookie介绍
    「单点登录与权限管理」系列概述
  • 原文地址:https://www.cnblogs.com/BoKe-LY/p/11841506.html
Copyright © 2011-2022 走看看