将现有数字合并为一个PYTHON数字pdf

时间:2014-12-09 20:11:19

标签: python pdf matplotlib

我找不到适合我的解决方案。

我之前创建了许多已经存在的数据,并希望将它们合并到一个pdf格局页面中。图形文件是标准的matplotlib savefig,如.png。

那么我怎样才能简单地将四个地块结合起来将它们保存为一个带有python的pdf页面?我想像这样安排他们:

*-----------------------------------------------------------------------------------*
|                                                                                   |
|    *-------------------------------*         *-------------------------------*    |
|    |                               |         |                               |    |
|    |                               |         |                               |    |
|    |         fig 1                 |         |       fig 2                   |    |
|    |                               |         |                               |    |
|    |                               |         |                               |    |
|    *-------------------------------*         *-------------------------------*    |
|                                                                                   |
|                                                                                   |
|    *-------------------------------*         *-------------------------------*    |
|    |                               |         |                               |    |
|    |                               |         |                               |    |
|    |         fig 3                 |         |       fig 4                   |    |
|    |                               |         |                               |    |
|    |                               |         |                               |    |
|    *-------------------------------*         *-------------------------------*    |
|                                                                                   |
*-----------------------------------------------------------------------------------*

有一些非常简单的方法吗?

感谢您的帮助,

托拜厄斯

2 个答案:

答案 0 :(得分:2)

如何使用Inkscape?您只需导入png并将结果保存为pdf。

如果你需要为许多png执行此操作,可以将其保存到tnkscape中的svg并将其用作模板。使用简单的python脚本,您可以替换svg中png源的文件名,并再次使用inkscape来创建pdfs。

答案 1 :(得分:1)

您是否考虑制作一个html模板,将图像组合在适当的位置,然后使用python pagkage(例如:pdfkit)转换您的html"页面"到pdf文档?

它对您来说是否是一个有效的解决方案?

希望它有所帮助!

----编辑----

我使用我的建议得到了一个有效的例子。 假设您已经按照我之前发送的链接中的说明安装了 pdfkit wkhtmltopdf ,假设您在目录中有以下文件(我将在前面显示每个文件内容)叫结果

  • 结果
    • fig1.png
    • fig2.png
    • fig3.png
    • fig4.png
    • template.html
    • 的style.css
    • html2pdf.py

png文件显然是你的情节图像文件。

template.html 文件包含以下代码:

<!doctype html>
<head>
    <link rel="stylesheet" type="text/css" href="style.css">
</head>
<html>
    <body>
        <div id="ext_container">
            <div id="row1">
                <div id="fig1_container">
                    <img src="fig1.png"> </img>
                </div>
                <div id="fig2_container">
                    <img src="fig2.png"> </img>
                </div>
            </div>
            <div id="row2">
                <div id="fig3_container">
                    <img src="fig3.png"> </img>
                </div>
                <div id="fig4_container">
                    <img src="fig4.png"> </img>
                </div>
            </div>
        </div>
    </body>
</html>

style.css 包含以下代码:

ext_container {
    position: absolute;
    top: 50px;
}

#fig1_container {
    position: relative;
    float: left;
}

#fig2_container {
    position: relative;
    float: left;
    left: 100px;
}

#fig3_container {
    position: relative;
    float: left;
}

#fig4_container {
    position: relative;
    float: left;
    left: 100px;
}

#row2 {
    position: relative;
    top: 50px;
}

img {
    max-width: 300px;
    max-height: 300px;
}

html2pdf.py 脚本包含以下行(如pdfkit usage中所述):

import pdfkit
pdfkit.from_file('template.html', 'output.pdf')

然后,您只需从命令行调用 html2pdf.py 脚本。

希望你能开始工作!