有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java iText7 Html到PDF页脚与页面计数器如何更改颜色

使用iText7 for Java,我尝试将HTML转换为PDF。 我试图改变页脚的样式,但没有成功

我的HTML:

<html>
    <head>
        <style>
            #header {
                position: running(header);
                text-align: left;
                margin-top: 50pt;
                margin-left: 320pt;
                font-family: Garamond;
            }
            
            @page {
                margin-top: 200pt;
                margin-right: 30pt;
                margin-bottom: 50pt;
                margin-left: 30pt;
                
                @top-right {
                    content: element(header);
                }
               
                @bottom-center {
                    content: "Page " counter(page) " of " counter(pages);
                }

            }
        </style>
    </head>
    <body>
        <div id="header">
            Monsieur Jay LAPOISSE<br>
            13 avenue de la Chance<br>
            35911 Rennes
        </div>
        
        <div style="page-break-after: always;">First page</div>
        <div style="page-break-after: always;">Second page</div>
        <div>Last page</div>
    </body>
</html>

我的Java

try {
    HtmlConverter.convertToPdf(new FileInputStream(new File(SRC)), new FileOutputStream(new File(DEST)));
} catch(Exception e) {
    e.printStackTrace(System.err);
}

我的目标是:

the goal

如果我试着像标题那样做,我不会到达页面计数器

如果我按照上面的代码做,我不会影响一种风格


共 (1) 个答案

  1. # 1 楼答案

    CSS总共有16个页边距区域,您可以在其中放置内容。您的用例可以通过以下CSS代码轻松使用这些区域来实现:

    @bottom-right {
        color: red;
        content: "Page " counter(page) " of " counter(pages);
    }
    @bottom-left {
        color: red;
        content: "[document title]";
    }
    

    完整HTML:

    <html>
    <head>
      <style>
        #header {
          position: running(header);
          text-align: left;
          margin-top: 50pt;
          margin-left: 320pt;
          font-family: Garamond;
        }
    
        @page {
          margin-top: 200pt;
          margin-right: 30pt;
          margin-bottom: 50pt;
          margin-left: 30pt;
    
          @top-right {
            content: element(header);
          }
    
          @bottom-right {
            color: red;
            content: "Page " counter(page) " of " counter(pages);
          }
          @bottom-left {
            color: red;
            content: "[document title]";
          }
    
        }
      </style>
    </head>
    <body>
    <div id="header">
      Monsieur Jay LAPOISSE<br>
      13 avenue de la Chance<br>
      35911 Rennes
    </div>
    
    <div style="page-break-after: always;">First page</div>
    <div style="page-break-after: always;">Second page</div>
    <div>Last page</div>
    </body>
    </html>
    

    使用pdfHTML 3.0.1转换为PDF后的视觉效果:

    result