2011-12-06 57 views
1

我想在每個頁面的右側伯特生成一個PDF文檔中垂直寫入動態文本(2.5.2)動態(背景)圖像報告

這使我變成兩個問題也許可以獨立解決:

  1. 寫入文本垂直
  2. 將這個在每個頁面上右邊(頁眉和頁腳不能幫我那裏)

對於問題1)

我無法找到一個方法來垂直書寫文字,所以我決定把我的文字變成一個JLabel,做90度旋轉,圖像寫入到一個ByteArrayOutputStream,並使用ByteArray的添加一個動態圖像到我的報告。 =>這已經是工作,如果有一個簡單的3線解決方案,我沒有想到,我會聽的理由:)

對於問題2)

由於事實上,頁眉和頁腳不適用於右側或左側的圖像/文本我的方法是使用背景圖像並將其放在右側。

的問題是,在BIRT背景圖像只能是一個URL或嵌入式圖像 用我產生的ByteArray我需要使用動態圖像。

所以現在我只能想到一種可能的解決方案:將我生成的圖像保存到具有唯一網址的臨時文件夾中,將此圖像添加爲背景圖像並在之後刪除。 但我認爲應該有一個更簡單的解決方案。

==> UPDATE 1

我創建一個兩列布局添加在右側我的動態圖像。我的報告最多有五頁,因此我在每幅圖像前分頁放置了五次圖像。這是工作,結果如預期...與一個新的問題:

在某些情況下,報告有3或4頁,所以我需要隱藏最後的圖像。我可以通過「reportContext.getPageVariable('pageNumber')」獲得第一列中報表末尾的頁數,並將其保存到我自己的報表變量中。如果數字大於我的最後一個頁碼,五個圖像中的每一個都會得到1到5的數字,並顯示一個隱藏條件。

現在我需要正確的地方,我讓我的PAGENUMBER:

  • 在呈現第一列中的最後一個元素得到正確的號碼,但它設置晚於我用它在第二列
  • 在渲染行始終返回1,但在使用它在第二列
  • 添加第二行會返回正確的頁碼之前設置,但後來比我用它在第二列設置

有誰知道如何做到這一點?

http://eclipse.org/birt/phoenix/deploy/reportScripting.php

==>更新1 END

回答

0

它做,現在,我知道它是如何工作......很容易;)

對於其他人有同樣的問題,這裏是你如何讓每一個頁面上的相同內容的側邊欄:

  1. 爲整個頁面創建一個雙列網格,並將您的內容添加到一列中。
  2. 中的數據資源管理器中創建報表變量maxPages用默認值0
  3. 添加一個文本元素作爲內容列最後一個元素具有以下屬性

    • 隱藏元素,表達:真正
    • 「在渲染」 腳本:

      vars["maxPages"] = reportContext.getPageVariable("pageNumber"); 
      
  4. 在第二列中添加您的重複元素具有以下屬性

    • 分頁符 - 前:常亮(第一個元素除外)
    • 隱藏元素,表達:

      vars["maxPages"] != 0 && vars["maxPages"] <= reportContext.getPageVariable("pageNumber") 
      
      • 注1:比較maxPages用0表示第一頁,該變量在頁面上第一次可用設置在第一列
      • 注2:與較小的比較,因爲之前的分頁符,變量pageNumber包含一個比實際的頁面編號少!

在我的情況下,經常性項目是與垂直文本動態圖像,但是這可能是一切,只是換一個網格內的每次出現

0

一個可能的替代方法:

  1. 設置有2列,1行網格報告。將網格拉伸爲紙張的長度。
  2. 設置一個虛擬數據集,其中定義了數字列,但始終返回沒有記錄(例如,通過包含where 1=0條件)。
  3. 將虛擬數據集的圖形添加到網格的右側單元格。將所有內容從y軸標題設置爲不可見或透明。
  4. 在y軸標題中輸入所需的文本,並在y軸標題的字體對話框中根據需要設置文本方向,字體大小等。
  5. 調整主網格的單元格寬度,以便右側單元格與頁面的右側對齊,並且寬度足以顯示所需的文本。
  6. 將報告的其餘部分插入主網格的左側單元格。

這種方法的問題(除了有點複雜之外)是,據我所知,y軸標題不容易設置爲動態文本。設置它的可能方法可能是在報告中的事件腳本中更改它,或者爲其提供查找鍵(在圖y軸標題「外部文本」對話框中),並在運行報告時動態設置查找值。

+0

嗨,馬克,對不起我的遲到的反應,我不得不先解決其他問題,並嘗試了另外兩個我想到的解決方案。 GraphicMasterPages似乎只是爲了這個目的......但還沒有實現。 – ThomasK

+0

第二種方法是通過birt腳本將其加載到內存後添加背景並替換圖像。 – ThomasK

+0

您的想法至少有點幫助,我創建了一個雙列布局,並在每張圖片之前將生成的圖片放置在右列5次,並帶有分頁符。這對於5頁的完整報告來說工作得很好。但在某些情況下,報告可能有3或4頁。我會爲這個問題添加一個新的迴應。 – ThomasK