AWT字体渲染和度量似乎不适用于实际的打印应用程序。字体渲染取决于DPI,FontMetrics会给出错误的结果。因此,在边界框内实际上无法呈现真实文本。
Java的替代方案是什么,以呈现真实的字体,水平和垂直对齐文本,在边界框内精确呈现文本等?
我们在JPEG和PNG上呈现文本,包括小DPI和300 DPI,我们还使用了很多不同的字体。
AWT字体渲染和度量似乎不适用于实际的打印应用程序。字体渲染取决于DPI,FontMetrics会给出错误的结果。因此,在边界框内实际上无法呈现真实文本。
Java的替代方案是什么,以呈现真实的字体,水平和垂直对齐文本,在边界框内精确呈现文本等?
我们在JPEG和PNG上呈现文本,包括小DPI和300 DPI,我们还使用了很多不同的字体。
一种方法是:
有许多常见的格式,它们基于文本和/或在Java中拥有众多库:
LaTeX在多个平台上都有易于安装的二进制文件,可以将您的图像栅格化,例如:
$ tex2png --help
关于 tex2png - 将(La)TeX转换为PNG图像
用法 tex2png [选项]
(La)Tex字符串可以通过命令行参数或STDIN传递。当通过STDIN手动输入时,请使用ctrl+d终止输入。
选项 -b 传递给dvipng的“--bg”选项的背景颜色。它应该以TeX颜色\special语法给出,例如“rgb 0.2 0.2 0.2”。还接受“Transparent”和“transparent”。有关详细信息,请参见dvipng帮助消息。默认值:'transparent'
-c (La)TeX字符串。
-d 输出目录。请参见下文。
-f 指定完整的输入文档。默认情况下,tex2png提供自己的标题并将输入包装在文档标记中。此选项使用户能够提供具有自定义标题的完整(La)TeX文档。
-i 内联模式。这将在输出中包括高度和深度,可用于Web页面的垂直对齐,例如。
-h 显示此帮助消息。
-o 图像路径。请参见下文。
-p 要呈现的页面号。默认值为1。
-s 传递给“dvipng”的字体大小参数。默认值为1400。
-t 临时工作目录。默认情况下,使用“mktemp”创建一个随机目录。
-T 裁剪内容周围的空白区域(dvipng -T tight)。
输出 如果设置了图像路径,则它是图像的完整路径。如果没有设置,则图像名称将是(La)Tex输入字符串的sha256摘要,并带有“.png”扩展名。如果设置了输出目录,则图像将保存在其中,否则将保存在当前目录中。
对于PS/PDF文件,您可以使用相应的Adobe应用程序、操作系统或ImageMagick (视频在此):
$ convert -density 300 file.pdf output.png
桌面出版软件经常会达到高性能系统的极限。使用Java进行DTP是一个坏主意。你会沉迷于快速原子计算,因此需要使用其他用C/C++或其他低级编程语言编写的程序。
这就是为什么我接受安德鲁的答案,认为外部程序甚至更好。
如果你正在寻找类似桌面出版的Java项目,那么你可以尝试使用http://community.jaspersoft.com/project/jasperreports-library等工具。