[CPyUG] 将图片写入pdf

classic Classic list List threaded Threaded
10 messages Options
Reply | Threaded
Open this post in threaded view
|

[CPyUG] 将图片写入pdf

hejibo
大家好,

我想将一个图片写入pdf。最主要的地方已经解决了。下面的代码可以将一个logo.png写入pdf。我现在的问题是,有没有办法先把logo.png转化为python代码,然后再写入pdf?
我知道可以用qt designer的pyrcc4命令将图片转化为python代码。可是我试图把这个代码写入pdf中时,却报错,说找不到改文件错误信息请见邮件底部。

烦请牛人指点一下,应该怎么才能把logo.png图片编译成python代码,然后写入pdf呀?谢谢

pyrcc4 -o qrc_resources.py resources.qrc 其中qrc_resources.py为目标文件,resources.qrc为需要编译的资源文件。

# -*- coding: utf-8 -*-

"""

Created on Fri Oct 07 19:44:00 2011

@author: hejibo

[hidden email]

write image to a pdf

"""

from reportlab.lib.enums import TA_JUSTIFY,TA_CENTER

from reportlab.lib.pagesizes import letter

from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Image

from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle

from reportlab.lib.units import inch,mm

from reportlab.graphics.shapes import Drawing

from reportlab.graphics.charts.linecharts import HorizontalLineChart

from reportlab.platypus import *

from reportlab.lib.colors import pink, black, red, blue, green

from reportlab.lib.styles import ParagraphStyle

#the following imports are for Chinese characters.

import reportlab.rl_config

reportlab.rl_config.warnOnMissingFontGlyphs = 0

from reportlab.pdfbase import pdfmetrics

from reportlab.pdfbase.ttfonts import TTFont

from reportlab.pdfgen import canvas

Story=[]

from PySide import QtGui, QtCore

# add logo in the center

logo = "logo.png"

im = Image(logo, 2*inch, 2*inch)

Story.append(im)

doc = SimpleDocTemplate("report.pdf",pagesize=letter,

rightMargin=72,leftMargin=72,

topMargin=72,bottomMargin=18)

doc.build(Story)

print '-_-'



--------------错误信息---------------------------------
Traceback (most recent call last):
  File "D:\workspace\seo\top 10\top10 coding English version\WriteImage.py", line 48, in <module>
    doc.build(Story)
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\doctemplate.py", line 1117, in build
    BaseDocTemplate.build(self,flowables, canvasmaker=canvasmaker)
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\doctemplate.py", line 880, in build
    self.handle_flowable(flowables)
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\doctemplate.py", line 763, in handle_flowable
    if frame.add(f, canv, trySplit=self.allowSplitting):
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\frames.py", line 159, in _add
    w, h = flowable.wrap(aW, h)
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\flowables.py", line 408, in wrap
    return self.drawWidth, self.drawHeight
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\flowables.py", line 402, in __getattr__
    self._setup_inner()
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\flowables.py", line 368, in _setup_inner
    img = self._img
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\flowables.py", line 398, in __getattr__
    self._img = ImageReader(self._file)
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\lib\utils.py", line 587, in __init__
    annotateException('\nfileName=%r identity=%s'%(fileName,self.identity()))
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\lib\utils.py", line 551, in __init__
    self.fp = open_for_read(fileName,'b')
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\lib\utils.py", line 447, in open_for_read
    raise IOError('Cannot open resource "%s"' % name)
IOError: Cannot open resource ":/icons/icons/top10ranking.png"
fileName=':/icons/icons/top10ranking.png' identity=[ImageReader@0x2e4d130 filename=':/icons/icons/top10ranking.png']

---------------------------
He Jibo
Department of Psychology,
Beckman Institute for Advanced Science and Technology
University of Illinois, Urbana Champaign,
603 East Daniel St.,
Champaign, IL 61820
website: www.hejibo.info

--
来自: python-cn`CPyUG`华蟒用户组(中文Python技术邮件列表)
发言: [hidden email]
退订: [hidden email] (向此发空信即退!)
详情: http://code.google.com/p/cpyug/wiki/PythonCn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
强烈: 建议使用技巧: 如何有效地报告Bug
http://www.chiark.greenend.org.uk/%7Esgtatham/bugs-cn.html
Reply | Threaded
Open this post in threaded view
|

Re: [CPyUG] 将图片写入pdf

Jimmy Kuu
试试:
logo = ":/logo.png"

在 2011年10月8日 上午8:59,He Jibo <[hidden email]>写道:
大家好,

我想将一个图片写入pdf。最主要的地方已经解决了。下面的代码可以将一个logo.png写入pdf。我现在的问题是,有没有办法先把logo.png转化为python代码,然后再写入pdf?
我知道可以用qt designer的pyrcc4命令将图片转化为python代码。可是我试图把这个代码写入pdf中时,却报错,说找不到改文件错误信息请见邮件底部。

烦请牛人指点一下,应该怎么才能把logo.png图片编译成python代码,然后写入pdf呀?谢谢

pyrcc4 -o qrc_resources.py resources.qrc 其中qrc_resources.py为目标文件,resources.qrc为需要编译的资源文件。

# -*- coding: utf-8 -*-

"""

Created on Fri Oct 07 19:44:00 2011

@author: hejibo

[hidden email]

write image to a pdf

"""

from reportlab.lib.enums import TA_JUSTIFY,TA_CENTER

from reportlab.lib.pagesizes import letter

from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Image

from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle

from reportlab.lib.units import inch,mm

from reportlab.graphics.shapes import Drawing

from reportlab.graphics.charts.linecharts import HorizontalLineChart

from reportlab.platypus import *

from reportlab.lib.colors import pink, black, red, blue, green

from reportlab.lib.styles import ParagraphStyle

#the following imports are for Chinese characters.

import reportlab.rl_config

reportlab.rl_config.warnOnMissingFontGlyphs = 0

from reportlab.pdfbase import pdfmetrics

from reportlab.pdfbase.ttfonts import TTFont

from reportlab.pdfgen import canvas

Story=[]

from PySide import QtGui, QtCore

# add logo in the center

logo = "logo.png"

im = Image(logo, 2*inch, 2*inch)

Story.append(im)

doc = SimpleDocTemplate("report.pdf",pagesize=letter,

rightMargin=72,leftMargin=72,

topMargin=72,bottomMargin=18)

doc.build(Story)

print '-_-'



--------------错误信息---------------------------------
Traceback (most recent call last):
  File "D:\workspace\seo\top 10\top10 coding English version\WriteImage.py", line 48, in <module>
    doc.build(Story)
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\doctemplate.py", line 1117, in build
    BaseDocTemplate.build(self,flowables, canvasmaker=canvasmaker)
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\doctemplate.py", line 880, in build
    self.handle_flowable(flowables)
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\doctemplate.py", line 763, in handle_flowable
    if frame.add(f, canv, trySplit=self.allowSplitting):
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\frames.py", line 159, in _add
    w, h = flowable.wrap(aW, h)
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\flowables.py", line 408, in wrap
    return self.drawWidth, self.drawHeight
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\flowables.py", line 402, in __getattr__
    self._setup_inner()
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\flowables.py", line 368, in _setup_inner
    img = self._img
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\flowables.py", line 398, in __getattr__
    self._img = ImageReader(self._file)
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\lib\utils.py", line 587, in __init__
    annotateException('\nfileName=%r identity=%s'%(fileName,self.identity()))
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\lib\utils.py", line 551, in __init__
    self.fp = open_for_read(fileName,'b')
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\lib\utils.py", line 447, in open_for_read
    raise IOError('Cannot open resource "%s"' % name)
IOError: Cannot open resource ":/icons/icons/top10ranking.png"
fileName=':/icons/icons/top10ranking.png' identity=[ImageReader@0x2e4d130 filename=':/icons/icons/top10ranking.png']

---------------------------
He Jibo
Department of Psychology,
Beckman Institute for Advanced Science and Technology
University of Illinois, Urbana Champaign,
603 East Daniel St.,
Champaign, IL 61820
website: www.hejibo.info


--
来自: python-cn`CPyUG`华蟒用户组(中文Python技术邮件列表)
发言: [hidden email]
退订: [hidden email] (向此发空信即退!)
详情: http://code.google.com/p/cpyug/wiki/PythonCn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
强烈: 建议使用技巧: 如何有效地报告Bug
http://www.chiark.greenend.org.uk/%7Esgtatham/bugs-cn.html
Reply | Threaded
Open this post in threaded view
|

Re: [CPyUG] 将图片写入pdf

hejibo
谢谢, 我试了下面三种方法,都不行。
Story=[]

# add logo in the center

#logo = "logo.png"

#logo = QtGui.QIcon(":/icons/icons/logo.png")

logo = ":/icons/icons/logo.png"

im = Image(logo, 2*inch, 2*inch)

Story.append(im)


---------------------------
He Jibo
Department of Psychology,
Beckman Institute for Advanced Science and Technology
University of Illinois, Urbana Champaign,
603 East Daniel St.,
Champaign, IL 61820
website: www.hejibo.info


2011/10/7 Jimmy Kuu <[hidden email]>
试试:
logo = ":/logo.png"

在 2011年10月8日 上午8:59,He Jibo <[hidden email]>写道:

大家好,

我想将一个图片写入pdf。最主要的地方已经解决了。下面的代码可以将一个logo.png写入pdf。我现在的问题是,有没有办法先把logo.png转化为python代码,然后再写入pdf?
我知道可以用qt designer的pyrcc4命令将图片转化为python代码。可是我试图把这个代码写入pdf中时,却报错,说找不到改文件错误信息请见邮件底部。

烦请牛人指点一下,应该怎么才能把logo.png图片编译成python代码,然后写入pdf呀?谢谢

pyrcc4 -o qrc_resources.py resources.qrc 其中qrc_resources.py为目标文件,resources.qrc为需要编译的资源文件。

# -*- coding: utf-8 -*-

"""

Created on Fri Oct 07 19:44:00 2011

@author: hejibo

[hidden email]

write image to a pdf

"""

from reportlab.lib.enums import TA_JUSTIFY,TA_CENTER

from reportlab.lib.pagesizes import letter

from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Image

from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle

from reportlab.lib.units import inch,mm

from reportlab.graphics.shapes import Drawing

from reportlab.graphics.charts.linecharts import HorizontalLineChart

from reportlab.platypus import *

from reportlab.lib.colors import pink, black, red, blue, green

from reportlab.lib.styles import ParagraphStyle

#the following imports are for Chinese characters.

import reportlab.rl_config

reportlab.rl_config.warnOnMissingFontGlyphs = 0

from reportlab.pdfbase import pdfmetrics

from reportlab.pdfbase.ttfonts import TTFont

from reportlab.pdfgen import canvas

Story=[]

from PySide import QtGui, QtCore

# add logo in the center

logo = "logo.png"

im = Image(logo, 2*inch, 2*inch)

Story.append(im)

doc = SimpleDocTemplate("report.pdf",pagesize=letter,

rightMargin=72,leftMargin=72,

topMargin=72,bottomMargin=18)

doc.build(Story)

print '-_-'



--------------错误信息---------------------------------
Traceback (most recent call last):
  File "D:\workspace\seo\top 10\top10 coding English version\WriteImage.py", line 48, in <module>
    doc.build(Story)
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\doctemplate.py", line 1117, in build
    BaseDocTemplate.build(self,flowables, canvasmaker=canvasmaker)
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\doctemplate.py", line 880, in build
    self.handle_flowable(flowables)
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\doctemplate.py", line 763, in handle_flowable
    if frame.add(f, canv, trySplit=self.allowSplitting):
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\frames.py", line 159, in _add
    w, h = flowable.wrap(aW, h)
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\flowables.py", line 408, in wrap
    return self.drawWidth, self.drawHeight
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\flowables.py", line 402, in __getattr__
    self._setup_inner()
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\flowables.py", line 368, in _setup_inner
    img = self._img
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\flowables.py", line 398, in __getattr__
    self._img = ImageReader(self._file)
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\lib\utils.py", line 587, in __init__
    annotateException('\nfileName=%r identity=%s'%(fileName,self.identity()))
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\lib\utils.py", line 551, in __init__
    self.fp = open_for_read(fileName,'b')
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\lib\utils.py", line 447, in open_for_read
    raise IOError('Cannot open resource "%s"' % name)
IOError: Cannot open resource ":/icons/icons/top10ranking.png"
fileName=':/icons/icons/top10ranking.png' identity=[ImageReader@0x2e4d130 filename=':/icons/icons/top10ranking.png']

---------------------------
He Jibo
Department of Psychology,
Beckman Institute for Advanced Science and Technology
University of Illinois, Urbana Champaign,
603 East Daniel St.,
Champaign, IL 61820
website: www.hejibo.info


--
来自: python-cn`CPyUG`华蟒用户组(中文Python技术邮件列表)
发言: [hidden email]
退订: [hidden email] (向此发空信即退!)
详情: http://code.google.com/p/cpyug/wiki/PythonCn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
强烈: 建议使用技巧: 如何有效地报告Bug
http://www.chiark.greenend.org.uk/%7Esgtatham/bugs-cn.html

--
来自: python-cn`CPyUG`华蟒用户组(中文Python技术邮件列表)
发言: [hidden email]
退订: [hidden email] (向此发空信即退!)
详情: http://code.google.com/p/cpyug/wiki/PythonCn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
强烈: 建议使用技巧: 如何有效地报告Bug
http://www.chiark.greenend.org.uk/%7Esgtatham/bugs-cn.html
Reply | Threaded
Open this post in threaded view
|

Re: [CPyUG] 将图片写入pdf

Jimmy Kuu
我这里有一段可以运行的,你看着改下就可以了

from PyQt4 import QtCore
import Image
import mdi_rc

res = QtCore.QResource(':images/cut.png')
im = Image.fromstring('L', (16, 16), res.data())
print im


在 2011年10月8日 上午10:33,He Jibo <[hidden email]>写道:
谢谢, 我试了下面三种方法,都不行。
Story=[]

# add logo in the center

#logo = "logo.png"

#logo = QtGui.QIcon(":/icons/icons/logo.png")

logo = ":/icons/icons/logo.png"

im = Image(logo, 2*inch, 2*inch)

Story.append(im)


---------------------------
He Jibo
Department of Psychology,
Beckman Institute for Advanced Science and Technology
University of Illinois, Urbana Champaign,
603 East Daniel St.,
Champaign, IL 61820
website: www.hejibo.info


2011/10/7 Jimmy Kuu <[hidden email]>
试试:
logo = ":/logo.png"

在 2011年10月8日 上午8:59,He Jibo <[hidden email]>写道:

大家好,

我想将一个图片写入pdf。最主要的地方已经解决了。下面的代码可以将一个logo.png写入pdf。我现在的问题是,有没有办法先把logo.png转化为python代码,然后再写入pdf?
我知道可以用qt designer的pyrcc4命令将图片转化为python代码。可是我试图把这个代码写入pdf中时,却报错,说找不到改文件错误信息请见邮件底部。

烦请牛人指点一下,应该怎么才能把logo.png图片编译成python代码,然后写入pdf呀?谢谢

pyrcc4 -o qrc_resources.py resources.qrc 其中qrc_resources.py为目标文件,resources.qrc为需要编译的资源文件。

# -*- coding: utf-8 -*-

"""

Created on Fri Oct 07 19:44:00 2011

@author: hejibo

[hidden email]

write image to a pdf

"""

from reportlab.lib.enums import TA_JUSTIFY,TA_CENTER

from reportlab.lib.pagesizes import letter

from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Image

from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle

from reportlab.lib.units import inch,mm

from reportlab.graphics.shapes import Drawing

from reportlab.graphics.charts.linecharts import HorizontalLineChart

from reportlab.platypus import *

from reportlab.lib.colors import pink, black, red, blue, green

from reportlab.lib.styles import ParagraphStyle

#the following imports are for Chinese characters.

import reportlab.rl_config

reportlab.rl_config.warnOnMissingFontGlyphs = 0

from reportlab.pdfbase import pdfmetrics

from reportlab.pdfbase.ttfonts import TTFont

from reportlab.pdfgen import canvas

Story=[]

from PySide import QtGui, QtCore

# add logo in the center

logo = "logo.png"

im = Image(logo, 2*inch, 2*inch)

Story.append(im)

doc = SimpleDocTemplate("report.pdf",pagesize=letter,

rightMargin=72,leftMargin=72,

topMargin=72,bottomMargin=18)

doc.build(Story)

print '-_-'



--------------错误信息---------------------------------
Traceback (most recent call last):
  File "D:\workspace\seo\top 10\top10 coding English version\WriteImage.py", line 48, in <module>
    doc.build(Story)
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\doctemplate.py", line 1117, in build
    BaseDocTemplate.build(self,flowables, canvasmaker=canvasmaker)
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\doctemplate.py", line 880, in build
    self.handle_flowable(flowables)
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\doctemplate.py", line 763, in handle_flowable
    if frame.add(f, canv, trySplit=self.allowSplitting):
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\frames.py", line 159, in _add
    w, h = flowable.wrap(aW, h)
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\flowables.py", line 408, in wrap
    return self.drawWidth, self.drawHeight
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\flowables.py", line 402, in __getattr__
    self._setup_inner()
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\flowables.py", line 368, in _setup_inner
    img = self._img
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\flowables.py", line 398, in __getattr__
    self._img = ImageReader(self._file)
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\lib\utils.py", line 587, in __init__
    annotateException('\nfileName=%r identity=%s'%(fileName,self.identity()))
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\lib\utils.py", line 551, in __init__
    self.fp = open_for_read(fileName,'b')
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\lib\utils.py", line 447, in open_for_read
    raise IOError('Cannot open resource "%s"' % name)
IOError: Cannot open resource ":/icons/icons/top10ranking.png"
fileName=':/icons/icons/top10ranking.png' identity=[ImageReader@0x2e4d130 filename=':/icons/icons/top10ranking.png']

---------------------------
He Jibo
Department of Psychology,
Beckman Institute for Advanced Science and Technology
University of Illinois, Urbana Champaign,
603 East Daniel St.,
Champaign, IL 61820
website: www.hejibo.info

--
来自: python-cn`CPyUG`华蟒用户组(中文Python技术邮件列表)
发言: [hidden email]
退订: [hidden email] (向此发空信即退!)
详情: http://code.google.com/p/cpyug/wiki/PythonCn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
强烈: 建议使用技巧: 如何有效地报告Bug
http://www.chiark.greenend.org.uk/%7Esgtatham/bugs-cn.html
Reply | Threaded
Open this post in threaded view
|

Re: [CPyUG] 将图片写入pdf

hejibo
谢谢。 图片似乎是读成功了,不过不能生成pdf文件。 错误代码如下:
Traceback (most recent call last):
  File "D:\workspace\seo\top 10\top10 coding English version\WriteImage.py", line 53, in <module>
    doc.build(Story)
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\doctemplate.py", line 1117, in build
    BaseDocTemplate.build(self,flowables, canvasmaker=canvasmaker)
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\doctemplate.py", line 880, in build
    self.handle_flowable(flowables)
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\doctemplate.py", line 744, in handle_flowable
    self.handle_keepWithNext(flowables)
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\doctemplate.py", line 711, in handle_keepWithNext
    while i<n and flowables[i].getKeepWithNext(): i += 1
  File "C:\Python27\lib\site-packages\pil-1.1.7-py2.7-win32.egg\Image.py", line 512, in __getattr__
    raise AttributeError(name)
AttributeError: getKeepWithNext

下面是我的代码:
# -*- coding: utf-8 -*-

"""

Created on Fri Oct 07 19:44:00 2011

@author: hejibo

[hidden email]

write image to a pdf

"""

from reportlab.lib.enums import TA_JUSTIFY,TA_CENTER

from reportlab.lib.pagesizes import letter

from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Image

from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle

from reportlab.lib.units import inch,mm

from reportlab.graphics.shapes import Drawing

from reportlab.graphics.charts.linecharts import HorizontalLineChart

from reportlab.platypus import *

from reportlab.lib.colors import pink, black, red, blue, green

from reportlab.lib.styles import ParagraphStyle

#the following imports are for Chinese characters.

import reportlab.rl_config

reportlab.rl_config.warnOnMissingFontGlyphs = 0

from reportlab.pdfbase import pdfmetrics

from reportlab.pdfbase.ttfonts import TTFont

from reportlab.pdfgen import canvas

import resources_rc

from PySide import QtGui, QtCore

import Image

Story=[]

# add logo in the center

#logo = "logo.png"

#logo = QtGui.QIcon(":/icons/icons/top10ranking.png")

#logo = ":/icons/icons/top10ranking.png"

res = QtCore.QResource(":/icons/icons/ViewOutput.png")

im = Image.fromstring('L', (49, 49), res.data())

#im = Image(res.data(), 2*inch, 2*inch)

Story.append(im)

doc = SimpleDocTemplate("report.pdf",pagesize=letter,

rightMargin=72,leftMargin=72,

topMargin=72,bottomMargin=18)

doc.build(Story)

print '-_-'



---------------------------
He Jibo
Department of Psychology,
Beckman Institute for Advanced Science and Technology
University of Illinois, Urbana Champaign,
603 East Daniel St.,
Champaign, IL 61820
website: www.hejibo.info


2011/10/7 Jimmy Kuu <[hidden email]>
我这里有一段可以运行的,你看着改下就可以了

from PyQt4 import QtCore
import Image
import mdi_rc

res = QtCore.QResource(':images/cut.png')
im = Image.fromstring('L', (16, 16), res.data())
print im


在 2011年10月8日 上午10:33,He Jibo <[hidden email]>写道:

谢谢, 我试了下面三种方法,都不行。
Story=[]

# add logo in the center

#logo = "logo.png"

#logo = QtGui.QIcon(":/icons/icons/logo.png")

logo = ":/icons/icons/logo.png"

im = Image(logo, 2*inch, 2*inch)

Story.append(im)


---------------------------
He Jibo
Department of Psychology,
Beckman Institute for Advanced Science and Technology
University of Illinois, Urbana Champaign,
603 East Daniel St.,
Champaign, IL 61820
website: www.hejibo.info


2011/10/7 Jimmy Kuu <[hidden email]>
试试:
logo = ":/logo.png"

在 2011年10月8日 上午8:59,He Jibo <[hidden email]>写道:

大家好,

我想将一个图片写入pdf。最主要的地方已经解决了。下面的代码可以将一个logo.png写入pdf。我现在的问题是,有没有办法先把logo.png转化为python代码,然后再写入pdf?
我知道可以用qt designer的pyrcc4命令将图片转化为python代码。可是我试图把这个代码写入pdf中时,却报错,说找不到改文件错误信息请见邮件底部。

烦请牛人指点一下,应该怎么才能把logo.png图片编译成python代码,然后写入pdf呀?谢谢

pyrcc4 -o qrc_resources.py resources.qrc 其中qrc_resources.py为目标文件,resources.qrc为需要编译的资源文件。

# -*- coding: utf-8 -*-

"""

Created on Fri Oct 07 19:44:00 2011

@author: hejibo

[hidden email]

write image to a pdf

"""

from reportlab.lib.enums import TA_JUSTIFY,TA_CENTER

from reportlab.lib.pagesizes import letter

from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Image

from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle

from reportlab.lib.units import inch,mm

from reportlab.graphics.shapes import Drawing

from reportlab.graphics.charts.linecharts import HorizontalLineChart

from reportlab.platypus import *

from reportlab.lib.colors import pink, black, red, blue, green

from reportlab.lib.styles import ParagraphStyle

#the following imports are for Chinese characters.

import reportlab.rl_config

reportlab.rl_config.warnOnMissingFontGlyphs = 0

from reportlab.pdfbase import pdfmetrics

from reportlab.pdfbase.ttfonts import TTFont

from reportlab.pdfgen import canvas

Story=[]

from PySide import QtGui, QtCore

# add logo in the center

logo = "logo.png"

im = Image(logo, 2*inch, 2*inch)

Story.append(im)

doc = SimpleDocTemplate("report.pdf",pagesize=letter,

rightMargin=72,leftMargin=72,

topMargin=72,bottomMargin=18)

doc.build(Story)

print '-_-'



--------------错误信息---------------------------------
Traceback (most recent call last):
  File "D:\workspace\seo\top 10\top10 coding English version\WriteImage.py", line 48, in <module>
    doc.build(Story)
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\doctemplate.py", line 1117, in build
    BaseDocTemplate.build(self,flowables, canvasmaker=canvasmaker)
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\doctemplate.py", line 880, in build
    self.handle_flowable(flowables)
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\doctemplate.py", line 763, in handle_flowable
    if frame.add(f, canv, trySplit=self.allowSplitting):
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\frames.py", line 159, in _add
    w, h = flowable.wrap(aW, h)
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\flowables.py", line 408, in wrap
    return self.drawWidth, self.drawHeight
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\flowables.py", line 402, in __getattr__
    self._setup_inner()
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\flowables.py", line 368, in _setup_inner
    img = self._img
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\flowables.py", line 398, in __getattr__
    self._img = ImageReader(self._file)
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\lib\utils.py", line 587, in __init__
    annotateException('\nfileName=%r identity=%s'%(fileName,self.identity()))
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\lib\utils.py", line 551, in __init__
    self.fp = open_for_read(fileName,'b')
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\lib\utils.py", line 447, in open_for_read
    raise IOError('Cannot open resource "%s"' % name)
IOError: Cannot open resource ":/icons/icons/top10ranking.png"
fileName=':/icons/icons/top10ranking.png' identity=[ImageReader@0x2e4d130 filename=':/icons/icons/top10ranking.png']

---------------------------
He Jibo
Department of Psychology,
Beckman Institute for Advanced Science and Technology
University of Illinois, Urbana Champaign,
603 East Daniel St.,
Champaign, IL 61820
website: www.hejibo.info

--
来自: python-cn`CPyUG`华蟒用户组(中文Python技术邮件列表)
发言: [hidden email]
退订: [hidden email] (向此发空信即退!)
详情: http://code.google.com/p/cpyug/wiki/PythonCn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
强烈: 建议使用技巧: 如何有效地报告Bug
http://www.chiark.greenend.org.uk/%7Esgtatham/bugs-cn.html

--
来自: python-cn`CPyUG`华蟒用户组(中文Python技术邮件列表)
发言: [hidden email]
退订: [hidden email] (向此发空信即退!)
详情: http://code.google.com/p/cpyug/wiki/PythonCn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
强烈: 建议使用技巧: 如何有效地报告Bug
http://www.chiark.greenend.org.uk/%7Esgtatham/bugs-cn.html
Reply | Threaded
Open this post in threaded view
|

Re: [CPyUG] 将图片写入pdf

hejibo
我觉得错误的原因在(49,49)这个参数上。我通过pyrcc4转化成的resources_rc.py文件内的图片尺寸有变。原始尺寸是50*50,转化后略小于50*50,所以我写(49,49)和(50,50)这两个参数都会报错。
res = QtCore.QResource(":/icons/icons/ViewOutput.png")

print res.size()

im = Image.fromstring('L', (49, 49), res.data())



---------------------------
He Jibo
Department of Psychology,
Beckman Institute for Advanced Science and Technology
University of Illinois, Urbana Champaign,
603 East Daniel St.,
Champaign, IL 61820
website: www.hejibo.info


2011/10/8 He Jibo <[hidden email]>
谢谢。 图片似乎是读成功了,不过不能生成pdf文件。 错误代码如下:

Traceback (most recent call last):
  File "D:\workspace\seo\top 10\top10 coding English version\WriteImage.py", line 53, in <module>

    doc.build(Story)
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\doctemplate.py", line 1117, in build
    BaseDocTemplate.build(self,flowables, canvasmaker=canvasmaker)
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\doctemplate.py", line 880, in build
    self.handle_flowable(flowables)
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\doctemplate.py", line 744, in handle_flowable
    self.handle_keepWithNext(flowables)
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\doctemplate.py", line 711, in handle_keepWithNext
    while i<n and flowables[i].getKeepWithNext(): i += 1
  File "C:\Python27\lib\site-packages\pil-1.1.7-py2.7-win32.egg\Image.py", line 512, in __getattr__
    raise AttributeError(name)
AttributeError: getKeepWithNext

下面是我的代码:

# -*- coding: utf-8 -*-

"""

Created on Fri Oct 07 19:44:00 2011

@author: hejibo

[hidden email]

write image to a pdf

"""

from reportlab.lib.enums import TA_JUSTIFY,TA_CENTER

from reportlab.lib.pagesizes import letter

from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Image

from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle

from reportlab.lib.units import inch,mm

from reportlab.graphics.shapes import Drawing

from reportlab.graphics.charts.linecharts import HorizontalLineChart

from reportlab.platypus import *

from reportlab.lib.colors import pink, black, red, blue, green

from reportlab.lib.styles import ParagraphStyle

#the following imports are for Chinese characters.

import reportlab.rl_config

reportlab.rl_config.warnOnMissingFontGlyphs = 0

from reportlab.pdfbase import pdfmetrics

from reportlab.pdfbase.ttfonts import TTFont

from reportlab.pdfgen import canvas

import resources_rc

from PySide import QtGui, QtCore

import Image

Story=[]

# add logo in the center

#logo = "logo.png"

#logo = QtGui.QIcon(":/icons/icons/top10ranking.png")

#logo = ":/icons/icons/top10ranking.png"

res = QtCore.QResource(":/icons/icons/ViewOutput.png")

im = Image.fromstring('L', (49, 49), res.data())

#im = Image(res.data(), 2*inch, 2*inch)

Story.append(im)

doc = SimpleDocTemplate("report.pdf",pagesize=letter,

rightMargin=72,leftMargin=72,

topMargin=72,bottomMargin=18)

doc.build(Story)

print '-_-'



---------------------------
He Jibo
Department of Psychology,
Beckman Institute for Advanced Science and Technology
University of Illinois, Urbana Champaign,
603 East Daniel St.,
Champaign, IL 61820
website: www.hejibo.info


2011/10/7 Jimmy Kuu <[hidden email]>
我这里有一段可以运行的,你看着改下就可以了

from PyQt4 import QtCore
import Image
import mdi_rc

res = QtCore.QResource(':images/cut.png')
im = Image.fromstring('L', (16, 16), res.data())
print im


在 2011年10月8日 上午10:33,He Jibo <[hidden email]>写道:

谢谢, 我试了下面三种方法,都不行。
Story=[]

# add logo in the center

#logo = "logo.png"

#logo = QtGui.QIcon(":/icons/icons/logo.png")

logo = ":/icons/icons/logo.png"

im = Image(logo, 2*inch, 2*inch)

Story.append(im)


---------------------------
He Jibo
Department of Psychology,
Beckman Institute for Advanced Science and Technology
University of Illinois, Urbana Champaign,
603 East Daniel St.,
Champaign, IL 61820
website: www.hejibo.info


2011/10/7 Jimmy Kuu <[hidden email]>
试试:
logo = ":/logo.png"

在 2011年10月8日 上午8:59,He Jibo <[hidden email]>写道:

大家好,

我想将一个图片写入pdf。最主要的地方已经解决了。下面的代码可以将一个logo.png写入pdf。我现在的问题是,有没有办法先把logo.png转化为python代码,然后再写入pdf?
我知道可以用qt designer的pyrcc4命令将图片转化为python代码。可是我试图把这个代码写入pdf中时,却报错,说找不到改文件错误信息请见邮件底部。

烦请牛人指点一下,应该怎么才能把logo.png图片编译成python代码,然后写入pdf呀?谢谢

pyrcc4 -o qrc_resources.py resources.qrc 其中qrc_resources.py为目标文件,resources.qrc为需要编译的资源文件。

# -*- coding: utf-8 -*-

"""

Created on Fri Oct 07 19:44:00 2011

@author: hejibo

[hidden email]

write image to a pdf

"""

from reportlab.lib.enums import TA_JUSTIFY,TA_CENTER

from reportlab.lib.pagesizes import letter

from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Image

from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle

from reportlab.lib.units import inch,mm

from reportlab.graphics.shapes import Drawing

from reportlab.graphics.charts.linecharts import HorizontalLineChart

from reportlab.platypus import *

from reportlab.lib.colors import pink, black, red, blue, green

from reportlab.lib.styles import ParagraphStyle

#the following imports are for Chinese characters.

import reportlab.rl_config

reportlab.rl_config.warnOnMissingFontGlyphs = 0

from reportlab.pdfbase import pdfmetrics

from reportlab.pdfbase.ttfonts import TTFont

from reportlab.pdfgen import canvas

Story=[]

from PySide import QtGui, QtCore

# add logo in the center

logo = "logo.png"

im = Image(logo, 2*inch, 2*inch)

Story.append(im)

doc = SimpleDocTemplate("report.pdf",pagesize=letter,

rightMargin=72,leftMargin=72,

topMargin=72,bottomMargin=18)

doc.build(Story)

print '-_-'



--------------错误信息---------------------------------
Traceback (most recent call last):
  File "D:\workspace\seo\top 10\top10 coding English version\WriteImage.py", line 48, in <module>
    doc.build(Story)
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\doctemplate.py", line 1117, in build
    BaseDocTemplate.build(self,flowables, canvasmaker=canvasmaker)
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\doctemplate.py", line 880, in build
    self.handle_flowable(flowables)
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\doctemplate.py", line 763, in handle_flowable
    if frame.add(f, canv, trySplit=self.allowSplitting):
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\frames.py", line 159, in _add
    w, h = flowable.wrap(aW, h)
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\flowables.py", line 408, in wrap
    return self.drawWidth, self.drawHeight
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\flowables.py", line 402, in __getattr__
    self._setup_inner()
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\flowables.py", line 368, in _setup_inner
    img = self._img
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\flowables.py", line 398, in __getattr__
    self._img = ImageReader(self._file)
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\lib\utils.py", line 587, in __init__
    annotateException('\nfileName=%r identity=%s'%(fileName,self.identity()))
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\lib\utils.py", line 551, in __init__
    self.fp = open_for_read(fileName,'b')
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\lib\utils.py", line 447, in open_for_read
    raise IOError('Cannot open resource "%s"' % name)
IOError: Cannot open resource ":/icons/icons/top10ranking.png"
fileName=':/icons/icons/top10ranking.png' identity=[ImageReader@0x2e4d130 filename=':/icons/icons/top10ranking.png']

---------------------------
He Jibo
Department of Psychology,
Beckman Institute for Advanced Science and Technology
University of Illinois, Urbana Champaign,
603 East Daniel St.,
Champaign, IL 61820
website: www.hejibo.info

--
来自: python-cn`CPyUG`华蟒用户组(中文Python技术邮件列表)
发言: [hidden email]
退订: [hidden email] (向此发空信即退!)
详情: http://code.google.com/p/cpyug/wiki/PythonCn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
强烈: 建议使用技巧: 如何有效地报告Bug
http://www.chiark.greenend.org.uk/%7Esgtatham/bugs-cn.html


--
来自: python-cn`CPyUG`华蟒用户组(中文Python技术邮件列表)
发言: [hidden email]
退订: [hidden email] (向此发空信即退!)
详情: http://code.google.com/p/cpyug/wiki/PythonCn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
强烈: 建议使用技巧: 如何有效地报告Bug
http://www.chiark.greenend.org.uk/%7Esgtatham/bugs-cn.html
Reply | Threaded
Open this post in threaded view
|

Re: [CPyUG] 将图片写入pdf

hejibo
In reply to this post by Jimmy Kuu
我想把图片转化为二进制文件,然后写入pdf,和http://leo108.com/pid-938.asp这个wx方案差不多。 我在下面实现了PySide方法。已经把图片转化为二进制文件,并且可以在客户端显示了。 唯一的问题是我不知道怎么写入pdf中
# -*- coding: utf-8 -*-

"""

Created on Sat Oct 08 08:49:42 2011

@author: hejibo

http://stackoverflow.com/questions/1713306/how-to-load-a-bitmap-on-a-window-on-pyqt

"""

import sys

from PySide import QtGui

from PIL import Image

import base64

f=open(r'logo.png','rb') #二进制方式打开图文件

iconData=base64.b64encode(f.read()) #读取文件内容,转换为base64编码

f.close()

#print iconData

import base64

import wx

import cStringIO

#image_data = get_image_data_from_blob()

#qimg = QtGui.QImage.fromData(iconData)

#pixmap = QtGui.QPixmap.fromImage(qimg)

#http://leo108.com/pid-938.asp

def GetMondrianData(iconData):

#iconData = "图片BASE64字符串"

iconData = base64.b64decode(iconData)

return iconData

def get_pil_image(w, h):

clr = chr(0)+chr(255)+chr(0)

print clr

im = Image.fromstring("RGB", (w,h), clr*(w*h))

print clr*(w*h)

return im

def pil2qpixmap(pil_image):

w, h = pil_image.size

data = pil_image.tostring("raw", "BGRX")

qimage = QtGui.QImage(data, w, h, QtGui.QImage.Format_RGB32)

qpixmap = QtGui.QPixmap(w,h)

pix = QtGui.QPixmap.fromImage(qimage)

f=open(r'logo.png','rb') #二进制方式打开图文件

iconData=base64.b64encode(f.read()) #读取文件内容,转换为base64编码

f.close()

qimg = QtGui.QImage.fromData(GetMondrianData(iconData))

pixmap = QtGui.QPixmap.fromImage(qimg)

return pixmap

class ImageLabel(QtGui.QLabel):

def __init__(self, parent=None):

QtGui.QLabel.__init__(self, parent)

self.setGeometry(300, 300, 250, 150)

self.setWindowTitle('Window')

self.pix = pil2qpixmap(get_pil_image(50,50))

self.setPixmap(self.pix)

app = QtGui.QApplication(sys.argv)

ImageLabel = ImageLabel()

ImageLabel.show()

sys.exit(app.exec_())




---------------------------
He Jibo
Department of Psychology,
Beckman Institute for Advanced Science and Technology
University of Illinois, Urbana Champaign,
603 East Daniel St.,
Champaign, IL 61820
website: www.hejibo.info


2011/10/7 Jimmy Kuu <[hidden email]>
我这里有一段可以运行的,你看着改下就可以了

from PyQt4 import QtCore
import Image
import mdi_rc

res = QtCore.QResource(':images/cut.png')
im = Image.fromstring('L', (16, 16), res.data())
print im


在 2011年10月8日 上午10:33,He Jibo <[hidden email]>写道:

谢谢, 我试了下面三种方法,都不行。
Story=[]

# add logo in the center

#logo = "logo.png"

#logo = QtGui.QIcon(":/icons/icons/logo.png")

logo = ":/icons/icons/logo.png"

im = Image(logo, 2*inch, 2*inch)

Story.append(im)


---------------------------
He Jibo
Department of Psychology,
Beckman Institute for Advanced Science and Technology
University of Illinois, Urbana Champaign,
603 East Daniel St.,
Champaign, IL 61820
website: www.hejibo.info


2011/10/7 Jimmy Kuu <[hidden email]>
试试:
logo = ":/logo.png"

在 2011年10月8日 上午8:59,He Jibo <[hidden email]>写道:

大家好,

我想将一个图片写入pdf。最主要的地方已经解决了。下面的代码可以将一个logo.png写入pdf。我现在的问题是,有没有办法先把logo.png转化为python代码,然后再写入pdf?
我知道可以用qt designer的pyrcc4命令将图片转化为python代码。可是我试图把这个代码写入pdf中时,却报错,说找不到改文件错误信息请见邮件底部。

烦请牛人指点一下,应该怎么才能把logo.png图片编译成python代码,然后写入pdf呀?谢谢

pyrcc4 -o qrc_resources.py resources.qrc 其中qrc_resources.py为目标文件,resources.qrc为需要编译的资源文件。

# -*- coding: utf-8 -*-

"""

Created on Fri Oct 07 19:44:00 2011

@author: hejibo

[hidden email]

write image to a pdf

"""

from reportlab.lib.enums import TA_JUSTIFY,TA_CENTER

from reportlab.lib.pagesizes import letter

from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Image

from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle

from reportlab.lib.units import inch,mm

from reportlab.graphics.shapes import Drawing

from reportlab.graphics.charts.linecharts import HorizontalLineChart

from reportlab.platypus import *

from reportlab.lib.colors import pink, black, red, blue, green

from reportlab.lib.styles import ParagraphStyle

#the following imports are for Chinese characters.

import reportlab.rl_config

reportlab.rl_config.warnOnMissingFontGlyphs = 0

from reportlab.pdfbase import pdfmetrics

from reportlab.pdfbase.ttfonts import TTFont

from reportlab.pdfgen import canvas

Story=[]

from PySide import QtGui, QtCore

# add logo in the center

logo = "logo.png"

im = Image(logo, 2*inch, 2*inch)

Story.append(im)

doc = SimpleDocTemplate("report.pdf",pagesize=letter,

rightMargin=72,leftMargin=72,

topMargin=72,bottomMargin=18)

doc.build(Story)

print '-_-'



--------------错误信息---------------------------------
Traceback (most recent call last):
  File "D:\workspace\seo\top 10\top10 coding English version\WriteImage.py", line 48, in <module>
    doc.build(Story)
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\doctemplate.py", line 1117, in build
    BaseDocTemplate.build(self,flowables, canvasmaker=canvasmaker)
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\doctemplate.py", line 880, in build
    self.handle_flowable(flowables)
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\doctemplate.py", line 763, in handle_flowable
    if frame.add(f, canv, trySplit=self.allowSplitting):
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\frames.py", line 159, in _add
    w, h = flowable.wrap(aW, h)
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\flowables.py", line 408, in wrap
    return self.drawWidth, self.drawHeight
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\flowables.py", line 402, in __getattr__
    self._setup_inner()
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\flowables.py", line 368, in _setup_inner
    img = self._img
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\flowables.py", line 398, in __getattr__
    self._img = ImageReader(self._file)
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\lib\utils.py", line 587, in __init__
    annotateException('\nfileName=%r identity=%s'%(fileName,self.identity()))
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\lib\utils.py", line 551, in __init__
    self.fp = open_for_read(fileName,'b')
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\lib\utils.py", line 447, in open_for_read
    raise IOError('Cannot open resource "%s"' % name)
IOError: Cannot open resource ":/icons/icons/top10ranking.png"
fileName=':/icons/icons/top10ranking.png' identity=[ImageReader@0x2e4d130 filename=':/icons/icons/top10ranking.png']

---------------------------
He Jibo
Department of Psychology,
Beckman Institute for Advanced Science and Technology
University of Illinois, Urbana Champaign,
603 East Daniel St.,
Champaign, IL 61820
website: www.hejibo.info

--
来自: python-cn`CPyUG`华蟒用户组(中文Python技术邮件列表)
发言: [hidden email]
退订: [hidden email] (向此发空信即退!)
详情: http://code.google.com/p/cpyug/wiki/PythonCn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
强烈: 建议使用技巧: 如何有效地报告Bug
http://www.chiark.greenend.org.uk/%7Esgtatham/bugs-cn.html

--
来自: python-cn`CPyUG`华蟒用户组(中文Python技术邮件列表)
发言: [hidden email]
退订: [hidden email] (向此发空信即退!)
详情: http://code.google.com/p/cpyug/wiki/PythonCn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
强烈: 建议使用技巧: 如何有效地报告Bug
http://www.chiark.greenend.org.uk/%7Esgtatham/bugs-cn.html
Reply | Threaded
Open this post in threaded view
|

Re: [CPyUG] 将图片写入pdf

hejibo
In reply to this post by Jimmy Kuu
搞定!我先把图片encode成base64,要用这张图片的时候,写入临时文件,然后把这个临时文件写入pdf中。
代码如下:希望对有相同需求的朋友有用。

# -*- coding: utf-8 -*-

"""

Created on Fri Oct 07 19:44:00 2011

@author: hejibo

[hidden email]

write image to a pdf

http://stackoverflow.com/questions/1300908/load-blob-image-data-into-qpixmap

http://firehuman.blog.163.com/blog/static/57331120105260736902/

http://leo108.com/pid-938.asp

"""

from reportlab.lib.enums import TA_JUSTIFY,TA_CENTER

from reportlab.lib.pagesizes import letter

from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Image

from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle

from reportlab.lib.units import inch,mm

from reportlab.graphics.shapes import Drawing

from reportlab.graphics.charts.linecharts import HorizontalLineChart

from reportlab.platypus import *

from reportlab.lib.colors import pink, black, red, blue, green

from reportlab.lib.styles import ParagraphStyle

#the following imports are for Chinese characters.

import reportlab.rl_config

reportlab.rl_config.warnOnMissingFontGlyphs = 0

from reportlab.pdfbase import pdfmetrics

from reportlab.pdfbase.ttfonts import TTFont

from reportlab.pdfgen import canvas

import base64

import os

import tempfile

#stores logo file in base64 code

icondata ='''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'''

png_recovered = base64.decodestring(icondata)

(fd, fname) = tempfile.mkstemp()

#print fname

f = os.fdopen(fd, "w+b")

f.write(png_recovered)

f.close()

Story=[]

#im = Image.fromstring('L', (280, 280), icondata)

logo=fname

im = Image(logo, 4*inch, 2*inch)

Story.append(im)

doc = SimpleDocTemplate("22.pdf",pagesize=letter,

rightMargin=72,leftMargin=72,

topMargin=72,bottomMargin=18)

doc.build(Story)

print '-_-'


---------------------------
He Jibo
Department of Psychology,
Beckman Institute for Advanced Science and Technology
University of Illinois, Urbana Champaign,
603 East Daniel St.,
Champaign, IL 61820
website: www.hejibo.info


2011/10/7 Jimmy Kuu <[hidden email]>
我这里有一段可以运行的,你看着改下就可以了

from PyQt4 import QtCore
import Image
import mdi_rc

res = QtCore.QResource(':images/cut.png')
im = Image.fromstring('L', (16, 16), res.data())
print im


在 2011年10月8日 上午10:33,He Jibo <[hidden email]>写道:

谢谢, 我试了下面三种方法,都不行。
Story=[]

# add logo in the center

#logo = "logo.png"

#logo = QtGui.QIcon(":/icons/icons/logo.png")

logo = ":/icons/icons/logo.png"

im = Image(logo, 2*inch, 2*inch)

Story.append(im)


---------------------------
He Jibo
Department of Psychology,
Beckman Institute for Advanced Science and Technology
University of Illinois, Urbana Champaign,
603 East Daniel St.,
Champaign, IL 61820
website: www.hejibo.info


2011/10/7 Jimmy Kuu <[hidden email]>
试试:
logo = ":/logo.png"

在 2011年10月8日 上午8:59,He Jibo <[hidden email]>写道:

大家好,

我想将一个图片写入pdf。最主要的地方已经解决了。下面的代码可以将一个logo.png写入pdf。我现在的问题是,有没有办法先把logo.png转化为python代码,然后再写入pdf?
我知道可以用qt designer的pyrcc4命令将图片转化为python代码。可是我试图把这个代码写入pdf中时,却报错,说找不到改文件错误信息请见邮件底部。

烦请牛人指点一下,应该怎么才能把logo.png图片编译成python代码,然后写入pdf呀?谢谢

pyrcc4 -o qrc_resources.py resources.qrc 其中qrc_resources.py为目标文件,resources.qrc为需要编译的资源文件。

# -*- coding: utf-8 -*-

"""

Created on Fri Oct 07 19:44:00 2011

@author: hejibo

[hidden email]

write image to a pdf

"""

from reportlab.lib.enums import TA_JUSTIFY,TA_CENTER

from reportlab.lib.pagesizes import letter

from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Image

from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle

from reportlab.lib.units import inch,mm

from reportlab.graphics.shapes import Drawing

from reportlab.graphics.charts.linecharts import HorizontalLineChart

from reportlab.platypus import *

from reportlab.lib.colors import pink, black, red, blue, green

from reportlab.lib.styles import ParagraphStyle

#the following imports are for Chinese characters.

import reportlab.rl_config

reportlab.rl_config.warnOnMissingFontGlyphs = 0

from reportlab.pdfbase import pdfmetrics

from reportlab.pdfbase.ttfonts import TTFont

from reportlab.pdfgen import canvas

Story=[]

from PySide import QtGui, QtCore

# add logo in the center

logo = "logo.png"

im = Image(logo, 2*inch, 2*inch)

Story.append(im)

doc = SimpleDocTemplate("report.pdf",pagesize=letter,

rightMargin=72,leftMargin=72,

topMargin=72,bottomMargin=18)

doc.build(Story)

print '-_-'



--------------错误信息---------------------------------
Traceback (most recent call last):
  File "D:\workspace\seo\top 10\top10 coding English version\WriteImage.py", line 48, in <module>
    doc.build(Story)
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\doctemplate.py", line 1117, in build
    BaseDocTemplate.build(self,flowables, canvasmaker=canvasmaker)
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\doctemplate.py", line 880, in build
    self.handle_flowable(flowables)
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\doctemplate.py", line 763, in handle_flowable
    if frame.add(f, canv, trySplit=self.allowSplitting):
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\frames.py", line 159, in _add
    w, h = flowable.wrap(aW, h)
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\flowables.py", line 408, in wrap
    return self.drawWidth, self.drawHeight
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\flowables.py", line 402, in __getattr__
    self._setup_inner()
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\flowables.py", line 368, in _setup_inner
    img = self._img
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\flowables.py", line 398, in __getattr__
    self._img = ImageReader(self._file)
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\lib\utils.py", line 587, in __init__
    annotateException('\nfileName=%r identity=%s'%(fileName,self.identity()))
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\lib\utils.py", line 551, in __init__
    self.fp = open_for_read(fileName,'b')
  File "C:\Python27\lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\lib\utils.py", line 447, in open_for_read
    raise IOError('Cannot open resource "%s"' % name)
IOError: Cannot open resource ":/icons/icons/top10ranking.png"
fileName=':/icons/icons/top10ranking.png' identity=[ImageReader@0x2e4d130 filename=':/icons/icons/top10ranking.png']

---------------------------
He Jibo
Department of Psychology,
Beckman Institute for Advanced Science and Technology
University of Illinois, Urbana Champaign,
603 East Daniel St.,
Champaign, IL 61820
website: www.hejibo.info

--
来自: python-cn`CPyUG`华蟒用户组(中文Python技术邮件列表)
发言: [hidden email]
退订: [hidden email] (向此发空信即退!)
详情: http://code.google.com/p/cpyug/wiki/PythonCn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
强烈: 建议使用技巧: 如何有效地报告Bug
http://www.chiark.greenend.org.uk/%7Esgtatham/bugs-cn.html

--
来自: python-cn`CPyUG`华蟒用户组(中文Python技术邮件列表)
发言: [hidden email]
退订: [hidden email] (向此发空信即退!)
详情: http://code.google.com/p/cpyug/wiki/PythonCn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
强烈: 建议使用技巧: 如何有效地报告Bug
http://www.chiark.greenend.org.uk/%7Esgtatham/bugs-cn.html
Reply | Threaded
Open this post in threaded view
|

Re: [CPyUG] 将图片写入pdf

Ryan Feng
实在太乱了,拜托下次删点没必要的代码,或者发链接...

On Oct 8, 2011, at 11:28 AM, He Jibo wrote:

> 搞定!我先把图片encode成base64,要用这张图片的时候,写入临时文件,然后把这个临时文件写入pdf中。
> 代码如下:希望对有相同需求的朋友有用。

--
来自: python-cn`CPyUG`华蟒用户组(中文Python技术邮件列表)
发言: [hidden email]
退订: [hidden email] (向此发空信即退!)
详情: http://code.google.com/p/cpyug/wiki/PythonCn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
强烈: 建议使用技巧: 如何有效地报告Bug
        http://www.chiark.greenend.org.uk/%7Esgtatham/bugs-cn.html
Reply | Threaded
Open this post in threaded view
|

Re: [CPyUG] 将图片写入pdf

连高欣
貌似一般pdf或者html里处理图片的方法都是先坐成base64哈

在 2011年10月8日 下午11:41,Ryan Feng <[hidden email]>写道:
实在太乱了,拜托下次删点没必要的代码,或者发链接...

On Oct 8, 2011, at 11:28 AM, He Jibo wrote:

> 搞定!我先把图片encode成base64,要用这张图片的时候,写入临时文件,然后把这个临时文件写入pdf中。
> 代码如下:希望对有相同需求的朋友有用。

--
来自: python-cn`CPyUG`华蟒用户组(中文Python技术邮件列表)
发言: [hidden email]
退订: [hidden email] (向此发空信即退!)
详情: http://code.google.com/p/cpyug/wiki/PythonCn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
强烈: 建议使用技巧: 如何有效地报告Bug
       http://www.chiark.greenend.org.uk/%7Esgtatham/bugs-cn.html



--
关注和奉献Tianjin Linux User Group的建设,Linux爱好者,Python初学者,开源拥护者,求交流求指导

天津Linux交流 qq群104029520 73809331
twitter:@freetstar

--
来自: python-cn`CPyUG`华蟒用户组(中文Python技术邮件列表)
发言: [hidden email]
退订: [hidden email] (向此发空信即退!)
详情: http://code.google.com/p/cpyug/wiki/PythonCn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
强烈: 建议使用技巧: 如何有效地报告Bug
http://www.chiark.greenend.org.uk/%7Esgtatham/bugs-cn.html