<!-- 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();
}
}
效果图:
原图:
更改过: