我正在创建PDF文档从用户输入的UTF-8。
除了显示PDFs,创建本身也会失败,因为java.lang.IllegalArgumentException:U+039b在此字体的编码:winansiencoding
中不可用。
所以简而言之,我有一个字符串我想要一个防弹的方法来把它的大部分写到PDFBox文档中(显然,字体中缺少的字符将被替换或不打印)。
非常感谢,JM
我结束了一个字符一个字符的消毒。
这里是我的消毒功能看起来像什么。
为了避免重新处理字符,我缓存了每个给定字体的每个字符的可用性。
可能有很多东西需要改进,但这适用于我的用例。
private String getPrintableString(String string, PDFont font) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < string.length(); i++) {
int codePoint = string.codePointAt(i);
if (codePoint == 0x000A) {
sb.appendCodePoint(codePoint);
continue;
}
String fontName = font.getName();
int cpKey = fontName.hashCode();
cpKey = 31 * cpKey + codePoint;
if (codePointAvailCache.get(cpKey) == null) {
try {
font.encode(string.substring(i, i + 1));
codePointAvailCache.put(cpKey, true);
} catch (Exception e) {
codePointAvailCache.put(cpKey, false);
}
}
if (!codePointAvailCache.get(cpKey)) {
// Need to make sure our font has a replacement character
try {
codePoint = 0xFFFD;
font.encode(new String(new int[] { codePoint }, 0, 1));
} catch (Exception e) {
codePoint = 0x003F;
}
}
sb.appendCodePoint(codePoint);
}
return sb.toString();
}
问题内容: 打印列表中元素之前的“ u”?我没有在代码中键入u。 当我运行此命令时,它将打印列表,但其格式如下: 那些“ u”来自列表中每个元素的位置? 问题答案: 我认为您实际上对此感到惊讶的是,打印单个字符串与打印字符串列表的功能不同–无论是否为Unicode,这都是事实: 即使没有,您也有多余的引号,更不用说反斜杠转义了。而且,如果您使用字节字符串而不是字符串尝试相同的操作,那么您仍然会使用
我有一个PDF文件,我必须使用Java的Apache PDFBox库在PDF的每一页上打印页码。Pdf有一个包含动态内容的表格,我不知道我的内容需要在PDF上打印多少页,因为它包含一个包含动态数据的表格。 例如:-创建PDF时,文件可能有4或5页,在这种情况下,我必须在PDF页脚的每页上打印页码no。如下所示 假设内容将以PDF格式打印在4页上 第1页第1页,共4页 第2页第2页,共4页 在第3页
问题内容: 我想使用PDFBox打印 由iText创建的 PDF文件 。我已经使用PDDocument类及其方法print()成功尝试了此操作。您可以在此处找到文档: http //pdfbox.apache.org/apidocs/。 (我正在使用此代码:) 方法print()很好用,但是 有一个问题:当我需要打印多个文件时,该方法要求我为每个文档选择打印机。 有什么办法只能设置一次打印机吗?
我正在学习Java,有一个非常简单的要求,我似乎不知道哪里出了问题。一个简单的ArrayList,用于写入控制台 名字 姓 多布 我似乎不知道我怎么能把它们打印在一行里 名字姓多布 另一个名字另一个姓氏另一个Dob 提前感谢你所有的帮助。
使用Selenium4和chromedriver,我成功地将网站打印成具有自定义页面大小的PDF(请参见下面的Python代码)。我想知道用GeckoDriver/Firefox实现这一功能的等价物。