Add Hyperlink in RichText
This commit is contained in:
parent
c9afd31320
commit
23fbe8c048
@ -1,3 +1,7 @@
|
|||||||
|
0.5.0 (2018-08-03)
|
||||||
|
-------------------
|
||||||
|
- An hyperlink can now be used in RichText
|
||||||
|
|
||||||
0.4.13 (2018-06-21)
|
0.4.13 (2018-06-21)
|
||||||
-------------------
|
-------------------
|
||||||
- Subdocument can now be based on an existing docx
|
- Subdocument can now be based on an existing docx
|
||||||
|
|||||||
12
Pipfile
Normal file
12
Pipfile
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
[[source]]
|
||||||
|
url = "https://pypi.python.org/simple"
|
||||||
|
verify_ssl = true
|
||||||
|
name = "pypi"
|
||||||
|
|
||||||
|
[dev-packages]
|
||||||
|
"e1839a8" = {path = ".", editable = true}
|
||||||
|
|
||||||
|
[packages]
|
||||||
|
|
||||||
|
[requires]
|
||||||
|
python_version = "2.7"
|
||||||
82
Pipfile.lock
generated
Normal file
82
Pipfile.lock
generated
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
{
|
||||||
|
"_meta": {
|
||||||
|
"hash": {
|
||||||
|
"sha256": "0259bf6a7ccb55049c4e7521b2c644cdc4f80a098d8f1956465b308bc4e897fd"
|
||||||
|
},
|
||||||
|
"pipfile-spec": 6,
|
||||||
|
"requires": {
|
||||||
|
"python_version": "2.7"
|
||||||
|
},
|
||||||
|
"sources": [
|
||||||
|
{
|
||||||
|
"name": "pypi",
|
||||||
|
"url": "https://pypi.python.org/simple",
|
||||||
|
"verify_ssl": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"default": {},
|
||||||
|
"develop": {
|
||||||
|
"e1839a8": {
|
||||||
|
"editable": true,
|
||||||
|
"path": "."
|
||||||
|
},
|
||||||
|
"jinja2": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:74c935a1b8bb9a3947c50a54766a969d4846290e1e788ea44c1392163723c3bd",
|
||||||
|
"sha256:f84be1bb0040caca4cea721fcbbbbd61f9be9464ca236387158b0feea01914a4"
|
||||||
|
],
|
||||||
|
"version": "==2.10"
|
||||||
|
},
|
||||||
|
"lxml": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:0941f4313208c07734410414d8308812b044fd3fb98573454e3d3a0d2e201f3d",
|
||||||
|
"sha256:0b18890aa5730f9d847bc5469e8820f782d72af9985a15a7552109a86b01c113",
|
||||||
|
"sha256:21f427945f612ac75576632b1bb8c21233393c961f2da890d7be3927a4b6085f",
|
||||||
|
"sha256:24cf6f622a4d49851afcf63ac4f0f3419754d4e98a7a548ab48dd03c635d9bd3",
|
||||||
|
"sha256:2dc6705486b8abee1af9e2a3761e30a3cb19e8276f20ca7e137ee6611b93707c",
|
||||||
|
"sha256:2e43b2e5b7d2b9abe6e0301eef2c2c122ab45152b968910eae68bdee2c4cfae0",
|
||||||
|
"sha256:329a6d8b6d36f7d6f8b6c6a1db3b2c40f7e30a19d3caf62023c9d6a677c1b5e1",
|
||||||
|
"sha256:423cde55430a348bda6f1021faad7235c2a95a6bdb749e34824e5758f755817a",
|
||||||
|
"sha256:4651ea05939374cfb5fe87aab5271ed38c31ea47997e17ec3834b75b94bd9f15",
|
||||||
|
"sha256:4be3bbfb2968d7da6e5c2cd4104fc5ec1caf9c0794f6cae724da5a53b4d9f5a3",
|
||||||
|
"sha256:622f7e40faef13d232fb52003661f2764ce6cdef3edb0a59af7c1559e4cc36d1",
|
||||||
|
"sha256:664dfd4384d886b239ef0d7ee5cff2b463831079d250528b10e394a322f141f9",
|
||||||
|
"sha256:697c0f58ac637b11991a1bc92e07c34da4a72e2eda34d317d2c1c47e2f24c1b3",
|
||||||
|
"sha256:6ec908b4c8a4faa7fe1a0080768e2ce733f268b287dfefb723273fb34141475f",
|
||||||
|
"sha256:7ec3fe795582b75bb49bb1685ffc462dbe38d74312dac07ce386671a28b5316b",
|
||||||
|
"sha256:8c39babd923c431dcf1e5874c0f778d3a5c745a62c3a9b6bd755efd489ee8a1d",
|
||||||
|
"sha256:949ca5bc56d6cb73d956f4862ba06ad3c5d2808eac76304284f53ae0c8b2334a",
|
||||||
|
"sha256:9f0daddeefb0791a600e6195441910bdf01eac470be596b9467e6122b51239a6",
|
||||||
|
"sha256:a359893b01c30e949eae0e8a85671a593364c9f0b8162afe0cb97317af0953bf",
|
||||||
|
"sha256:ad5d5d8efed59e6b1d4c50c1eac59fb6ecec91b2073676af1e15fc4d43e9b6c5",
|
||||||
|
"sha256:bc1a36f95a6b3667c09b34995fc3a46a82e4cf0dc3e7ab281e4c77b15bd7af05",
|
||||||
|
"sha256:be37b3f55b6d7d923f43bf74c356fc1878eb36e28505f38e198cb432c19c7b1a",
|
||||||
|
"sha256:c45bca5e544eb75f7500ffd730df72922eb878a2f0213b0dc5a5f357ded3a85d",
|
||||||
|
"sha256:ccee7ebbb4735ebc341d347fca9ee09f2fa6c0580528c1414bc4e1d31372835c",
|
||||||
|
"sha256:dc62c0840b2fc7753550b40405532a3e125c0d3761f34af948873393aa688160",
|
||||||
|
"sha256:f7d9d5aa1c7e54167f1a3cba36b5c52c7c540f30952c9bd7d9302a1eda318424"
|
||||||
|
],
|
||||||
|
"version": "==4.2.3"
|
||||||
|
},
|
||||||
|
"markupsafe": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:a6be69091dac236ea9c6bc7d012beab42010fa914c459791d627dad4910eb665"
|
||||||
|
],
|
||||||
|
"version": "==1.0"
|
||||||
|
},
|
||||||
|
"python-docx": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:55ece6fd4a4fa3389909fa0e51400fce428e1fb6f6ef3599cbba31673441f184"
|
||||||
|
],
|
||||||
|
"version": "==0.8.6"
|
||||||
|
},
|
||||||
|
"six": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:70e8a77beed4562e7f14fe23a786b54f6296e34344c23bc42f07b15018ff98e9",
|
||||||
|
"sha256:832dc0e10feb1aa2c68dcc57dbb658f1c7e65b9b61af69048abc87a2db00a0eb"
|
||||||
|
],
|
||||||
|
"version": "==1.11.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -126,6 +126,17 @@ Instead of using ``RichText()``, one can use its shortcut : ``R()``
|
|||||||
you do not specify a style in ``RichText()``, the style will go back to a microsoft word default style.
|
you do not specify a style in ``RichText()``, the style will go back to a microsoft word default style.
|
||||||
This will affect only character styles, not the paragraph styles (MSWord manages this 2 kind of styles).
|
This will affect only character styles, not the paragraph styles (MSWord manages this 2 kind of styles).
|
||||||
|
|
||||||
|
Hyperlink with RichText
|
||||||
|
.......................
|
||||||
|
|
||||||
|
You can add an hyperlink to a text by using a Richtext with this syntax ::
|
||||||
|
|
||||||
|
tpl=DocxTemplate('your_template.docx')
|
||||||
|
rt = RichText('You can add an hyperlink, here to ')
|
||||||
|
rt.add('google',url_id=tpl.build_url_id('http://google.com'))
|
||||||
|
|
||||||
|
Put ``rt`` in your context, then use ``{{r rt}}`` in your template
|
||||||
|
|
||||||
Inline image
|
Inline image
|
||||||
------------
|
------------
|
||||||
|
|
||||||
|
|||||||
@ -5,7 +5,7 @@ Created : 2015-03-12
|
|||||||
@author: Eric Lapouyade
|
@author: Eric Lapouyade
|
||||||
'''
|
'''
|
||||||
|
|
||||||
__version__ = '0.4.13'
|
__version__ = '0.5.0'
|
||||||
|
|
||||||
from lxml import etree
|
from lxml import etree
|
||||||
from docx import Document
|
from docx import Document
|
||||||
@ -350,6 +350,10 @@ class DocxTemplate(object):
|
|||||||
|
|
||||||
return part_map
|
return part_map
|
||||||
|
|
||||||
|
def build_url_id(self,url):
|
||||||
|
return self.docx._part.relate_to(url, REL_TYPE.HYPERLINK,
|
||||||
|
is_external=True)
|
||||||
|
|
||||||
def save(self,filename,*args,**kwargs):
|
def save(self,filename,*args,**kwargs):
|
||||||
self.pre_processing()
|
self.pre_processing()
|
||||||
self.docx.save(filename,*args,**kwargs)
|
self.docx.save(filename,*args,**kwargs)
|
||||||
@ -382,7 +386,6 @@ class Subdoc(object):
|
|||||||
def __html__(self):
|
def __html__(self):
|
||||||
return self._get_xml()
|
return self._get_xml()
|
||||||
|
|
||||||
|
|
||||||
class RichText(object):
|
class RichText(object):
|
||||||
""" class to generate Rich Text when using templates variables
|
""" class to generate Rich Text when using templates variables
|
||||||
|
|
||||||
@ -401,7 +404,8 @@ class RichText(object):
|
|||||||
italic=False,
|
italic=False,
|
||||||
underline=False,
|
underline=False,
|
||||||
strike=False,
|
strike=False,
|
||||||
font=None):
|
font=None,
|
||||||
|
url_id=None):
|
||||||
|
|
||||||
|
|
||||||
if not isinstance(text, six.text_type):
|
if not isinstance(text, six.text_type):
|
||||||
@ -436,10 +440,15 @@ class RichText(object):
|
|||||||
if font:
|
if font:
|
||||||
prop += u'<w:rFonts w:ascii="{font}" w:hAnsi="{font}" w:cs="{font}"/>'.format(font=font)
|
prop += u'<w:rFonts w:ascii="{font}" w:hAnsi="{font}" w:cs="{font}"/>'.format(font=font)
|
||||||
|
|
||||||
self.xml += u'<w:r>'
|
|
||||||
|
xml = u'<w:r>'
|
||||||
if prop:
|
if prop:
|
||||||
self.xml += u'<w:rPr>%s</w:rPr>' % prop
|
xml += u'<w:rPr>%s</w:rPr>' % prop
|
||||||
self.xml += u'<w:t xml:space="preserve">%s</w:t></w:r>' % text
|
xml += u'<w:t xml:space="preserve">%s</w:t></w:r>' % text
|
||||||
|
if url_id:
|
||||||
|
xml = u'<w:hyperlink r:id="%s" w:tgtFrame="_blank">%s</w:hyperlink>' % (url_id, xml)
|
||||||
|
self.xml += xml
|
||||||
|
|
||||||
|
|
||||||
def __unicode__(self):
|
def __unicode__(self):
|
||||||
return self.xml
|
return self.xml
|
||||||
|
|||||||
@ -22,7 +22,9 @@ rt.add('some small', size=14)
|
|||||||
rt.add(' or ')
|
rt.add(' or ')
|
||||||
rt.add('big', size=60)
|
rt.add('big', size=60)
|
||||||
rt.add(' text.')
|
rt.add(' text.')
|
||||||
rt.add(' Et voilà ! ')
|
rt.add('\nYou can add an hyperlink, here to ')
|
||||||
|
rt.add('google',url_id=tpl.build_url_id('http://google.com'))
|
||||||
|
rt.add('\nEt voilà ! ')
|
||||||
rt.add('\n1st line')
|
rt.add('\n1st line')
|
||||||
rt.add('\n2nd line')
|
rt.add('\n2nd line')
|
||||||
rt.add('\n3rd line')
|
rt.add('\n3rd line')
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user