2017-12-09 1 views
2

저는 자바 프로젝트에서 Itext7을 사용하여 PDF 양식을 채 웁니다. 절대 위치에서 왼쪽으로 캔버스의 텍스트 확장을 설정할 수있는 방법이 있습니까? 예를 들어, 텍스트를 오른쪽 위 모서리로 설정하고 길이가 길어질수록 왼쪽 상단 모서리까지 확장됩니다. 전에 언급했듯이 저는 캔버스를 사용합니다. 당신이 PdfCanvas를 사용하는 경우, 당신은 바로 콘텐츠 스트림에 PDF 연산자를 작성하는 텍스트Itext7 캔버스가 텍스트를 오른쪽 테두리로 설정합니다.

PdfDocument document = new PdfDocument(new PdfReader(SRC), new PdfWriter(dest)); 


    PdfCanvas canvas1 = new PdfCanvas(document.getPage(1)); 
    canvas1.beginText().setFontAndSize(PdfFontFactory.createFont(FontConstants.HELVETICA), 7) 
      .moveText(500, 592.5) 
      .showText(new SimpleDateFormat("dd/MM/YYYY").format(invoice.getDate())) 
      .endText(); 

답변

2

를 추가

예. 예 : beginText() 쓰기 BTendText()ET을 씁니다. 한쪽 또는 다른쪽에 정렬 된 텍스트를 표시하는 PDF 연산자가 없습니다. moveText()을 사용하면 좌표로 이동하고 showText()은 왼쪽에서 오른쪽으로 해당 좌표의 텍스트 쓰기를 시작합니다.

PdfCanvas (그리고 PdfCanvas 제외)을 사용하고 싶다면 7pt Helvetica를 사용할 때 텍스트 길이를 계산해야합니다. 그리고 텍스트가 시작되어야하는 위치를 계산하려면 수학을 수행해야합니다.

iText가 수학을 할 수있게하려면, PdfCanvasPdfDocument에서 이미 Canvas 개체를 만들어야합니다.

Rectangle rectangle = new Rectangle(x, y, w, h); 
Canvas canvas = new Canvas(pdfCanvas, pdf, rectangle); 

지금 당신은 당신이 추가 할 텍스트가 Paragraph 만들 수 있으며이 문서의 정렬을 정의 할 수 있습니다 :

Paragraph p = new Paragraph() 
    .add("text").setTextAlignment(TextAlignment.RIGHT); 
canvas.add(p); 
canvas.close(); 

이 경우,이 iText는 보상하기 위해 모든 계산을 할 것입니다 PDF 연산자의 제한된 집합.

관련 문제