美好的一天! 我有这个Root节点的pdf文件:
2 0 obj
<<
/Type /Catalog
/Pages 4 0 R
/Metadata 5 0 R
/Outlines 6 0 R
/PageMode /UseOutlines
/OpenAction [7 0 R /XYZ null null 1]
/PageLabels 8 0 R
/PageLayout /OneColumn
>>
endobj
但是,当我搜索页面节点(4 0 obj)时,我什么也没找到。 请帮帮我,怎么可以?何时可以使用页数(仅pdf格式的解决方案。不是imagick等) 谢谢
答案 0 :(得分:1)
找不到该对象,因为它与许多其他对象一起存储在压缩流中。
和往常一样,您应该先阅读交叉参考表export const config = admin => ({
columnDefs: getColumnDefs(admin),
rowDefs: getRowDefs(),
});
// main.js
import { config } from './gridConfig';
function doStuff() {
const { columnDefs, rowDefs } = config(admin);//get the admin variable set before this line
grid.columnDefs = columnDefs['orders'];
...
}
。您会发现它也被压缩了。请参见ISO PDF 32000-1:2008中的 7.5.8交叉引用流:
7.5.8.1常规
从PDF 1.5开始,交叉引用信息可以存储在交叉引用流中,而不是存储在交叉引用表中。
xref
指向字典
startxref
并将其解压缩
6628 0 obj
<<
/W [1 4 1]
/Info 1 0 R
/Root 2 0 R
/Size 6629
/Type /XRef
/Filter /FlateDecode
/Length 3996
/DecodeParms <<
/Columns 6
/Predictor 12
>>
>>
stream
... (compressed data) ..
endstream
该条目中的第一个数字是其状态:index entry 0: 0 0 255
index entry 1: 2 3 0
index entry 2: 1 15 0
index entry 3: 1 3981 0
index entry 4: 2 3 1
index entry 5: 1 197 0
index entry 6: 2 3 2
index entry 7: 2 3 3
index entry 8: 2 3 4
index entry 9: 2 3 5
.. etc. ..
是“未使用”,等于常规外部参照表中的0
,f
等于其中的1
常规表,n
表示对象已在另一个流中压缩。有关完整含义,请参见ISO参考。
由此,您可以看到对象#2中的2
条目位于偏移量15(十进制)处,而您的/Root
,#4处于压缩流中的位置#1。确实,将其解压缩可以显示预期的结果
/Pages