1

私は新しく、まだ自分の質問に返信できないため、元の質問を修正しました...しかし、ここに私の問題を書き直して、より多くのコーディングを加えています:

これは、当社が使用する経理/発注/CRM ツールである NetSuite の一部として使用しています。freemarker、html、およびxmlを組み合わせて見積もりを作成するフォーム作成ツールを使用して、独自の見積もりをカスタマイズすることができます。

見栄えの良い見積もりを設計しました。この見積もり内で、データベースから変数を呼び出すことができます。基本的に配送/請求情報、見積もりの​​項目、そして今日、ページ番号 (5 ページ中の 1 ページまたは 5 ページ中の 3 ページ) を追加し、フッターを使用して一番下に配置することができました。ただし、見積もりが複数のページにまたがる場合、上部にヘッダーを印刷して、説明したように「数量、説明、価格」が表示されるようにするために、これも行いたいと考えていました。

さて...マクロが何のためにあるのか正確にはわかりません。これは、ページ番号を書いてフッターに配置する方法でした。コードを少し示します。

「ページ1を見ていなければ、このヘッダーを印刷しますが、ページ1を見ている場合は、ヘッダーを印刷しないでください」と言うことができるように、似たようなことをしたかったので、そのページを実行できると考えました=ページ + 1 なので、増え続けました。このアイデアは、見積もりの​​他の部分でも機能します (たとえば、リストされているすべての項目は見積もりの​​別の行にあり、その方法を使用して実際に行番号を出力しますが、後でシステム内の独自のルーチン内で実行されます。リスト機能)...

したがって、これを私のHEADERで機能させるための助けをいただければ幸いです。「page = PAGENUMBER」のような簡単なことをしたいと思っていましたが、何らかの理由で組み込みのページ番号変数を利用できません。そのようにはうまくいきません...これが私が持っているものです荘園:

<!--?xml version="1.0"?-->
<pdf>
 <head>
  <style type="text/css">
    STYLES HERE
  </style>

  <macrolist>
    <macro id="footer">
      <hr></hr>
      <table border="0" width="100%">
       <tr>
        <#setting time_zone="America/New_York">
        <td align="left">${.now}</td>
        <td align="right">Page <pagenumber/> of <totalpages/></td>
       </tr>
      </table>
      <hr></hr>
    </macro>
  </macrolist>

 </head>
 <body footer="footer" footer-height="12mm">

  REGULAR HTML HERE FOR OUR COMPANY

  <#if (record.item?size > 0)>

  <table class="border" width="100%" cellpadding="2">

  <#assign line = 0>
  <#list record.item as item>
  <#if item_index==0>

   <tr>
    <td width="5%" class="border4" valign="center"><b>Ln #</b></td>
    <td width="5%" class="border4" valign="center"><b>Qty</b></td>
    <td width="66%" class="border4" valign="center"><b>Description</b></td>
    <td width="12%" class="border4" valign="center" align="right"><b>Unit Price</b></td>
    <td width="12%" class="border5" valign="center" align="right"><b>Ext. Price</b></td>
   </tr>

  </table>

  <table width="100%" cellpadding="7">

  </#if>

   <tr>

    <#assign line = line + 1>
    <td width="5%" valign="top">${line}</td>
    <td width="5%" valign="top">${item.quantity}</td>
    <td width="71%" valign="top">${item.description?html}<br /><i>Manuf. Part #: ${item.item.text}</i></td>
    <td width="12%" valign="top" align="right">$${item.rate}</td>
    <td width="12%" valign="top" align="right">$${item.amount}</td>

   </#if>

   </tr>

  </#list>

  </table>

  </#if>

MORE HTML FOR OUR COMPANY HERE

 </body>
</pdf>

以上のことから、「LN #, QTY, DESCRIPTION, UNIT PRICE, EXT. PRICE」を 2 ページ以降のヘッダーとしてどのように利用できるかについて何か考えはありますか? (ページ 1 の上部には当社のレターヘッドがあり、当社のその他の HTML コーディングがあります)

4

5 に答える 5

2

Yvanが指摘したように、これはフリーメーカーの質問ではなく、実際にはの質問です。Shaunが指摘したように、#page nの CSS id セレクターを使用して、特定のページのヘッダー/フッターを設定できます。これに関する問題は、私が見たすべての既存のドキュメントが、 #page n CSS セレクターを使用する場合、他のすべてのページにも CSS を定義する必要があることを示していることです。たとえば...

/* If */
#page1 {
  header: empty-header;
  header-height: 0px;
}
/* Then */
#page2, #page3, #page4, ... #pagen {
  header: default-header;
  header-height: 10mm;
}

基本的に、ページの最大サイズを推測し、ページごとに CSS セレクターを追加する必要があります。正直なところ、誰が11ページの注文をするのでしょうか?

これがうまくいかない場合、またはこのようなハードコーディングされた制限が気に入らない場合は、別の方法があると思います。<body>タグでデフォルトのヘッダーを定義する場合。次に、必要なページ (つまり、この場合はページ 1) だけに#page n!important CSS セレクターを定義しますが、 CSS プロパティを使用すると、目的の結果が得られます。たとえば、これでうまくいくはずです...

<!--?xml version="1.0"?-->
<pdf>
 <head>
  <style type="text/css">
    #page1 {
      header: empty-header !important;
      header-height: 0px !important;
    }
  </style>

  <macrolist>
    <macro id="empty-header">
       <!-- Nothing to look at here -->
    </macro>
    <macro id="default-header">
       <!-- Header HTML for all but first page -->
    </macro>
  </macrolist>
 </head>
 <body header="default-header" header-height="12mm">
   <!-- Page body HTML -->
 </body>
</pdf>
于 2021-08-03T19:05:38.723 に答える
1

macroと が何であるかはわかりませんmacrolist(それは FreeMarker ではありません) が、未定義でない限り同様に初期化countすべきではないと思います。0つまり、その 2 つの#assign-s の代わりに、 と書くことができます<#assign count = (count!0) + 1>。もちろん、FreeMarker のライフサイクルがどのEnvironmentように見えるかは重要です。新しいものを開始すると ( callのように) の値countが失われるからです。EnvironmentTemplate.process

于 2013-08-14T21:35:59.147 に答える