我已經花了好幾個小時來處理一個我認爲與損壞的文件有關的問題。基本上我在Spring啓動應用程序中使用FlyingSaucer來生成符合語言的pdf文件。我所有的日本/中國/俄羅斯角色都空白了。在深入研究後,我學會了我需要安裝一個好的Unicode字體,如Arial Unicode MS.ttf。gradle processResources似乎正在破壞字體文件
我已經下載並安裝它在我的Mac上,它似乎很好。我把它放到我的classpath中,放入/ resources並使用inputStream獲取它。當我獲取它並將其傳遞給BaseFont(pdf生成的東西)時,它失敗,說沒有找到表'名稱'。顯然這是因爲一個損壞的文件(谷福說)。我注意到構建目錄和src目錄中的字體文件有不同的大小,所以對我來說它們肯定是腐敗的。我已經嘗試了其他幾個.ttf文件,他們都抱怨缺少名稱表。
我已經學習了gradle的processResources和Copy方法可以破壞文件,但我不明白這個問題。我似乎有一些修復和複製他們,但沒有取得利用。我只是想將文件複製到構建目錄中,以便我的彈簧引導程序jar可以在生成pdf時訪問該字體。
這裏是我最近,我沒有成功(我是新來的搖籃,這是與工作相關的)
processResources {
//// inputs.properties(version: version.toString())
////
//// def sourceFiles = source.files
////
//// from(sourceFiles) {
//// include '**/*.properties'
//// filter(org.apache.tools.ant.filters.ReplaceTokens, tokens: [VERSION:
//// version.toString()])
//// }
//// from(sourceFiles) {
//// exclude '**/*.properties'
//// }
filesNotMatching("**/*.ttf") {
it.filter(org.apache.tools.ant.filters.ReplaceTokens, tokens: [
releaseVersion: project.version,
releaseDate: buildDate
])
}
filter(ReplaceTokens, tokens: [
LOG_LEVEL_ROOT: buildEnvironment=='release' ? 'WARN' : 'INFO',
LOG_LEVEL_WIRE: buildEnvironment=='mydev' ? 'DEBUG' : 'INFO',
LOG_LEVEL_CR: buildEnvironment=='release' ? 'INFO' : 'DEBUG',
LOG_LEVEL_DB_PARAMS: buildEnvironment=='release' ? 'INFO' : 'TRACE',
LOG_LEVEL_DB_QUERY: buildEnvironment=='release' ? 'DEBUG' : 'DEBUG',
LOG_LEVEL_SPRING: buildEnvironment=='release' ? 'INFO' : 'INFO'
])
}
根據谷歌的filesnotMatching應該讓我跳過.TTF文件,但它試圖片段仍然被複制並損壞。我嘗試將.ttf添加到不同的文件夾,並使用gradle copy代替processResources,但無法以這種方式工作(可能做錯了)。
解決方案:https://github.com/grails/grails-core/issues/629
感謝此工作,以防止字體文件的副本。之後,我做了一個複製任務,從這裏找到(https://github.com/grails/grails-core/issues/629)複製的解決方案,而不會被損壞。 – gallly