문제

우리는 보고서를 생성하기 위해 JasperReports를 응용 프로그램에 포함 시켰지만 Jeditorpanehtmlmlmarkupprocessor가 임의의 XHTML을 작성하는 방식에 다소 불만족했습니다. 예를 들어, 나는 한 지점에서 총알 목록을 출력해야했지만, 실제 총알 문자와 신형으로 변환하기 때문에 상당히 긴 텍스트를 가진 총알은 텍스트가가 아니라 총알과 정렬되도록 텍스트를 포장합니다. 텍스트의 첫 글자.

이 문제와 비슷한 문제로 인해 XHTML 컨텐츠를 그래픽으로 렌더링 할 수 있다고 생각했습니다 (Flyingsaucer XHTML 렌더러 사용). 이것은 어떻게 보이는지에 대한 통제력을 훨씬 더 잘 통제 할 수 있지만 여전히 한 가지 문제가 있습니다. 에 따르면 JasperReports에 대한 결정적인 안내서, "JasperReports 템플릿 및 생성 된 문서의 모든 포지셔닝 및 크기는 기본 Java 해상도 72 DPI를 사용하여 수행됩니다." 렌더링 할 개별 문자는 적분 좌표에 위치해야합니다. 72 DPI에서, 이것은 큰 영향을 미치지 않기 때문에 큰 문제는 아닙니다. 그러나 PDF로 렌더링 할 때 JasperReports는 최대 300 DPI를 날려서 일부 문자의 수평 위치가 때때로 여러 픽셀로 꺼집니다.

임의의 XHTML을 더 잘 렌더링 할 수있는 방법이 있습니까, 아니면 JasperReports가 72 대신 300 dpi로 포지셔닝 및 크기를 수행 할 수있는 방법이 있습니까?

도움이 되었습니까?

해결책

궁극적으로 적분 문자 위치를 고집하지 않은 렌더러를 사용하여 이것을 해결했습니다.

JEditorPane pane = new JEditorPane();
pane.setBorder(null);
pane.setSize(w, h);
pane.setContentType("text/html");
pane.setEditable(false);
pane.setText(html);
pane.paint(g2);
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top