标签: reportlab

我可以使用 Python 中的 ReportLab 获取格式化文本大小吗?

是否可以获取reportLab中渲染文本的大小/范围?

我需要计算相对于页面上其他元素的一些位置。

可流动的系统不是我想要的。我不介意在必要时使用它来获取尺寸,但它不适合我的整体布局。我尝试创建一个Paragraph调用wrap,但它始终返回可用宽度,而不是测量的扩展。

python pdf reportlab text-formatting python-3.x

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

在AppEngine Python上使用Reportlab生成的PDF文档中添加图像文件的正确方法

我正在尝试使用App Engine Python上的reportlab生成PDF报告.

但我不知道如何正确附加图像.

图像是静态的.

这是我项目的目录树.

在此输入图像描述

这就是我所做的(在' chipas.py ' 里面)来获取图像:

im = Image('../static/logo.png',1*inch, 1*inch)
story.append(im)
...
Run Code Online (Sandbox Code Playgroud)

我得到的堆栈跟踪:

回溯(最近一次调用最后一次):文件"C:\ Users\Lucas\Dropbox\Desarrollo\Python\windows\AppEngine\google\appengine\ext\webapp_webapp25.py",第701行,在call handler.get(*groups)中文件"C:\ Users\Lucas\Dropbox\Desarrollo\workspace\python\chipas-windows\src\chipas.py",第1035行,在获取doc.build(story)文件"C:\ Users\Lucas\Dropbox\Desarrollo\workspace\python\chipas-windows\src\reportlab\platypus\doctemplate.py",第1117行,在构建BaseDocTemplate.build(self,flowables,canvasmaker = canvasmaker)文件"C:\ Users\Lucas\Dropbox\Desarrollo\workspace\python\chipas-windows\src\reportlab\platypus\doctemplate.py",第880行,在构建self.handle_flowable(flowables)文件"C:\ Users\Lucas\Dropbox\Desarrollo\workspace\python\chipas- windows\src\reportlab\platypus\doctemplate.py",第763行,如果是frame.add,则在handle_flowable中(f,canv,trySplit = self.allowSplitting):文件"C:\ Users\Lucas\Dropbox\Desarrollo\workspace\python\chipas-windows\src\reportlab\platypus\frames.py",第159行,在_add w中,h = flowable.wra p(aW,h)文件"C:\ Users\Lucas\Dropbox\Desarrollo\workspace\python\chipas-windows\src\reportlab\platypus\flowables.py",第408行,在wrap中返回self.drawWidth,self. drawHeight文件"C:\ Users\Lucas\Dropbox\Desarrollo\workspace\python\chipas-windows\src\reportlab\platypus\ flowables.py ",第402行,在getattr self._setup_inner()文件"C:\ Users\Lucas\Dropbox\Desarrollo\workspace\python\chipas-windows\src\reportlab\platypus\flowables.py",第368行,在_setup_inner中img = self._img文件"C:\ Users\Lucas\Dropbox\Desarrollo\workspace\python\chipas-windows\src\reportlab\platypus\ flowables.py ",第398行,在getattr self._img = ImageReader(self._file)文件"C:\ Users\Lucas\Dropbox\Desarrollo\workspace\python\chipas -windows\src\reportlab\lib\utils.py",第541行,在init中, 如果_isPILImage(fileName):文件"C:\ Users\Lucas\Dropbox\Desarrollo\workspace\python\chipas-windows\src\reportlab\lib\utils.py",第521行,在_isPILImage中返回isinstance(im,Image.Image)AttributeError:'NoneType'对象没有attribut e'Image'INFO 2012-02-29 19:54:37,276 dev_appserver.py:4247]"GET/pdf?pedido = ahVkZXZ-Y2hpcGFzLWludGhlY2xvdWRyLwsSBlBlZGlkbyIjMjAxMi0wMi0yOSAxOTo1NDoxOHRlc3RAZXhhbXBsZS5jb20M HTTP/1.1"500 -

在使用reportlab生成的pdf文档中添加图像文件的正确方法是什么?提前谢谢了!

python google-app-engine image reportlab

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

I/O错误:从不同目录导入python文件时无法打开资源

我正在使用ReportLab生成pdf.但是,当我试图在其中附加图像时,它会给出错误.如果我不包括图像,那么一切都很好.代码运行成功.

我有以下目录结构.

parentDir\
   main.py
   childDir\
       __init__.py
       first.py
       second.py
       image.jpg
Run Code Online (Sandbox Code Playgroud)

main.py

from childDir.first import methodOfFirst

  #using methodOfFirst
Run Code Online (Sandbox Code Playgroud)

first.py

from second import methodOfSecond

   #using methodOfSecond
Run Code Online (Sandbox Code Playgroud)

second.py

#this second.py file have **ReportLab** Code
   .............
   canvas.drawImage('image.jpg', 0.2*inch, 11.12*inch, width=w*scale, height=h*scale)
   .............
Run Code Online (Sandbox Code Playgroud)

这是我的代码的基本框架.但是当我执行时,它会生成错误:

raise IOError('Cannot open resource "%s"' % name)
 IOError: Cannot open resource "tjsservices.jpg"
   handle_pageBegin args=()
Run Code Online (Sandbox Code Playgroud)

我是python和reportLab的新手,所以不知道导入这种层次结构的正确方法是什么.如果所有文件都在同一目录中,那么它可以正常工作.但是当我使用这种目录结构时,它会失败.

为了简单起见,我提供了这个骨架.如果需要更多代码,请告诉我.

所以问题是.为什么我收到此错误以及如何解决?这是ReportLab的问题(即reportLab不支持这种导入)或者我导入的文件方式错误?任何帮助将不胜感激.

python io reportlab

2
推荐指数
1
解决办法
3772
查看次数

reportlab表现不佳

我正在使用reportlab将一些大型库(俄语纯文本)转换为pdf格式.当原始文件足够小(例如,大约10-50 kB)时,它工作正常.但是,如果我试图转换大文本(500kB以上),则需要花费大量时间来报告.有谁知道可能是什么问题?

BYTES_TO_READ = 10000 

def go(text):
    doc = SimpleDocTemplate("output.pdf")
    Story = [Spacer(1, 2*inch)]
    style = styles["Normal"]
    p = Paragraph(text, style)
    Story.append(p)
    doc.build(Story)

def get_text_from_file():
    source_file = open("book.txt", "r")
    text = source_file.read(BYTES_TO_READ)
    source_file.close()
    return text

go(get_text_from_file())
Run Code Online (Sandbox Code Playgroud)

因此,当我尝试将BYTES_TO_READ变量设置为超过200-300千(即,只是为了看看发生了什么,而不是阅读完整的书,只是它的一部分) - 需要花费大量的时间

python pdf reportlab

2
推荐指数
1
解决办法
1529
查看次数

在reportlab画布上获取表格的高度

我在reportlab画布上画了一张桌子.绘图时,我们需要将表格的左下角线传递给drawOn方法.我的表的高度是动态的,因此它重叠在表格上方的元素上.我找不到任何返回要绘制的表的高度的方法.有没有其他方法可以做到这一点?

python pdf-generation reportlab

2
推荐指数
1
解决办法
3098
查看次数

使用Reportlab Canvas-如何创建一个选项来打印从浏览器本身生成的pdf?

这是使用Reportlab为我生成pdf的代码.

现在,它只是在浏览器中显示pdf,并且在resonse.header ['Content-Disposition']中包含'attachment'后,它会下载pdf.

但我想要的是浏览器中的rint选项,它甚至允许您选择打印机.可能吗 ?

       data = "raghav"
       p = canvas.Canvas(self.response.out)
        p.drawString(50, 700, data)


        p.showPage()

        self.response.headers['Content-Type'] = 'application/pdf'
        self.response.headers['Content-Disposition'] = 'attachment;filename=testpdf.pdf'
        p.save()
Run Code Online (Sandbox Code Playgroud)

python pdf reportlab http-headers

2
推荐指数
1
解决办法
1485
查看次数

如何使用reportlab与谷歌应用程序引擎

我无法在谷歌应用引擎下正确导入reportlab.根据以下指南(以及网络上的其他几个地方):

"您所要做的就是下载它并将'reportab'目录复制到您应用的根目录中."

当我这样做时(我从这里下载reportlab-3.0.zip )并将其解压缩到我的应用程序的根目录中,因为我尝试使用以下行导入reportlab:

from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import A4
Run Code Online (Sandbox Code Playgroud)

我收到导入错误

ImportError: No module named reportlab.pdfgen
Run Code Online (Sandbox Code Playgroud)

我试过谷歌搜索但无济于事.任何有关这方面的帮助将不胜感激,因为我不确定我还能尝试什么.非常感谢!


我尝试的另一件事是复制我的应用程序的根目录下的下载zip的src目录中的内容,但这也无效.我使用它的错误是:

ImportError: Cannot re-init internal module __main__
Run Code Online (Sandbox Code Playgroud)

似乎版本2.7导入没问题,只有3.0问题

python google-app-engine reportlab

2
推荐指数
1
解决办法
1383
查看次数

使用unicode以任何语言保存文件

我正在创建一个简单的脚本,它使用Reportlab pdf生成模块将图像列表作为输入并输出pdf文件.该脚本采用如上所示的文件名:

from reportlab.pdfgen import canvas
filename = raw_input("Enter pdf filename: ")
c = canvas.Canvas(filename + ".pdf")
c.save()
Run Code Online (Sandbox Code Playgroud)

一切都很棒,直到用户输入非英语文件名(希伯来语,阿拉伯语),导致代码抛出以下异常:

UnicodeDecodeError: 'utf8' codec can't decode byte 0xf9 in position 0: invalid start byte
Run Code Online (Sandbox Code Playgroud)

所以,我决定使用unicode,但是当我使用unicode()它时会抛出另一个例外:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xf9 in position 0: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)

但是,当我解码字符串编码时,它就像一个魅力(希伯来语示例):

from reportlab.pdfgen import canvas
filename = raw_input("Enter pdf filename: ")
filename = filename.decode("windows-1255")
c = canvas.Canvas(filename + ".pdf")
c.save()
Run Code Online (Sandbox Code Playgroud)

我继续尝试另一种方法,并发现如果我u在上面的例子中写字符串之前,它可以用任何语言工作:

from reportlab.pdfgen import canvas
filename …
Run Code Online (Sandbox Code Playgroud)

python unicode encoding reportlab python-2.7

2
推荐指数
1
解决办法
508
查看次数

Reportlab新线在长线上

在此输入图像描述

我需要一个新行,所以我可以在PFD中看到一种格式,我尝试添加页面宽度,但它没有工作,我使用/ n的其他东西,它不起作用.这是我的代码.我可以手动添加一个格式,因为我需要显示从数据库获取的信息,并在一个长行中获取信息.

def PdfReportView(request):
    print id
    # Create the HttpResponse object with the appropriate PDF headers.
    response = HttpResponse(content_type='application/pdf')
    response['Content-Disposition'] = 'filename="PatientReport.pdf"'
    c = canvas.Canvas(response, pagesize=letter)
    t = c.beginText()
    t.setFont('Helvetica-Bold', 10)
    t.setCharSpace(3)
    t.setTextOrigin(50, 700)
    t.textLine("Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.")
    c.drawText(t)
    c.showPage()
    c.save() …
Run Code Online (Sandbox Code Playgroud)

python pdf newline reportlab

2
推荐指数
1
解决办法
4083
查看次数

用Python将完整的csv表写入PDF

我有一个python脚本,可以使用reportlab platypus将.csv文件中的文本消息数据写入PDF中的表中。它仅将表的最后一行写入单元格。在此之前,它将忽略所有其他行。它写入PDF的唯一一行是用黄色突出显示的excel片段中显示的最后一行。如图所示,还包含了将其写入PDF时的外观的摘要。

在此处输入图片说明

在此处输入图片说明

它还在三页或四页中创建PDF,这表明它试图为整个表腾出空间,但不会编写它。到目前为止,这是我一直在使用的代码。我想以Excel片段中所示的相同格式将其写入PDF文档。我应该如何重构我的代码来做到这一点?

# Script to generate a PDF report after data has been parsed into smsInfo.csv file

# import statements
import requests
from reportlab.lib import colors
from reportlab.lib.pagesizes import *
from reportlab.platypus import *
from reportlab.lib.styles import getSampleStyleSheet
import csv
import os
import datetime

now = datetime.datetime.now()

# Get de work directory
cwd = os.getcwd()

# Introduction text
line1 = 'LYIT MOBILE FORENSICS DIVISION'
line2 = 'Date: ' + now.strftime("%d-%m-%y")
line3 = 'Case Number: 10'
line4 = 'This forensic …
Run Code Online (Sandbox Code Playgroud)

python pdf reportlab

2
推荐指数
1
解决办法
3079
查看次数