0

上周,我一直在为我支持的组织自动生成发票。该过程由3个步骤组成:

  1. 生成发票
  2. 将发票打印成pdf
  3. 发送附在电子邮件中的发票

我在第二步中遇到了麻烦,我需要从发票生成模块返回的 url 打印 pdf。我尝试了 2 个不同的 python 模块,但都没有正确打印文档:

I)当通过浏览器打印时:这是使用整页打印 html 的预期结果

在此处输入图像描述

II)使用 pdfkit:出于某种原因,pdfkit 正在考虑 html 有一个额外的页面(2 而不是 1)并在同一页面上打印。我不知道它的行为是这样的。在此处输入图像描述

在此处输入图像描述

III) 使用 Wea​​syPrint 打印:也不起作用,但与 pdfkit 的效果相反。发票不适合页面。

为了进一步澄清问题,发票是一个包含大量 colspan 和内联样式的大 html 表。我想要一些帮助来理解为什么 pdf 表现不佳以及我应该怎么做才能修复它。

<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
  <title></title>    
  <style type="text/css">    a {text-decoration: none}  </style>
</head>
<body text="#000000" link="#000000" alink="#000000" vlink="#000000">
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
    <tbody>
      <tr>
        <td width="50%">&nbsp;</td>
        <td align="center">
          <a name="JR_PAGE_ANCHOR_0_1"></a>
          <table style="width: 892.5px; border-collapse: collapse; empty-cells: show" cellpadding="0" cellspacing="0" border="0" bgcolor="white">
            <tbody>
              <tr>
                <td style="width: 31.5px; height: 1.5px;"></td>
                <td style="width: 1.5px; height: 1.5px;"></td>
                <td style="width: 3px; height: 1.5px;"></td>
                <td style="width: 114px; height: 1.5px;"></td>
                <td style="width: 16.5px; height: 1.5px;"></td>  
                <td style="width: 10.5px; height: 1.5px;"></td>  
                <td style="width: 4.5px; height: 1.5px;"></td>  
                <td style="width: 16.5px; height: 1.5px;"></td>  
                <td style="width: 1.5px; height: 1.5px;"></td>  
                <td style="width: 67.5px; height: 1.5px;"></td>  
                <td style="width: 27px; height: 1.5px;"></td>  
                <td style="width: 7.5px; height: 1.5px;"></td>  
                <td style="width: 21px; height: 1.5px;"></td>  
                <td style="width: 69px; height: 1.5px;"></td>  
                <td style="width: 15px; height: 1.5px;"></td>  
                <td style="width: 25.5px; height: 1.5px;"></td>  
                <td style="width: 27px; height: 1.5px;"></td>  
                <td style="width: 6px; height: 1.5px;"></td>  
                <td style="width: 4.5px; height: 1.5px;"></td>  
                <td style="width: 10.5px; height: 1.5px;"></td>  
                <td style="width: 21px; height: 1.5px;"></td>  
                <td style="width: 40.5px; height: 1.5px;"></td>  
                <td style="width: 34.5px; height: 1.5px;"></td>  
                <td style="width: 37.5px; height: 1.5px;"></td>  
                <td style="width: 1.5px; height: 1.5px;"></td>  
                <td style="width: 1.5px; height: 1.5px;"></td>  
                <td style="width: 1.5px; height: 1.5px;"></td>  
                <td style="width: 51px; height: 1.5px;"></td>  
                <td style="width: 49.5px; height: 1.5px;"></td>  
                <td style="width: 15px; height: 1.5px;"></td>  
                <td style="width: 126px; height: 1.5px;"></td>  
                <td style="width: 1.5px; height: 1.5px;"></td>  
                <td style="width: 31.5px; height: 1.5px;"></td>
              </tr>
              <tr valign="top">  
                <td colspan="33" style="width: 892.5px; height: 30px;"></td>
              </tr>
              <tr valign="top"> 
                <td colspan="33" style="width: 892.5px; height: 4.5px;"></td>
              </tr>
              <tr valign="top">  
                <td style="width: 31.5px; height: 1.5px;"></td>  
                <td colspan="31" style="border-top: 1.5px dashed #000000; "></td>  
                <td style="width: 31.5px; height: 1.5px;"></td>
              </tr>
              <tr valign="top">  
                <td colspan="33" style="width: 892.5px; height: 30px;"></td>
              </tr>
              .
              .
              .

非常感谢!

4

1 回答 1

0

由于您使用 python,您可以使用 fpdf 之类的插件。我自己尝试将 html 和 xhtml 转换为 pdf 但失败了。Fpdf 插件有效。

于 2017-06-27T03:02:31.027 回答