java 操作pdf
文字
分为单行文字和多行文字
类库
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.27</version>
</dependency>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox-app</artifactId>
<version>2.0.27</version>
</dependency>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>fontbox</artifactId>
<version>2.0.27</version>
</dependency>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>xmpbox</artifactId>
<version>2.0.27</version>
</dependency>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox-tools</artifactId>
<version>2.0.27</version>
</dependency>
生成单行文字
contentStream.beginText();
contentStream.setFont(PDType1Font.TIMES_ROMAN, Config.getFontSize());
contentStream.newLineAtOffset(coordinate.getX(),y);
contentStream.showText(text);
contentStream.endText();
生成多行文字
contentStream.beginText();
contentStream.setFont(PDType1Font.TIMES_ROMAN, Config.getFontSize());
contentStream.newLineAtOffset(coordinate.getX(),y);
contentStream.setLeading(Config.getMarginLeading());
List<String> strs = list(text);
for(String s :strs){
contentStream.showText(s);
contentStream.newLine();
compute(y);
}
contentStream.endText();
private List<String> list(String text){
String[] strs = text.split("\\n");
List<String> _list = new ArrayList<>();
int num = fontNum();
for(String s:strs){
do{
if(s.length()> num){
String ss = s.substring(0,num);
s = s.substring(num);
_list.add(ss);
}else{
_list.add(s);
}
}while(s.length()>= num);
}
return _list;
}