当前位置: 首页 > 面试题库 >

无法在TabBox PDF文档中插入制表符和空格

羊舌富
2023-03-14
问题内容

我想将其打印为PDFBOX创建的pdf。它不会让我插入制表符和空格,因为字体不支持它们。为什么这是一个问题,更重要的是,我该如何解决?

StudentData student = listOfDebtors.get(j);

contentStream.beginText();
contentStream.setFont(font, 8);
contentStream.newLineAtOffset(xPosition, yPosition);
contentStream.showText("Member #:"+ student.getMembershipNumber() + "\t"
            + "Grade:" + getStudentGradeInSchool(student.getYearGraduate()) + "\t"
            + "Year Joined" + student.getYearJoined() + "\n" 
            + "Name:" + student.getFirstName() + " " + student.getLastName() + "\n"
            + "Amount Owed : $" + student.getAmountOwed());

显示错误:

Caused by: java.lang.IllegalArgumentException: No glyph for U+0009 in font Courier
    at org.apache.pdfbox.pdmodel.font.PDType1Font.encode(PDType1Font.java:353)
    at org.apache.pdfbox.pdmodel.font.PDFont.encode(PDFont.java:283)
    at org.apache.pdfbox.pdmodel.PDPageContentStream.showText(PDPageContentStream.java:341)
    at fbla.rahulshah.database.dataManipulation.PDFCreator.createDebtorPDF(PDFCreator.java:61)
    at fbla.rahulshah.database.view.MainScreenController.generateDebtReport(MainScreenController.java:114)
    ... 62 more

问题答案:

字体是一组字形。没有“ TAB字形”之类的东西。想象一下自己在100年前使用金属字形进行排版的情况,并且某个人(拥有打字机)向您询问“标签字形”。

在打字机中,点击TAB表示“跳至下一个标签位置”。字体不知道其自身位置,只知道其字形的外观和大小。PDF或PDFBox也不具有“标签位置”的概念。PDF或PDFBox不是文本编辑器。

即使是编辑,盲目打TAB也不会总是让您高兴,这取决于您刚写的文本的长度。您必须先检查自己的位置,然后再考虑打TAB,或者打两次。

相反,您应该做的是在写入数据列之后,将自己定位到下一列的相应X位置。使用快递字体(固定为),您也可以通过计算字符串的长度并添加适当的空格数来实现此目的。

这将我们带到下一部分,缺少的空间。好的,请使用其他带有空格的字体,因为其中包含空格字形:它看起来不可见,但是大小固定。

最后,也没有“换行符”这样的东西。换行符是命令。您已经使用了“ newLineAtOffset”,可以很好地定位自己。有关如何操作,请参见mkl的答案。



 类似资料:
  • 作为我的应用程序的一部分,我有一个简单的屏幕来输入文本。当焦点在EditText中时,它永远不会接收制表符。 我按下虚拟键盘上的tab键,但行为是键盘消失了。 这是我的布局: 有问题的控件是最后一个EditText,因为它是多行的,带有滚动。 我需要提供这一点,以便用户可以做一些(非常)基本的格式化。 有什么想法吗?

  • 有冬眠和MSSQL环境。我遇到了一个错误:“无法将值NULL插入到“comment_id”列中,表“CHT”。dbo。记者"点评";;列不允许空值。“插入失败。”Hibernate配置: comment_id列在db中具有标识属性:如果我使用db客户端进行插入: 它非常适合我。 Hibernate日志: SQL-插入REPORTER_COMMENTS(REPORTERID, COMMENT,COM

  • 问题内容: Cookie是使用big5集编码的,因此无法插入MySQL。您能帮我解决这个问题吗? 字段:是eng,是日期,是汉字。 问题答案: 创建表时使用 UTF-8 。 插入表格时使用 UTF-8 阅读更多 和更多 详细代码 下面的代码是经过测试的代码,请执行以下工作。 如果您已经创建了数据库,请按以下代码更改它。如果没有创建数据库,则创建数据库并将Collat​​ion设置为utf8_uni

  • 我有一个StringBuffer类型的变量,它有null字符,即“\0”中间体。我可以用null字符正确打印变量。但是当我试图在Oracle表中插入这个变量时,我不能插入整个StringBuffer变量;只有“\0”之前的部分。我插入这个变量的列的数据类型为varchar2(50)。我不知道为什么会这样。可能是oracle不允许字符串带有null术语字符中间体。我知道一旦在字符串中遇到“\0”,它

  • 本文向大家介绍如何在页面中插入TAB符号(制表符)相关面试题,主要包含被问及如何在页面中插入TAB符号(制表符)时的应答技巧和注意事项,需要的朋友参考一下

  • 我试图在excel(xlsx)表中找到一个空白值,并使用我的程序和Apache POI库替换为一些字符串,如“Enter value”,如下所示 我能够读取和识别excel表中的空白/空值,但不能在这些单元格中插入任何值 } 下面是一段代码,我通过它标识空白/空值,并试图插入字符串,但它不写到那个单元格