我使用PDFBox 1.8.3 jar在打印机(HW)中打印PDF文件.我以正常和程序两种方式打印PDF文件.当我使用常规方式打印PDF时,我将原始pdf文件作为打印文档.但是当我使用我的代码时,我无法将原始的pdf文件作为打印输出.我可以在打印文件中看到一些变化; 例如,对齐,字体和墨水与原始文档不同.
ReadPDF readPDF = new ReadPDF();
PDDocument document = readPDF.loadPdf(path);
document.addPage(new PDPage());
printerJob.setPageable(document);
printRequestAttributeSet.add(new PageRanges(1,3));
printerJob.print(printRequestAttributeSet);
Run Code Online (Sandbox Code Playgroud)
此外,我尝试将PDFBox jar 1.8.3升级为即将推出的jar 2.0.0.我遇到了一些困难(例如:在PDFBox 2.0.0中我无法使用printerJob.setPageable(document);).你能帮我解决这个问题吗?
我试图根据它的坐标从PDF文档中提取文本,所以我在Adobe PDF参考中遇到了两个概念(第5.3章):
现在我对Td&Tm定位运算符感兴趣,而使用Td你有tx和ty,相对于当前行的开始,这在PDF文档中有明确规定:
tx ty Td,我已经使用这种方法通过tx提取文本和ty坐标.问题是我不知道如何根据其位置从PDF中提取文本,同时仅提供tx和ty.
a b c d e f Tm
Run Code Online (Sandbox Code Playgroud)
这是'Tm用法'.af值代表什么?这将是我对Tm的输入:
BT
/F1 8.88 Tf
0 0 0 rg
0.9998 0 0 1 401.52 448.08 Tm
[<0014>-11<0015>-11<0013>-11<000F>-19<0014>-11<0019>] TJ
ET
Run Code Online (Sandbox Code Playgroud)
为什么每组四人都有一个领先的00?这是十六进制?我应该将它从十六进制转换为int和相应的字符吗?
这将是我对Td的输入:
BT 43.20 421.90 Td 0 Tw /C001 10.00 Tf 0.00 Tw <BlablablaTextInHexThatICanProcess>Tj ET
Run Code Online (Sandbox Code Playgroud)
这更加清晰,坐标更清晰.如何根据简单的X和Y坐标从Tm定位的PDF文本对象中提取文本?我正在使用c ++和PoDoFo库