2013-02-21 5 views
4

reportlab 2.6의 ListFlowable을 사용하여 색칠 된 원 글 머리 기호로 된 글 머리 기호 목록을 만들었습니다. 그러나 글 머리 기호는 앞에있는 들여 쓰기되지 않은 텍스트와 정렬되지 않고 텍스트 옆에 표시하고 싶습니다. ListFlowable 소스를 열려고했지만 많이 찾지 못했습니다. 이에파이썬의 reportlab 패키지에서 들여 쓰기 된 목록의 텍스트 바로 옆에 글 머리 기호를 표시하려면 어떻게해야합니까?

from reportlab.platypus import Paragraph, ListFlowable, ListItem, SimpleDocTemplate, Frame 
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle 
from reportlab.lib.colors import CMYKColor 

doc = SimpleDocTemplate("SOtest.pdf") 
styles = getSampleStyleSheet() 
Story = [] 
Story.append(Paragraph("Header Text, I dont want the bullets directly below the H" 
         ,styles['Normal'])) 
my_list = ListFlowable(
    [ 
     ListItem(Paragraph("Line 1",styles['Normal']) 
       ,bulletColor = CMYKColor(0.81, 0.45, 0.53, 0.23) 
       ,value = 'circle' 
       ), 
     ListItem(Paragraph("Line 2",styles['Normal']) 
       ,bulletColor = CMYKColor(0.81, 0.45, 0.53, 0.23) 
       ,value = 'circle' 
       ) 
     ], 
    bulletType='bullet', 
    start='circle' 
    ) 

Story.append(my_list) 
doc.build(Story) 

이 코드 결과 : 여기에 내가 가진 무엇 Not Desired

하지만 난 것처럼보고 싶어 : Desired

내가 수동으로 원하는 효과를 얻기 위해 두 번째 이미지를 편집했다.

들여 쓰기 된 글 머리표를 얻기 위해 목록 안에 목록을 작성하는 방법을 생각했지만 글 머리 기호를 글 머리 기호에 더 가깝게 할당하는 방법을 알지 못했습니다.

답변

3

leftIndent 매개 변수를 ListItem에 전달하기 만하면됩니다.

my_list = ListFlowable([ 
    ListItem(Paragraph("Line 1", styles['Normal']), 
     leftIndent=35, value='circle', 
     bulletColor=CMYKColor(0.81, 0.45, 0.53, 0.23) 
    ), 
    ListItem(Paragraph("Line 2", styles['Normal']), 
     leftIndent=35, value='circle', 
     bulletColor=CMYKColor(0.81, 0.45, 0.53, 0.23)) 
], 
bulletType='bullet', 
start='circle', 
leftIndent=10 
) 

편집 : 당신은 글 머리 기호 및 텍스트 사이의 공간을 정의하기위한 ListFlowableleftIndent을 설정해야합니다.

+0

이 내가 원하는 위치에 총알을 이동하지만, 텍스트뿐만 아니라 이동 사이의 수직 간격을 제어 할 수 있습니다. 이상적으로, 총알은'1 호선'의'L'에 인접한 것입니다. –

+0

편집을 완료했습니다. 내가 당신을 이해했다면, 해결책이되어야합니다. – floqqi

+0

굉장! 나는 실제로 질문을 한 후에 다른 방법으로 그것을 실제로 풀었지만 (나는 그 대답을 약간 게시 할 것이다.), 나는이 것을 좋아한다. –

1

글 머리 기호가 세로로 올바르게 정렬되지 않는 문제를 해결하는 방법을 알아보기 위해 더 자세히 살펴 보았습니다 (ReportLab source code…). 나는 제안 다른 글 머리 기호 목록 제어 괴물에 대한 추가 kwargs 다음

  • bulletOffsetY +, 그것을 아래로 이동 - 제가 그것을 이동했습니다 내가 그랬던 것처럼 당신은 기본적으로 거대한 총알 결국 경우
  • bulletFontSize
  • spaceBeforespaceAfter은 목록 항목
+0

이것은 질문에 대답하지는 않지만, 문제를 해결하는 데 도움이되는 유용하고 문서화되지 않은 정보이다. 나는 처음에이 질문을 읽도록 이끌었습니다! 희망은 다른 사람들에게도 도움이되기를 바랍니다. – jenniwren

관련 문제