Есть ли способ добавить ссылку href/link к объекту Image Platypus в ReportLab? Я знаю, как добавить ссылку на текст в абзаце, но я не могу найти ничего о добавлении ссылки для изображения.ReportLab Ссылка на изображение
3
A
ответ
3
Это может быть легко достигнуто с HyperlinkedImage class предложенной missmely:
from reportlab.platypus import Image
class HyperlinkedImage(Image, object):
# The only variable I added to __init__() is hyperlink. I default it to None for the if statement I use later.
def __init__(self, filename, hyperlink=None, width=None, height=None, kind='direct', mask='auto', lazy=1):
super(HyperlinkedImage, self).__init__(filename, width, height, kind, mask, lazy)
self.hyperlink = hyperlink
def drawOn(self, canvas, x, y, _sW=0):
if self.hyperlink: # If a hyperlink is given, create a canvas.linkURL()
x1 = self.hAlignAdjust(x, _sW) # This is basically adjusting the x coordinate according to the alignment given to the flowable (RIGHT, LEFT, CENTER)
y1 = y
x2 = x1 + self._width
y2 = y1 + self._height
canvas.linkURL(url=self.hyperlink, rect=(x1, y1, x2, y2), thickness=0, relative=1)
super(HyperlinkedImage, self).drawOn(canvas, x, y, _sW)
0
Вот небольшое обновление, чтобы сделать @ большой ответ работы Meilo с ReportLab 3.3.0. Он фиксирует имя метода _hAlignAdjust
и добавляет hAlign
kwarg:
from reportlab.platypus import Image
class HyperlinkedImage(Image, object):
"""Image with a hyperlink, adopted from http://stackoverflow.com/a/26294527/304209."""
def __init__(self, filename, hyperlink=None, width=None, height=None, kind='direct',
mask='auto', lazy=1, hAlign='CENTER'):
"""The only variable added to __init__() is hyperlink.
It defaults to None for the if statement used later.
"""
super(HyperlinkedImage, self).__init__(filename, width, height, kind, mask, lazy,
hAlign=hAlign)
self.hyperlink = hyperlink
def drawOn(self, canvas, x, y, _sW=0):
if self.hyperlink: # If a hyperlink is given, create a canvas.linkURL()
# This is basically adjusting the x coordinate according to the alignment
# given to the flowable (RIGHT, LEFT, CENTER)
x1 = self._hAlignAdjust(x, _sW)
y1 = y
x2 = x1 + self._width
y2 = y1 + self._height
canvas.linkURL(url=self.hyperlink, rect=(x1, y1, x2, y2), thickness=0, relative=1)
super(HyperlinkedImage, self).drawOn(canvas, x, y, _sW)
Смежные вопросы
- 1. Reportlab, относительная ссылка на файл
- 2. SVG Ссылка на изображение
- 3. Wordpress Ссылка на изображение
- 4. Ссылка на изображение
- 5. Ссылка на изображение SASS
- 6. Ссылка на фоновое изображение
- 7. Ссылка на другое изображение
- 8. Ссылка на изображение запуска
- 9. Ссылка на изображение hover
- 10. Ссылка на изображение Javascript
- 11. Ссылка на изображение-url
- 12. Javascript ссылка на изображение
- 13. Ссылка на изображение Sharepoint
- 14. Ссылка на изображение коснулось
- 15. Ссылка на изображение, непрозрачность наведите на изображение
- 16. Python reportlab, вставляющий изображение в таблицу
- 17. Ссылка на изображение в Django
- 18. Ссылка на CSS вложенное изображение
- 19. Ссылка на изображение в CKEditor
- 20. Ссылка на изображение с javascript
- 21. Ссылка на изображение с Xamarin.forms
- 22. Ссылка на изображение MapView отключена
- 23. Ссылка на изображение в Chrome
- 24. Ссылка на изображение без ссылки
- 25. Js ссылка на изображение CodeIgniter
- 26. Ссылка на изображение с рейтингом
- 27. Ссылка на фоновое изображение тела
- 28. Динамически генерирующая ссылка на изображение
- 29. Rails - Ссылка на уменьшенное изображение
- 30. Build breaks ссылка на изображение