标签: reportlab

如何在ReportLab中创建项目符号列表

如何在ReportLab中创建项目符号列表?文档令人沮丧地含糊不清.我在尝试:

text = ur '''
<para bulletText="&bull;">
item 1
</para>
<para bulletText="&bull;">
item 2
</para>
'''
Story.append(Paragraph(text,TEXT_STYLE))
Run Code Online (Sandbox Code Playgroud)

但我不断收到错误list index out of range.看来我不能<para></para>在一次通话中加一个以上Paragraph()?我也试过设置,TEXT_STYLE.bulletText="&bull;"但这也不起作用......

python pdf reportlab

6
推荐指数
2
解决办法
7038
查看次数

如何在浏览器中打开生成的PDF文件?

我写了一个Pdf合并,它将原始文件与水印合并.

我现在要做的是通过Django视图在浏览器中打开'document-output.pdf'文件.我已经检查了Django的相关文章,但由于我的方法相对不同,我不直接创建PDF对象,使用响应对象作为其"文件".所以我有点迷失.

那么,我怎么能在Django视图中呢?

from pyPdf import PdfFileWriter, PdfFileReader
from reportlab.pdfgen.canvas import Canvas
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont

output = PdfFileWriter()
input = PdfFileReader(file('file.pdf', 'rb'))

# get number of pages
num_pages = input.getNumPages()

# register new chinese font
pdfmetrics.registerFont(TTFont('chinese_font','/usr/share/fonts/truetype/mac/LiHeiPro.ttf'))

# generate watermark on the fly
pdf = Canvas("watermark.pdf")
pdf.setFont("chinese_font", 12)
pdf.setStrokeColorRGB(0.5, 1, 0)
pdf.drawString(10, 830, "??")
pdf.save()

# put on watermark
watermark = PdfFileReader(file('watermark.pdf', 'rb'))
page1 = input.getPage(0)

page1.mergePage(watermark.getPage(0))

# add processed pdf page
output.addPage(page1)

# then, add …
Run Code Online (Sandbox Code Playgroud)

django reportlab pypdf

6
推荐指数
3
解决办法
9856
查看次数

使用画布绘制图像并使用SimpleDocTemplate

我正在使用reportlab在django视图中编写pdf,它们非常简单,标题,内容和页脚.

我正在使用非常适合的SimpleDocTemplate,在内容中绘制表格,页脚和标题是drwan使用:

build([data], onFirstPage=drawPageFrame, onLaterPages=drawPageFrame).
Run Code Online (Sandbox Code Playgroud)

我的问题是,如何使用Canvas.drawImage(...)绘制图像?我需要一个"浮动"图像...位于我想要的文本上,而使用SimpleDocTemplate我没有Canvas对象来执行此操作.

搜索我发现了这个:

鸭嘴兽布局的东西使用flowables.当包装,拆分或绘制时,包装工通常将属性canv设置到每个flowable上,即围绕wrap,split和draw方法.在这些方法中,您可以使用self的canv属性访问画布.

怎么用这个?

嗯,更多要测试的东西:

flowables.Macro
flowables.CallerMacro
Run Code Online (Sandbox Code Playgroud)
# -*- coding: utf-8 -*-
from reportlab.lib.pagesizes import A4, landscape, portrait
from reportlab.lib.styles import getSampleStyleSheet
from reportlab.platypus import Table, Flowable, SimpleDocTemplate, Paragraph, Spacer, Image
from reportlab.lib import randomtext
from reportlab import platypus

import os,random

styles = getSampleStyleSheet()
path = os.path.realpath(os.path.dirname(__file__))

def drawPageFrame(canvas, doc):
    canvas.saveState()
    canvas.drawImage(path+"/ujiPDF.jpg",50,50,57,57)
    canvas.restoreState()

doc = SimpleDocTemplate("salida.pdf",pagesize=A4)

elementos = []

com = 'canvas.drawImage("'+path+'/ujiPDF.jpg",100,100,57,57)'
print com
elementos.append(platypus.flowables.Macro('canvas.saveState()'))
print platypus.flowables.Macro(com)
elementos.append(platypus.flowables.Macro(com))
elementos.append(platypus.flowables.Macro('canvas.restoreState()'))

para = Paragraph(randomtext.randomText(randomtext.PYTHON,20), styles["Normal"])
elementos.append(para)

doc.build(elementos,onFirstPage=drawPageFrame, …

python django reportlab

6
推荐指数
3
解决办法
1万
查看次数

带有ReportLab的旋转文档(垂直文本)

我试图得到类似下面的代码片段来实际绘制这个文件旋转90度.pagesize已经是我最终想要它的方式,但文本仍然是水平的.如何旋转文本使其垂直?

style = getSampleStyleSheet()
normal = style["Normal"]
normal.alignment = TA_CENTER
normal.fontName = "Helvetica"
normal.fontSize = 15

pdf = SimpleDocTemplate("testplatypus.pdf", pagesize = (80, 250), rightMargin=10, leftMargin=10, topMargin=20,bottomMargin=20)
story = []
text = "I really need this to be wrapped and vertical!"

para = Paragraph(text, normal)
story.append(para)
pdf.build(story)
Run Code Online (Sandbox Code Playgroud)

python reportlab

6
推荐指数
2
解决办法
4581
查看次数

Python- Reportlabs - 在2个不同的页面中保存2个不同的图形?

我有以下代码,我在PDF中绘制垂直条形图和折线图.

如何将这两个图表保存在PDF的2个不同页面中.我看到它可以使用 -

c = canvas.Canvas("hello.pdf")
hello(c)
c.showPage()
c.save()
Run Code Online (Sandbox Code Playgroud)

但是,我没有使用Canvas,而是使用showPage() 不存在哪种方法的Drawing对象.

如何将2个图表保存在PDF的2个不同页面中?右边第二个图(折线图)与第一个图(垂直条形图)重叠,从而阻碍了条形图.

这是我的代码.

from reportlab.graphics.shapes import Drawing
from reportlab.graphics.charts.barcharts import VerticalBarChart

drawing = Drawing(400, 200)
data = [
(13, 5, 20, 22, 37, 45, 19, 4),
(14, 6, 21, 23, 38, 46, 20, 5)
]
bc = VerticalBarChart()
bc.x = 50
bc.y = 50
bc.height = 125
bc.width = 300
bc.data = data
#bc.strokeColor = colors.black
bc.valueAxis.valueMin = 0
bc.valueAxis.valueMax = 50
bc.valueAxis.valueStep = 10
bc.categoryAxis.labels.boxAnchor = 'ne' …
Run Code Online (Sandbox Code Playgroud)

python pdf reportlab

6
推荐指数
1
解决办法
1513
查看次数

在reportlab中旋转图像的简单方法

我们如何使用reportlab轻松旋转图像?我还没有找到简单的方法。找到的唯一方法来自http://dods.ipsl.jussieu.fr/orchidee/SANORCHIDEE/TEMP/TEMP_LOCAL/cdat_portable/lib_new_wrong_gcc/python2.4/site-packages/reportlab/test/test_graphics_images.py,例如使用:

>>> from reportlab.graphics.shapes import Image, Drawing
>>> from reportlab.platypus import SimpleDocTemplate
>>> from reportlab.lib.pagesizes import A4, portrait
>>> from reportlab.lib.units import mm
>>> img = Image(-202/25.4, -125/25.4, 210/25.4, 138/25.4, 'uneBelleImage.png') # (x, y [from lower left corner], width, height, path, **kw)
>>> d = Drawing(0, 0) # (width, height, *nodes, **keywords)
>>> d.add(img)
>>> d.scale(100,100) #(%width, %height)
>>> d.rotate(90)
>>> report=[]
>>> report.append(d)
>>> page = SimpleDocTemplate('toto.pdf', pagesize = portrait(A4), rightMargin=20*mm, leftMargin=20*mm, topMargin=10*mm, bottomMargin = 10*mm)
>>> …
Run Code Online (Sandbox Code Playgroud)

python reportlab

6
推荐指数
1
解决办法
4333
查看次数

Python:如何替换pdf中的文本

我有一个 pdf 文件,我想替换 pdf 文件中的一些文本并生成新的 pdf。我怎么能在python中做到这一点?我试过 reportlab ,reportlab 没有任何功能来搜索文本和替换它。我可以使用什么其他模块?

python pdf reportlab pypdf

6
推荐指数
1
解决办法
1万
查看次数

如何在python中使用reportlab,rtl和bidi创建包含波斯语(波斯语)文本的PDF

我一直在尝试从可以是英语、波斯语、数字或它们的组合的内容创建 PDF 文件。

波斯语文本存在一些问题,例如:“??? ?? ??? ??????? ???”

?- 文字必须从右到左书写

2-单词中不同位置的字符之间存在差异(意味着字符会根据周围的字符改变形状)

3- 因为句子是从右到左阅读的,所以普通的 textwrap 不能正常工作。

pdf reportlab persian python-3.x farsi

6
推荐指数
2
解决办法
2729
查看次数

Reportlab - Unicode 字符在 unicode 支持的字体中显示为框

尝试通过 python 3 使用 reportlab 编写包含宏宏的文档 (\xc4\x81 \xc4\x93 \xc4\xab \xc5\x8d \xc5\xab),但宏宏显示为框 (\xe2\x96 \xa0). 该文档是用 Arial 字体编写的 - 但如果我在文字处理程序中打开该文件来检查字体,则这些框采用“Segoe UI Symbol”字体。

\n\n

要在 Arial 中导入为支持多种 unicode 字符的字体(这似乎有效):

\n\n
import reportlab.rl_config\nreportlab.rl_config.warnOnMissingFontGlyphs = 0\nfrom reportlab.pdfbase import pdfmetrics\nfrom reportlab.pdfbase.ttfonts import TTFont\npdfmetrics.registerFont(TTFont(\'Arial\', \'Arial.ttf\'))\n
Run Code Online (Sandbox Code Playgroud)\n\n

我还通过 json 导入字典,当我在记事本中打开 json 文件时,看起来像这样:

\n\n
{"example1":"b\\u0101s"}\n
Run Code Online (Sandbox Code Playgroud)\n\n

该程序读取并写入这个字典:

\n\n
from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer\nfrom reportlab.lib.styles import getSampleStyleSheet\ndoc = SimpleDocTemplate("hello.pdf")\nStory = [Spacer(1,2*inch)]\nstyle = styles["Normal"]\nwith open(\'CompDict.json\',\'r\') as f:\n        m_dic=json.load(f)\nfor key,value in m_dic:\n     p=Paragraph(key+":"+value,style)\n     Story.append(p)\ndoc.build(Story)\n
Run Code Online (Sandbox Code Playgroud)\n\n

结果应该是一个 pdf 文件,example1:b\xc4\x81s但结果却是example1:b\xe2\x96\xa0s …

python unicode reportlab

6
推荐指数
1
解决办法
5968
查看次数

如何在reportlab python中将文本对齐到中心?

我正在使用reportlab生成pdf,我希望我的标题位于中心。但如何实现,找不到解决方案。

这是我的代码:

def add_text(text, style="Normal", fontsize=12):
    Story.append(Spacer(1, 12))
    ptext = "<font size={}>{}</font>".format(fontsize, text)
    Story.append(Paragraph(ptext, styles[style]))
    Story.append(Spacer(1, 12))

add_text("Title", style="Heading1", fontsize=24)
Run Code Online (Sandbox Code Playgroud)

python pdf reportlab pandas

6
推荐指数
1
解决办法
9919
查看次数

标签 统计

reportlab ×10

python ×8

pdf ×5

django ×2

pypdf ×2

farsi ×1

pandas ×1

persian ×1

python-3.x ×1

unicode ×1