2016-12-08 9 views
0

Apache PDFBox를 사용하여 PDF 파일을 만들려고하는데 내용은 한 줄당 80 자의 일반 텍스트 메시지입니다. PDF를 만들려고 할 때, 공백, _ 및 다른 문자가 줄의 너비가 다르고 텍스트 편집기에서하는 것과 똑같이 형식을 지정할 수 없다는 것을 알았습니다. 누군가 나를 포맷 할 수 있도록 도와 줄 수 있습니까?동일 공백 아파치 PDF 상자의 문자 PDF 생성

import org.apache.pdfbox.pdmodel.PDDocument; 
import org.apache.pdfbox.pdmodel.PDDocumentInformation; 
import org.apache.pdfbox.pdmodel.PDPage; 
import org.apache.pdfbox.pdmodel.PDPageContentStream; 
import org.apache.pdfbox.pdmodel.common.PDRectangle; 
import org.apache.pdfbox.pdmodel.font.PDType1Font; 


public class SampleTest { 
    public static void main(String[] args) throws Exception { 
     PDDocument document = new PDDocument();  
     PDPage page = new PDPage(PDRectangle.A4); 
     document.addPage(page);  
     String text = "---------------------------\n" + 
         "------------ABC------------\n" + 
         "A       B\n" + 
         "***************************\n" + 
         "A B C D E F G H I \n" + 
         "---------------------------"; 
     String[] textArray = text.split("\n"); 

     PDPageContentStream contentStream = new PDPageContentStream(document, page);   
     contentStream.beginText();  
     contentStream.setFont(PDType1Font.TIMES_ROMAN, 10); 
     contentStream.setLeading(4f); 
     contentStream.newLineAtOffset(40, 750); 

     for(String line : textArray){ 
      contentStream.showText(line); 
      contentStream.newLine(); 
      contentStream.newLine();  
     } 
     contentStream.endText(); 
     contentStream.close(); 

     document.save("C:\\PDF-Samples\\file.pdf"); 
     document.close(); 
     System.out.println("Done"); 
    } 
} 

답변

1

글꼴을 고정 너비 글꼴 (예 : PDType1Font.html.COURIER)로 변경해야합니다.

일부 읽기 : https://en.wikipedia.org/wiki/Monospaced_font


텍스트 폭을 계산하려면, 당신은 사용할 수 있습니다

// result in unit of text space, suitable to use with moveTextPositionByAmount() 
(font.getStringWidth(text)/1000.0f) * (1.0f * fontSize) // font is a PDFont 
+0

감사를 도움을! 그것은 효과가 있었다. 어떤 프레임 워크가 선을 채우기 위해 내용을 동일하게 배치 할 수 있는지 알고 있습니까? – Raja

+0

텍스트 줄의 크기를 조절한다는 의미입니다. – Raja

+2

해당 프레임 워크가 없습니다. 수학을 사용해야합니다. 즉, 문자열 길이, 선 길이를 얻고 글꼴 크기 (또는 글리프 사이의 공간 크기)를 계산해야합니다. PDFBox는 itext와 달리 다소 낮은 수준입니다. –