iText에 이상한 문제가 있습니다. & PdfTemplate.iText PdfTemplate 글꼴 크기 문제
전체 페이지 번호를 페이지 바닥 글에 인쇄하려면 PdfTemplate & 이미지를 사용하고 있습니다. 나는 PdfTemplate을 만들고, 템플릿에서 이미지를 만들고 이미지를 청크에 넣는다. 그 청크는 부모가 어떤 구성 요소이든 테이블/문구/단락에 추가된다.
PdfTemplate tmp = PdfTemplate.createTemplate(writer, 20, 10);
Image img = null;
try
{
img = Image.getInstance(tmp);
}
catch (BadElementException e)
{
}
return new Chunk(img, 0, 0);
이 청크는 페이지 (예 : 구문)에 추가됩니다. 생성 된 PdfTemplate은 나중에 가져 오기 위해 목록에 저장됩니다.
그런 다음 pageEventHelper (onCloseDocument)에서,이처럼 ColumnText의 도움으로 총 페이지 수와 템플릿을 채우기 :
:PdfTemplateRecord rec = pagenums.get(i);
PdfTemplate tmp = rec.getTemplate();
Font font = CreatorHelper.getCurrentFont(rec.getFontContext());
if (font == null)
{
font = new Font(defaultFont, 8f);
}
ColumnText columnText = new ColumnText(tmp);
columnText.setSimpleColumn(new Phrase(Integer.toString(pagenum), font), 0, -tmp.getHeight(), tmp.getWidth(), 0, 0, Element.ALIGN_LEFT);
columnText.setUseAscender(false);
try
{
columnText.go();
}
catch (DocumentException e)
{
log.error("Failed to render total page number", e);
}
모든 것은 두 가지를 제외하고 잘 작동하고
) 1. setSimpleColumn을주의 깊게 확인하면 0 대신 Y 위치를 -tmp.getHeight() (예 : -10)로 설정해야합니다. Y를 0으로 설정하면 텍스트가 줄을 ... 아마도 나는 이미지 추가로 뭔가를 엉망으로 만들었지 만, 모르지만 모르겠다.
2.) 글꼴 크기 조정에 문제가 있습니다. 이상하지만 글꼴 크기가 10f보다 큰 경우 일반 텍스트와 템플릿의 텍스트가 동일하면 그러나 글꼴 크기가 10f보다 작 으면 서식 파일의 텍스트가 작아집니다. 몇 가지 이미지
(이 순서 이미지, 폰트 사이즈 : 6 층, 8 층 9F, 10F, 도 14f에서, "페이지 1"은 "of"뒤에 오는 숫자는 템플리트와 함께 제공됨)
9f 글꼴 크기에서 볼 수 있듯이 템플리트 텍스트는 일반 텍스트보다 약간 작지만 10f 이후 두 텍스트는 동일합니다.
글꼴 크기 조정과 관련하여 PdfTemplate과 요소 사이에 규칙이 있는지 검색했지만 찾지 못했습니다.
도움이 필요하십니까?
감사합니다.
불행히도 코드에서 사용하는 많은 알 수없는 메서드가 있으므로 페이지에 내용을 추가하는 방법이 분명하지 않으므로 코드에서 쉽게 문제를 재현 할 수 없습니다. 문제의 원인이 알려지지 않은 코드 조각의 일부로 인해 발생한다고 가정합니다. – mkl
큰 변화이지만 PDF에서 두 번 통과하도록 전환 할 수는 없습니까? 첫 번째 패스는 PDF를 만들고, 두 번째 페이지는 페이지에 둡니다. 그것은 정말로 사물을 단순화합니다. [코드의 세 번째 블록을 참조하십시오] (http://stackoverflow.com/a/9845722/231316) –
안녕하세요! 총 페이지가 정확히 어디 있는지 알지 못하기 때문에 두 번 통과 할 수 없습니다. PDF는 템플릿 (XML)에서 생성되며 totalPages는 어디에서나 (문서 본문에서도)있을 수 있습니다. @ mkl : 글쎄, 2000 라인 정도이기 때문에 전체 생성기 코드를 붙여 넣을 수는 없지만,이 "unknown"메소드에 특별한 것은 없다. CreatorHelper.getCurrentFont (rec.getFontContext()); – user1536873