当前位置: 首页 > 知识库问答 >
问题:

我如何测试我的字体在PDF中是否正确呈现?

鲁涵意
2023-03-14

在jasper报表中使用不同字体时,需要使用font-extensions。

但是,如果字体呈现不正确,是否有一种方法可以测试pdf是否支持该字体,以便了解问题是与我的字体扩展有关,还是与我的.ttf字体有关?

从jasper reports导出到pdf时字体的不正确呈现是一个常见的问题。例如,jasper reports pdf不能导出西里尔值,如清单第1点所示,使用字体扩展并不总是足够的,字体还需要得到pdf生成库的支持,并且能够呈现实际字符。这就是为什么我决定通过这个Q-A样式问题,以便未来的用户在击中检查表1时可以有一个关于如何快速测试字体的参考。

共有1个答案

阎宝
2023-03-14

由于jasper report使用itext库,测试字体在pdf中是否能正确呈现的最简单方法就是直接用itext测试。

示例程序*,改编自iText:第11章:选择正确的字体

import java.io.FileOutputStream;
import java.io.IOException;

import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Font;
import com.lowagie.text.Paragraph;
import com.lowagie.text.pdf.BaseFont;
import com.lowagie.text.pdf.ColumnText;
import com.lowagie.text.pdf.PdfWriter;

public class FontTest {

    /** The resulting PDF file. */
    public static final String RESULT = "fontTest.pdf";
    /** the text to render. */
    public static final String TEST = "Test to render this text with the turkish lira character \u20BA";

    public void createPdf(String filename) throws IOException, DocumentException {
        Document document = new Document();
        PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(filename));
        document.open();
        BaseFont bf = BaseFont.createFont(
            "pathToMyFont/myFont.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
        Font font = new Font(bf, 20);
        ColumnText column = new ColumnText(writer.getDirectContent());
        column.setSimpleColumn(36, 730, 569, 36);
        column.addElement(new Paragraph(TEST, font));
        column.go();
        document.close();
    }

    public static void main(String[] args) throws IOException, DocumentException {
        new FontTest().createPdf(RESULT);
    }
}

一些注释(见示例):

    null
 类似资料:
  • 问题内容: 在jasper report中使用不同的字体时,您需要使用font-extensions。 但是,如果字体显示 不正确 ,有没有一种方法可以测试pdf是否支持该字体,以便我可以理解问题是否与我的字体扩展名或我的字体有关? 从jasper报告导出为pdf时,字体呈现不正确是一个常见的问题示例jasperReports PDF不会导出西里尔字母值,如清单1所示,使用字体扩展名并不总是足够的

  • 问题内容: 我已经安装了django-redis-cache和redis- py。我关注了Django的缓存文档。据我所知,下面的设置是我所需要的。但是我怎么知道它是否正常工作呢? … 问题答案: 尚未与Django一起使用,但是我的默认方法是在开发过程中检查某个组件是否确实写入了Redis: 首先,我刷新存储在redis中的所有键,以删除旧的缓存条目(在生产中绝对不要这样做,因为这会从redis

  • 在jasper reports一节中,pdf问题中有一个jasper report字符编码。 jasper报告中无法解决该问题,因为它似乎是一个itext问题(使用itext v.5.5.4) 示例代码: 可在mm3下载字体。ttf公司 将错误渲染为: 它应该呈现为(在浏览器中使用相同的ttf) 只是出于好奇发生了什么事?(看起来像是某些字符,带虚线的圆圈应该向后移动,但这不会发生)。 这是<代码

  • 问题内容: 在开发过程中,我希望处理的某些事情与最终上传到Google服务器时的情况略有不同。 是否可以进行快速测试来确定我是否在SDK中或正在使用? 问题答案: 请参阅: https //cloud.google.com/appengine/docs/python/how-requests-are- handled#Python_The_environment 以下环境变量是CGI标准的一部分,

  • 使用Fork-Join框架的资源,创建一个同步多线程系统,从三个文本文件中形成一个最大长度的单词集合。不要使用中间集合来读取文本。在本例中,工作由存储在MaxLengthWord类的arr字段中的数组表示。createSubtasks()方法递归地将任务分成更小的工作部分,直到每个工作部分都小于阈值。

  • 以下测试表现异常: 我应该如何正确处理被拒绝的promise(并测试它)? 如何正确处理失败的测试(即: