1. 概述
1.1 版本
報表伺服器版本 | 功能變更 |
---|---|
11.0 | - |
11.0.9 | 「需要密碼」變更為「檔案密碼」 |
11.0.13 | 檔案密碼支援公式自訂密碼 |
1.2 功能簡介
對於範本匯出 PDF 檔案,希望在開啟匯出的 PDF 檔案時,能夠有個密碼輸入框,只有正確輸入密碼的人能夠查看檔案的內容。為此 FineReport 提供了 PDF 範本匯出屬性設定,可以對檔案內容進行保護,檔案密碼支援公式和字串設定。
2. 設定方法
1)點選「範本>範本匯出屬性」中的 PDF 範本匯出屬性選項,預設不被選中的,如下圖:
2)選中,在檔案密碼正文框中輸入您要設定的密碼。
3)若設定了密碼,則開啟匯出的 PDF 時,會彈出如下對話框,只有正確輸入密碼的人才能查看此 PDF 檔案:
3. 匯出檔案密碼支援使用函式
3.1 設定方式
1)點選「範本>範本匯出屬性」中「通用」,勾選「密碼支援公式」即可,如下圖所示:
2)點選「範本>範本匯出屬性」中的 PDF 範本匯出屬性選項,勾選「檔案密碼」,會出現個檔案密碼設定正文框,在檔案密碼框中輸入您要設定的公式密碼即可。
3.2 支援函式範圍
檔案密碼支援的函式公式範圍如下表所示:
常用函式&數學三角函式 | 日期和時間函式 | 正文函式 | 邏輯函式 | 報表函式 |
---|---|---|---|---|
SUM() | DATE() | CHAR() | AND() | COLCOUNT() |
COUNT() | DATEDELTA() | CODE() | BITNOT() | COLNAME() |
CHAR() | DATEDIF() | CONCATENATE() | BITOPERATIOIN() | FIELDS() |
DATE() 注:此函式參數值要求是date(數值,數值,數值) | DATEINMONTH() | EXACT() | IF() | Decode() 注:介於密碼只能使用英文特殊字元以及數字,所以decode解碼後必須是這些字元才能正常使用 |
MAX() | DATEINQUARTER() | FIND() | OR() | RECORDS() |
MIN() | DATEINWEEK() | LEFT() | REVERSE() | ROWCOUNT() |
TIME() | DATEINYEAR() | LEN() | TABLEDATAFIELDS() | |
ABS() | DATESUBDATE() | LOWER() | TABLEDATAS() | |
ACOS() | DATETONUMBER() | MID() | TABLES() | |
ACOSH() | DAY() | PROPER() | VALUE() | |
ASIN() | DAYS360() | REPEAT() | MAP() | |
ASINH() | DAYSOFMONTH() | REPLACE() | encode() | |
ATAN() | DAYSOFQUARTER() | RIGHT() | ||
ATAN2() | DAYSOFYEAR() | SUBSTITUTE() | ||
ATANH() | DAYVALUE() | |||
COMBIN() | HOUR() | |||
COS() | MINUTE() | |||
COSH() | MONTH() | |||
DEGREES() | MONTHDELTA() | |||
EVEN() | NOW() | |||
EXP() | SECOND() | |||
FACT() | TIME() | |||
GCD() | TODATE() | |||
INT() | TODAY() | |||
LCM() | WEEKDAY() | |||
LN() | WEEK() | |||
LOG() | WEEKDATE() | |||
LOG10() | YEAR() | |||
MOD() | YEARDELTA() | |||
ODD() | LUNAR() | |||
PI() | ENDOFMONTH() | |||
POWER() | ISWORKDAY() | |||
PRODUCT() | ||||
RADIANS() | ||||
RAND() | ||||
RANDBETWEEN() | ||||
ROUND() | ||||
ROUNDDOWN() | ||||
ROUNDUP() | ||||
SIN() | ||||
SINH() | ||||
SIGN() | ||||
SQRT() | ||||
SUMSQ() | ||||
TAN() | ||||
TANH() | ||||
TRUNC() |
4. PDF 加密匯出伺服器端報錯
問題描述:
PDF 加密匯出時,在本地正常,在伺服器端報錯如下:
java.lang.SecurityException: class "org.bouncycastle.asn1.ASN1ObjectIdentifier"'s signer information does not match signer information of other classes in the same package
解決方案:
這是在進行項目整合的時候,項目裏面本身引用了 PDF 匯出加密的 JAR 包,而 FineReport 的 JAR 包中也引用到了 PDF匯出加密的 JAR 包,進而導致的jar包衝突造成的報錯,直接將項目中的 PDF 匯出加密的 JAR 包刪除即可。
注:PDF 加密匯出的jar包的名稱隨着 JDK 的版本不同而不同。