我试图在文档中创建新的页面并写入一些文本,同时使用文件中包含的字体。
字体是从资源中提取的:
PDPage page = document.getPage(0);
PDResources res = page.getResources();
List<PDFont> fonts = new ArrayList<>();
for (COSName fontName : res.getFontNames()) {
PDFont font = res.getFont(fontName);
System.out.println(font);
fonts.add(font);
}
后来用来写一些文字:
stream.beginText();
stream.setFont(fonts.get(0), 12);
stream.setTextMatrix(Matrix.getTranslateInstance(20, 50));
stream.showText("Protokol");
stream.endText();
包括PDF在内的完整项目可在github存储库中获得,该存储库显示了该问题
在这里,您实际上遇到了一个打开的PDFBox TODO,您的stream.showtext
最终调用每个字符的基础CID字体的encode
,这里我们有:
public class PDCIDFontType2 extends PDCIDFont
{
...
public byte[] encode(int unicode)
{
int cid = -1;
if (isEmbedded)
{
...
// otherwise we require an explicit ToUnicode CMap
if (cid == -1)
{
//TODO: invert the ToUnicode CMap?
// see also PDFBOX-4233
cid = 0;
}
}
...
if (cid == 0)
{
throw new IllegalArgumentException(
String.format("No glyph for U+%04X (%c) in font %s", unicode, (char) unicode, getName()));
}
return encodeGlyphId(cid);
}
...
}
(org.apache.pdfbox.pdmodel.font.pdcidfonttype2
)
如果PDFBox无法确定从Unicode到glyph代码的映射(if(cid==-1)
),JavaDoc注释指出了确定glyph代码的另一种方法,即反向查找ToUnicode映射。如果实现了这一点,PDFBox可能已经确定了一个字形ID并写入了您的文本。
PDFBox的字体类PDFont中有一个名为getFontHeight的方法,听起来很简单。然而,我不太理解文档和参数代表什么。 这将获得字符的字体宽度。 参数: c-要获取宽度的字符代码。 偏移量-数组中的偏移量。长度 数据的长度。 返回:宽度为1000个文本空间单位,即333或777 在PDFBox中,这个方法是用来获取角色高度的正确方法吗?如果是的话,如何获取?字体高度和字体大小之间是否存在
嗨,这个问题是指之前的帖子: 有人能给我举个例子,说明如何使用PDFBox提取“单词”的坐标吗 我使用的是PDFBOX 2.0.10 我已成功编译了组合代码,但在尝试运行示例时出现异常错误。 提供的解决方案没有标准的主方法,这是我感到困惑的地方。 有人能告诉我怎样才能成功运行组合代码吗。 堆栈跟踪 可以在这里找到坐标https://github.com/mkl-public/testarea-pd
试图通过遍历查看以下PDF文件中的所有字段,但它是“空的”。但如果我保存到一个新文件: 田地是否“隐蔽”?有办法得到他们吗?(我的最终目标是自动填写其中的一些内容)
2013年7月17日1:05:28 PM org.apache.pdfbox.util.pdfstreamengine processOperator信息:不支持/禁用操作:BDC 2013年7月17日1:05:29 PM org.apache.pdfbox.util.pdfstreamengine processOperator信息:不支持/禁用操作:EMC DeviceGray org.apa
我想写一些文本到一个PDF。我在“ICRResultTXT”中有数据。在尝试写入PDF之前,我还将数据写入text.txt文件。当我试图写到pdf时,我得到“没有字形的U+000A在Helvetica-Bold字体”。如何解决?我不喜欢“Helvetica-Bold”。我愿意改成任何字体。
我正在使用最新的PDFBOX库来提取文本,为了做到这一点,我编写了我的自定义PDFStreamEngine(shwoing部分代码,但其余应该类似): 然而,我有三个问题:第一个:“Tf”操作符-在PDF/F1中1 Tf:当我显示fontName和size时,它显示:evmanj+myriadpro-regular,size 1;但是,illustrator和adobe Acrobat上的实际字体