优化
This commit is contained in:
@@ -61,7 +61,8 @@ public class DispatchBolRenderer {
|
||||
line(s,u,105,top,105,bottom); line(s,u,left,50,right,50);
|
||||
blackHeader(s,u,f,"SHIP FROM",left,top,105,27); blackHeader(s,u,f,"CARRIER",105,top,right,27);
|
||||
blackHeader(s,u,f,"SHIP TO",left,50,105,56); blackHeader(s,u,f,"REFERENCE",105,50,right,56);
|
||||
text(s,u,f,d.shipFromName(),9.5f,left+2,33); text(s,u,f,"Address: " + d.shipFromAddress(),7.5f,left+2,40);
|
||||
text(s,u,f,d.shipFromName(),9.5f,left+2,33);
|
||||
wrappedText(s,u,f,"Address: " + d.shipFromAddress(),7.2f,left+2,40,91,2,4.5);
|
||||
text(s,u,f,"Carrier Name: " + d.carrierName(),7.5f,107,32); text(s,u,f,"ISA #: " + d.isaNumber(),7.5f,107,36.5);
|
||||
text(s,u,f,"Appointment time: " + d.appointmentTime(),7.5f,107,41); text(s,u,f,"Trailer #: " + d.trailerNumber(),7.5f,107,45.5);
|
||||
text(s,u,f,"Seal #: " + d.sealNumber(),7.5f,107,49);
|
||||
@@ -132,6 +133,21 @@ public class DispatchBolRenderer {
|
||||
private void fill(PDPageContentStream s,PdfUnits u,Color color,double x1,double y1,double x2,double y2)throws IOException{s.setNonStrokingColor(color);s.addRect(PdfUnits.mmToPt(x1),u.topDownMmToPdfY(y2),PdfUnits.mmToPt(x2-x1),PdfUnits.mmToPt(y2-y1));s.fill();}
|
||||
private void signature(PDPageContentStream s,PdfUnits u,PDFont f,double x,double y,String label)throws IOException{line(s,u,x,y,x+52,y);centeredCell(s,u,f,label,6.2f,x,x+52,y+8);}
|
||||
private void centered(PDPageContentStream s,PdfUnits u,PDFont f,String value,float size,double centerX,double y)throws IOException{float w=f.getStringWidth(value)/1000*size;text(s,u,f,value,size,centerX-w/PdfUnits.mmToPt(1)/2,y);}
|
||||
private void wrappedText(PDPageContentStream s,PdfUnits u,PDFont f,String value,float size,double x,double y,double width,int maxLines,double lineHeight)throws IOException{
|
||||
String remaining=value==null?"—":value.strip();
|
||||
for(int lineIndex=0;lineIndex<maxLines&&!remaining.isEmpty();lineIndex++){
|
||||
String line=fitLine(f,remaining,size,PdfUnits.mmToPt(width));
|
||||
boolean truncated=line.length()<remaining.length();
|
||||
if(lineIndex==maxLines-1&&truncated)line=fit(f,remaining,size,PdfUnits.mmToPt(width));
|
||||
text(s,u,f,line,size,x,y+lineIndex*lineHeight);
|
||||
remaining=truncated?remaining.substring(line.length()).strip():"";
|
||||
}
|
||||
}
|
||||
private String fitLine(PDFont f,String value,float size,float max)throws IOException{
|
||||
if(f.getStringWidth(value)/1000*size<=max)return value;
|
||||
int end=value.length();while(end>0&&f.getStringWidth(value.substring(0,end))/1000*size>max)end--;
|
||||
int space=value.lastIndexOf(' ',end);return value.substring(0,space>0?space:end).stripTrailing();
|
||||
}
|
||||
private void centeredLines(PDPageContentStream s,PdfUnits u,PDFont f,String[] values,float size,double x1,double x2,double y)throws IOException{for(int i=0;i<values.length;i++)centeredCell(s,u,f,values[i],size,x1+.3,x2-.3,y+i*3.5);}
|
||||
private void centeredCell(PDPageContentStream s,PdfUnits u,PDFont f,String value,float size,double x1,double x2,double y)throws IOException{String fit=fit(f,value,size,PdfUnits.mmToPt(x2-x1));float w=f.getStringWidth(fit)/1000*size;text(s,u,f,fit,size,x1+(x2-x1-w/PdfUnits.mmToPt(1))/2,y);}
|
||||
private void right(PDPageContentStream s,PdfUnits u,PDFont f,String value,float size,double x,double y)throws IOException{float w=f.getStringWidth(value)/1000*size;text(s,u,f,value,size,x-w/PdfUnits.mmToPt(1),y);}
|
||||
|
||||
Reference in New Issue
Block a user