2013-06-24 2 views
26

저는 방금 iText (5.4.2, 최신 버전)로 작업하기 시작했습니다. 아직까지 직설적으로 다루지 못했던 두 가지가 있습니다.iText 가로 방향 및 위치 지정?

  • 가로로 문서 만들기. 모든 페이지가 세로로 렌더링됩니다.
  • 주어진 위치에 이미지를 삽입하십시오 (상단에서 & 왼쪽에서의 밀리미터 수).

아래 코드가 있습니다.

Document d = new Document(PageSize.A4_LANDSCAPE,0,0,0,0); 
PdfWriter writer = PdfWriter.getInstance(d, new FileOutputStream("C:/test.pdf")); 
document.open(); 
document.newPage(); 
Image img = Image.getInstance(String.format("C:/file.png")); 
img.scaleToFit(400,240); 
document.left(100f); 
document.top(150f); 
document.add(img); 
document.close(); 

그러나 페이지가 세로 (안 풍경)에서 렌더링되고 이미지가 왼쪽 상단에 넣어 (요청하지 10 및 15 개 단위 멀리에서로). 내가 도대체 ​​뭘 잘못하고있는 겁니까?

답변

42

기여자가 소개했으며 주 릴리스에 추가 된 적이없는 변수 인 PageSize.A4_LANDSCAPE을 사용하고 있습니다. 대신 PageSize.A4.rotate()을 사용하십시오.

당신이 선으로 달성하고자하는 것을 명확하지 않다 :

document.left(100f); 
document.top(150f); 

사람들은 세터 게터 수 없습니다. 마치 PDF가 HTML과 비슷하다고 가정하는 것처럼 보입니다. 그 가정은 잘못되었습니다.

이미지가 왼쪽에서 10 사용자 단위, 위쪽에서 15 사용자 단위 (이 경우 100과 150이 잘못된 값임)로 표시되도록하려면 Document 생성자의 0 값을 바꿀 수 있습니다 10 사용자 단위의 왼쪽 여백과 15 사용자 단위의 상단 여백

또 다른 방법은 setAbsolutePosition() 메서드를 사용하여 이미지의 절대 위치를 정의하는 것입니다. 이 경우, 처음부터 작성된 문서의 경우 페이지의 왼쪽 하단 모서리에 x = 0, y = 0 좌표가있는 방식으로 좌표계의 방향이 지정되어야합니다.

1
iTextSharp.text.Document pdfDoc = new iTextSharp.text.Document(iTextSharp.text.PageSize.A4.Rotate(), 10f, 10f, 10f, 0f);