2012-08-27 2 views
1

으로 인쇄합니다. 아래 코드를 사용하여 동일한 크기의 문자열을 출력하는 pdf 문자열을 인쇄합니다. 다른 글꼴 크기로 마지막 두 문자열을 만들고 싶습니다. 내가 어떻게 할 수 있니?작은 글자 크기의 부분 문자열을 pdf

PdfContentByte cb = writer.getDirectContent(); 

    String stl = "", stl1 = (String) request.getParameter("x0");//      (String)val.get(0); 
     int ln = stl1.length(); 
     String new1 ="" ; 
     if (ln > 1) 
     { 
      for (int ii = 0; ii < ln - 2; ii++) 
       stl = stl + stl1.charAt(ii); 
      stl = stl + " . "; 
      stl1 = stl1.substring(ln - 2, ln); 
      new1 = stl + stl1; 
      //stl1 = stl + stl1; 

     } 
     cb.setFontAndSize(bf, 18); 
     cb.setTextRenderingMode(2); 
     //cb.showTextAligned(PdfContentByte.ALIGN_LEFT, stl1, 20 + x, 663 + y, 0); 
     cb.showTextAligned(PdfContentByte.ALIGN_LEFT, new1, 20 + x, 663 + y, 0); 

원하는 출력 :이 작업을 수행하는

enter image description here

답변

1

가장 좋은 방법은 마지막 2 자리 숫자를 포함하는 첫 번째 후 별도의 문자열을 인쇄하는 것입니다.

코드 예제 :

1)이 함께 String new1 ="" ; 교체 :

String textLarge ="" ; 
String textSmall ="" ; 

2) 다음과 new1 = stl + stl1; 교체 : 대형을 인쇄)

textLarge = stl; 
textSmall = stl1; 

3 몇 가지 코드를 변경하고 작은 텍스트는 별도입니다.

cb.setFontAndSize(bf, 18);   
cb.showTextAligned(PdfContentByte.ALIGN_LEFT, textLarge, 20 + x, 663 + y, 0); 
cb.setFontAndSize(bf, 14);   
cb.showTextAligned(PdfContentByte.ALIGN_LEFT, textSmall, 20 + ? + x, 663 + y, 0); 

"?" 위의 줄에는 큰 텍스트의 너비가 인쇄되어 있습니다. itext를 사용하고있는 것처럼 보입니다. 따라서 BaseFont.getWidthPoint(String text, float fontSize) 중 하나를 사용하여 pt로 문자열의 너비를 가져올 수 있습니다. 또는 문자열을 청크에 넣고 수행하십시오. chunk.getWidthPoint()

0

이전 대답은 정확하지만 다른 방법이 있습니다. 텍스트를 절대 좌표에 배치하려면 ColumnText 클래스를 사용할 수도 있습니다. 예 : 지금까지 사용했던 것과 유사한 정적 메서드 showTextAligned()를 사용할 수 있습니다. ColumnText 메서드의 장점은 Phrase 개체를 사용할 수 있다는 것입니다. 구문 개체는 서로 다른 청크 개체로 구성 될 수 있으며 각 청크는 다른 크기의 다른 글꼴을 사용할 수 있습니다. 이전 답변과이 답변을 보여주는 예는 http://itextpdf.com/examples/iia.php?id=62

을 참조하십시오.
관련 문제