2013-07-18 2 views
2

이미지가 포함 된 일부 제품에 대한 PDF를 작성 중입니다. 이 이미지들 중 많은 부분이 흰색 바탕에 있기 때문에 테두리를 추가하고 싶습니다. PDF를 만들 때 이미지 URL을 받았는데, reportlab의 Image()에 직접 전달할 수 있습니다. 그러면 이미지가 잘 표시됩니다. 까다로운 부분 인 경계선이 생깁니다.ReportLab에서 이미지에 테두리를 추가 할 수 있습니까?

ReportLab's userguide를 통해보고 한 후, 이미지() 직접 테두리를 적용하는 기능이 없습니다. 따라서 이미지 주변에 테두리를 시뮬레이션 할 수 있는지 알아보기 위해 시도해 볼만한 몇 가지 트릭이 있습니다. 처음에는

, 나는 단지 고통을하지 않을 것입니다 각 이미지에 대한 프레임을 만들 생각하지만, 프레임의 테두리 디버깅을 위해 단지 검은 색 라인이며, 어떤 방법으로 사용자 정의 할 수 없습니다. 국경의 두께와 색상을 바꿀 수 있기를 바란다. 그래서 그 옵션은 유망하지 않다.

그때 나는() 테두리 포함하여 특정 스타일을 적용 할 수있는 ParagraphStyle()를 취할 수있는 그 단락을 발견했습니다. 대신에 내가 가지고있는 이미지 URL에 'IMG'태그는 XML을 포함하는 문자열을 작성하여) 이미지() 동등한 ParagraphStyle()를 가지고 있지 않기 때문에 나는 단락 (사용할 수 어쩌면 생각, 다음에)합니다 (ParagraphStyle을 적용 국경이있다. 이러한 접근은 성공적으로 이미지를 보여줍니다,하지만 여전히 아래 그럴 국경 :(간단한 예제 코드 :

from reportlab.platypus import Paragraph 
from reportlab.lib.styles import Paragraph Style 

Paragraph(
    text='<img src="http://placehold.it/150x150.jpg" width="150" height="150" />', 
    style=ParagraphStyle(
     name='Image', 
     borderWidth=3, 
     borderColor=HexColor('#000000') 
    ) 
) 

나는 또한 XML 테두리의 스타일을 인라인 할 수있는 방법을 가지고 있는지 확인하기 위해 검색을 시도했지만하지 않았다 !

모든 제안은 감사합니다. 감사합니다 아무것도 찾을 :) 그리고 그 사건의 경우도 가능하지 경우 알려 주시기!

는 해결책 : G Gordon Worley III의 아이디어와

, 나는 작동하는 솔루션을 쓸 수 있었다! 다음 예는 다음과 같습니다

from reportlab.platypus import Table 

img_width = 150 
img_height = 150 
img = Image(filename='url_of_img_here', width=img_width, height=img_height) 
img_table = Table(
    data=[[img]], 
    colWidths=img_width, 
    rowHeights=img_height, 
    style=[ 
     # The two (0, 0) in each attribute represent the range of table cells that the style applies to. Since there's only one cell at (0, 0), it's used for both start and end of the range 
     ('ALIGN', (0, 0), (0, 0), 'CENTER'), 
     ('BOX', (0, 0), (0, 0), 2, HexColor('#000000')), # The fourth argument to this style attribute is the border width 
     ('VALIGN', (0, 0), (0, 0), 'MIDDLE'), 
    ] 
) 

가 그럼 그냥 flowables의 목록 : 난 당신이 취해야 할 접근 방식은 테이블의 내부 이미지를 넣어 생각

답변

2

img_table를 추가합니다. 표 스타일은 당신이하고 싶은 일에 매우 잘 작동하며 많은 유연성을 제공합니다. 테이블의 유일한 셀 안에 이미지가 표시된 1x1 테이블이 필요합니다. 좋은 생각이었다

+0

! 이 방법을 사용하여 이미지를 1x1 테이블에 넣고 스타일을 지정하는 방법을 알아 냈습니다 :) 정확히 내가 필요한 것입니다. 감사합니다! – missmely

관련 문제