2014-10-30 2 views
1

테이블이 포함 된 텍스트 프레임을 포함하는 셀이있는 테이블이 있습니다. 내부 테이블 안의 일부 셀에 문단을 추가했습니다. 단락 안에 "WordA WordB"와 같은 addtext 메서드를 통해 텍스트를 배치했습니다. 셀의 크기로 인해 "WordA"와 "WordB"사이에 줄 바꿈이 생깁니다.MigraDoc을 사용하여 단일 공간에서 여러 줄 바꿈

WordA 
 
WordB

내가 얻고 것은 :

WordA 
 

 
WordB

는 정 있는가

문제는 내가 기대하고 있다는 것입니다 내가 예상 한 것을 얻기 위해 어딘가에서 보내거나 렌더러의 버그입니까?

답변

0

rederedr (ParagraphRenderer.cs) 단락의 버그입니다. 내가 실제로 발견 한 2 개의 버그가있었습니다. 첫 번째는 현재 줄이 맞지 않고 다음 "텍스트"가 공백 ("") 인 경우입니다. 두 번째는 현재 행이 공백 ("")이고 다음 행이 맞지 않는 경우입니다.

첫 번째 버그는 수정하기 쉽습니다.이 HandleNonFittingLine 서브 루틴을 this.currentLeaf가 공백 ("")이 될 때까지 계속 진행하도록 변경했습니다.

두 번째 버그는 알아 내고 수정하기가 어려웠습니다. 다음 리프를 찾고 다음 리프의 Current 속성을 FormatElement에 전달하는 Format 함수를 가져야했습니다 (다음 리프가있는 경우). 그런 다음 선택적으로 두 번째 매개 변수를 취하도록 FormatElement 함수를 수정해야했습니다. 그런 다음 현재 리프가 공백 ("")이고 다음 리프가 현재 줄에 공백 ("")으로 맞지 않으면 FormatResult.Ignore를 반환하여 FormatElement 함수를 수정했습니다.

1

저는 이것이 버그라고 생각합니다. 일반적으로 단어가 열 너비보다 길 때 버그가 나타납니다.

일반적인 시나리오 (넓은 열의 짧은 단어)의 경우이 문제는 표시되지 않습니다. 좁은 컬럼에서 긴 단어를 사용하면 때때로이 버그가 발생합니다. 긴 단어로 하이픈 또는 부드러운 하이픈을 사용하면 MigraDoc에서 단어를 올바르게 구분할 수 있습니다.