gpt4 book ai didi

java - gradle processResources 似乎正在破坏字体文件

转载 作者:行者123 更新时间:2023-11-29 08:44:09 26 4
gpt4 key购买 nike

我花了几个小时来解决我认为与损坏文件有关的问题。基本上我在 spring boot 应用程序中使用 FlyingSaucer 来生成语言兼容的 pdf。我所有的日文/中文/俄文字符都是空白的。经过深入研究,我了解到我需要安装一个好的 unicode 字体,例如 Arial Unicode MS.ttf。

我已经下载并安装在我的 mac 上,看起来不错。我通过将它放入/resources 并使用 inputStream 获取它来将它放入我的类路径中。当我获取它并将其传递给 BaseFont(生成 pdf 的东西)时,它没有说找不到表“名称”。显然是因为文件损坏(google fu 说)。我注意到构建目录和 src 目录中的字体文件有不同的大小,所以对我来说它们肯定是损坏的。我尝试了其他几个 .ttf,但他们都提示缺少名称表。

我了解到 gradle 的 processResources 和 Copy 方法会损坏文件,但我不明白修复方法。我似乎进行了一些修复并复制了它们,但无济于事。我只想将一个文件复制到构建目录中,以便我的 spring boot jar 在生成 pdf 时可以访问该字体。

这是我最近尝试但没有成功的片段(我是 gradle 的新手,这是与工作相关的)

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'
])
}

根据 google 的说法,filesnotMatching 应该会跳过我的 .ttf 文件,但它仍然会被复制并损坏。我尝试将 .ttf 添加到不同的文件夹并使用 gradle copy 而不是 processResources 但无法让它以这种方式工作(可能做错了)。

解决方案:https://github.com/grails/grails-core/issues/629

最佳答案

您的第二个过滤器 应用于所有文件。您需要从该过滤中排除 .ttf 文件。最简单的方法是将其移动到 filesNotMatching("**/*.ttf") block 中:

filesNotMatching("**/*.ttf") {
it.filter(ReplaceTokens, tokens: [
releaseVersion: project.version,
releaseDate: buildDate
])

it.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'
])
}

关于java - gradle processResources 似乎正在破坏字体文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37692006/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com