def wrap(self, availWidth, availHeight): """Adds hyperlink to toc entry.""" widths = (availWidth - self.rightColumnWidth, self.rightColumnWidth) # makes an internal table which does all the work. # we draw the LAST RUN's entries! If there are # none, we make some dummy data to keep the table # from complaining if len(self._lastEntries) == 0: if reportlab.Version <= '2.3': _tempEntries = [(0, 'Placeholder for table of contents', 0)] else: _tempEntries = [(0, 'Placeholder for table of contents', 0, None)] else: _tempEntries = self._lastEntries if _tempEntries: base_level = _tempEntries[0][0] else: base_level = 0 tableData = [] for entry in _tempEntries: level, text, pageNum = entry[:3] left_col_level = level - base_level if reportlab.Version > '2.3': # For ReportLab post-2.3 leftColStyle = self.getLevelStyle(left_col_level) else: # For ReportLab <= 2.3 leftColStyle = self.levelStyles[left_col_level] label = self.refid_lut.get((level, text, pageNum), None) if label: pre = u'<a href="%s" color="%s">' % (label, self.linkColor) post = u'</a>' if not isinstance(text, unicode): text = unicode(text, 'utf-8') text = pre + text + post else: pre = '' post = '' #right col style is right aligned rightColStyle = ParagraphStyle(name='leftColLevel%d' % left_col_level, parent=leftColStyle, leftIndent=0, alignment=TA_RIGHT) leftPara = Paragraph(text, leftColStyle) rightPara = Paragraph(pre + str(pageNum) + post, rightColStyle) tableData.append([leftPara, rightPara]) self._table = Table(tableData, colWidths=widths, style=self.tableStyle) self.width, self.height = self._table.wrapOn(self.canv, availWidth, availHeight) return self.width, self.height
def gather_elements(self, client, node, style): # Based on the graphviz extension global graphviz_warn try: # Is vectorpdf enabled? if hasattr(VectorPdf, 'load_xobj'): # Yes, we have vectorpdf fname, outfn = sphinx.ext.graphviz.render_dot( node['builder'], node['code'], node['options'], 'pdf') else: # Use bitmap if not graphviz_warn: log.warning( 'Using graphviz with PNG output. You get much better results if you enable the vectorpdf extension.' ) graphviz_warn = True fname, outfn = sphinx.ext.graphviz.render_dot( node['builder'], node['code'], node['options'], 'png') if outfn: client.to_unlink.append(outfn) client.to_unlink.append(outfn + '.map') else: # Something went very wrong with graphviz, and # sphinx should have given an error already return [] except sphinx.ext.graphviz.GraphvizError as exc: log.error('dot code %r: ' % node['code'] + str(exc)) return [Paragraph(node['code'], client.styles['code'])] return [MyImage(filename=outfn, client=client)]
def gather_elements(self, client, node, style): # Based on the graphviz extension try: fname, outfn = sphinx.ext.graphviz.render_dot( node['builder'], node['code'], node['options'], 'pdf') client.to_unlink.append(outfn) client.to_unlink.append(outfn + '.map') except sphinx.ext.graphviz.GraphvizError, exc: log.error('dot code %r: ' % node['code'] + str(exc)) return [Paragraph(node['code'], client.styles['code'])]
def gather_elements(self, client, node, style): # Need to add ids as targets, found this when using one of the # django docs extensions targets = [i.replace(' ', '') for i in node['ids']] pre = '' for i in targets: if i not in client.targets: pre += '<a name="%s" />' % i client.targets.append(i) return [Paragraph(pre + client.gather_pdftext(node), style)]
def gather_elements(self, client, node, style): return [Paragraph(client.gather_pdftext(node), style)]
def gather_elements(self, client, node, style): return [ Paragraph(client.gather_pdftext(node), client.styles['centered']) ]