小编B8v*_*ede的帖子

纯Python解决方案将XHTML转换为PDF

我正在使用纯Python解决方案(用于GAE)将网页转换为pdf.

我看了一下reportlab,但文档侧重于从头开始生成pdf,而不是从HTML转换.

您有什么推荐的吗?- 比萨

编辑:我的用例是我有一个HTML报告,我想在PDF中提供.我将对此报告结构进行更新,因此我不想维护单独的PDF版本,但(希望)会自动转换.
另外,因为我生成报告HTML,我可以确保它是格式良好的XHTML,以使PDF转换更容易.

python pdf google-app-engine

16
推荐指数
1
解决办法
4923
查看次数

安装:Reportlab:"ImportError:没有名为reportlab.lib的模块"

我安装了reportlab,via

pip install reportlab
Run Code Online (Sandbox Code Playgroud)

(也尝试通过

easy_install reportlab
Run Code Online (Sandbox Code Playgroud)

)

..但是我得到了上面的错误.之前还有其他RL导入 - 它是它所反对的.lib.我曾经让RL工作得很好,但是IT重新构建了我的计算机,我正在尝试重建它.脚本工作正常,但我认为RL安装有点时髦.

Reportlab:3.3.0

python installation pip reportlab

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

在Python GTK3中设置Entry Background Color并设置回默认值的最佳方法

为一个条目设置背景颜色并将其设置回默认颜色的最佳方法是什么?

我的脚本现在正在运行,但我确信这不是最好的方法.
我还有两个问题:

  1. 如果我插入一个文本,不包含字符串"red"或"green"并选择此文本,我无法看到我的选择,因为它全是白色的.
  2. 我认为有更好的方式,然后我插入self.entry_default_background_color_strCSS文本的方式.

import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
from gi.repository import Gdk

class Window(Gtk.Window):

    def __init__(self):

        self.screen = Gdk.Screen.get_default()
        self.gtk_provider = Gtk.CssProvider()
        self.gtk_context = Gtk.StyleContext()
        self.gtk_context.add_provider_for_screen(self.screen, self.gtk_provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)


        Gtk.Window.__init__(self, title="Check Input")
        self.set_size_request(300, 80)
        self.mainbox = Gtk.VBox()
        self.add(self.mainbox)

        # entry
        self.name_entry      = Gtk.Entry()
        self.name_entry.set_name("name_entry")
        self.mainbox.pack_start(self.name_entry, True, True, 0)
        self.name_entry.connect("changed", self.check_input)

        entry_context = self.name_entry.get_style_context()
        self.entry_default_background_color = entry_context.get_background_color(Gtk.StateType.NORMAL)
        self.entry_default_background_color_str = self.entry_default_background_color.to_string()

        self.show_all()


    def check_input(self, _widget=None):        
            if "red" in self.name_entry.get_text():
                self.gtk_provider.load_from_data('#name_entry { background: red; }')
            elif "green" …
Run Code Online (Sandbox Code Playgroud)

css python gtk3

5
推荐指数
1
解决办法
1933
查看次数

reportlab 使用 registerFont 添加字体

我必须使用reportlab.pdfbase.pdfmetrics 中的registerFontFamily 方法。我尝试向系列中添加两种字体,但无法将粗体字体与“< b>sometext </b>”一起使用。我的报告需要此功能。我只能用普通的,不知道为什么。

这是代码。

registerFont(TTFont('Own_Font', os.path.dirname(os.path.abspath(__file__)) + '\\OwnSans-Regular.ttf'))
registerFont(TTFont('OwnBold_Font', os.path.dirname(os.path.abspath(__file__)) + '\\OwnSans-Bold.ttf'))

registerFontFamily('Own_Font',normal='Own_Font',bold='OwnBold_Font')

# define parameter for the page and paragraph font
PAGE_WIDTH, PAGE_HEIGHT = landscape(A4)
STYLES                  = getSampleStyleSheet()
STYLES.add( ParagraphStyle(name='Text', fontName = 'Own_Font', fontSize = 10 ))

STYLES.add( ParagraphStyle(name='Centered', fontName = 'Own_Font', fontSize = 10, alignment=TA_CENTER ))
STYLES.add( ParagraphStyle(name='CenteredBig', parent=STYLES['Centered'], fontSize=18, spaceAfter=10) )
STYLES.add( ParagraphStyle(name='CenteredMedium', parent=STYLES['Centered'], fontSize=15, spaceAfter=10) )
Run Code Online (Sandbox Code Playgroud)

我收到以下错误消息:

  File "X:\tools\Python2\lib\site-packages\reportlab-2.7-py2.7-win32.egg\reportlab\platypus\paragraph.py", line 916, in __init__
    self._setup(text, style, bulletText or getattr(style,'bulletText',None), frags, cleanBlockQuotedText)
  File "X:\tools\Python2\lib\site-packages\reportlab-2.7-py2.7-win32.egg\reportlab\platypus\paragraph.py", line 938, …
Run Code Online (Sandbox Code Playgroud)

python pdf fonts reportlab

5
推荐指数
1
解决办法
5623
查看次数

添加段落样式reportlab

我正在尝试设置一个段落样式来报告实验室,我在这里定义了一个样式:

def stylesheet():
    styles= {
        'default': ParagraphStyle(
            'default',
            fontName='Arial',
            fontSize=16,
            leading=12,
            leftIndent=0,
            rightIndent=0,
            firstLineIndent=0,
            alignment=TA_LEFT,
            spaceBefore=0,
            spaceAfter=0,
            bulletFontName='Arial',
            bulletFontSize=10,
            bulletIndent=0,
            textColor= black,
            backColor=None,
            wordWrap=None,
            borderWidth= 0,
            borderPadding= 0,
            borderColor= None,
            borderRadius= None,
            allowWidows= 1,
            allowOrphans= 0,
            textTransform=None,  # 'uppercase' | 'lowercase' | None
            endDots=None,         
            splitLongWords=1,
        ),
    }
Run Code Online (Sandbox Code Playgroud)

然后我就这样打印

   pdf = PDFDocument(carte)
    pdf.init_report()
    pdf.p(str(row))
    pdf.generate()
Run Code Online (Sandbox Code Playgroud)

这给出了一个未格式化的输出

当我尝试

pdf = PDFDocument(carte)
pdf.init_report()
pdf.p(str(row), default)
pdf.generate()
Run Code Online (Sandbox Code Playgroud)

要将默认样式应用于我的文本,它会给我 'NameError: name 'styles' is not defined'

有什么线索吗?

python pdf

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

ElementTree Unicode编码/解码错误

对于一个项目,我应该增强一些XML并将其存储在一个文件中.我遇到的问题是我不断收到以下错误:

Traceback (most recent call last):
  File "C:\Python27\lib\multiprocessing\process.py", line 258, in _bootstrap
    self.run()
  File "C:\Python27\lib\multiprocessing\process.py", line 114, in run
    self._target(*self._args, **self._kwargs)
  File "C:\Users\Bart\Dropbox\Studie\2013-2014\BSc-KI\cite_parser\parser.py", line 193, in parse_references
    outputXML = ET.tostring(root, encoding='utf8', method='xml')
  File "C:\Python27\lib\xml\etree\ElementTree.py", line 1126, in tostring
    ElementTree(element).write(file, encoding, method=method)
  File "C:\Python27\lib\xml\etree\ElementTree.py", line 820, in write
    serialize(write, self._root, encoding, qnames, namespaces)
  File "C:\Python27\lib\xml\etree\ElementTree.py", line 939, in _serialize_xml
    _serialize_xml(write, e, encoding, qnames, None)
  File "C:\Python27\lib\xml\etree\ElementTree.py", line 939, in _serialize_xml
    _serialize_xml(write, e, encoding, qnames, None)
  File "C:\Python27\lib\xml\etree\ElementTree.py", line 939, in _serialize_xml …
Run Code Online (Sandbox Code Playgroud)

python unicode elementtree python-2.7

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

Python Reportlab中的动态帧大小

我尝试使用Python中的生成一个发货清单.我试图通过使用Platypus将所有部件(如发件人地址,收件人地址,表格)放在适当的位置Frames.

我遇到的第一个问题是我需要很多Frames东西以正确的方式定位所有东西,使用Platypus有更好的方法吗?因为我希望发件人地址和我的地址处于相同的高度,如果我只是将它们添加到我的地址,story = []它们会一个接一个地对齐.

接下来的问题是我正在绘制的表格是动态的,当我到达Frame(我希望表格去的空间)的末尾时,它只是FrameBreak在下一帧中进行并且连续.那么如何让Frame(我的桌子的空间)动态?

python pdf pdf-generation reportlab

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

如何使用 ReportLab 从原始字节绘制图像?

我在互联网上遇到的所有示例都是从 url(本地或网络中)加载图像。我想要的是将图像从原始字节直接绘制到 pdf 中。

更新:

@georgexsh 这是我的代码,基于我对以下评论的理解:

def PDF_view(request):
    response = HttpResponse(content_type='application/pdf')

    ...

    page = canvas.Canvas(response, pagesize=A4)
    page.setTitle("Sample PDF")


    image = StringIO(raw_image_bytes) # raw_image_bytes is from external source
    image.seek(0)
    page.drawImage(image, 100, 100 )

    filename = 'document.pdf'
    page.showPage()
    page.save()

    return response
Run Code Online (Sandbox Code Playgroud)

python django pdf-generation reportlab python-3.x

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

如何对齐reportlab表中的单个单元格

创建一个表格,我想在下表中对齐单个单元格(向右):

我想将包含“职业”的单元格向右对齐

这是我的代码:

studentProfileData = [
                ['Application Form No', ''],
                ['Name', userData['studentDetails']["firstName"] + " " +userData['studentDetails']["lastName"]],
                ['Course opted for', userData['courseDetails']["courseOptedFor"]],
                ['Specific Course Name', courseMapping["Name"]],
                ['Category', userData['studentDetails']['caste']],
                ['Religion', userData['studentDetails']['religion']],
                ['Fathers'+ "'" +'s Name', userData['studentDetails']['religion']],
                ['Occupation', userData['studentDetails']['fOccupation']],
                ['Phone No', ""],
                ['Term', ""]
            ]

        colwidths = [3 * inch, 1.5 * inch, inch]

        # Two rows with variable height
        rowheights = [.5*inch] * len(studentProfileData)
        studentProfile = Table(studentProfileData, colwidths, rowheights, hAlign='LEFT')

        studentProfile.setStyle(TableStyle([
                ('ALIGN', (0, 0), (0, -1), "LEFT"),
                ('FONTSIZE', (0,0), (-1, -1), 13), …
Run Code Online (Sandbox Code Playgroud)

python django pdf-generation reportlab

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