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