我试图弄清楚如何从PDF文件中实际(适当地)读取PDF预告片 Byte_offset_of_last_cross-reference_section 。
根据PDF 1.7 (ISO 32000-1:2008)规范,文件结构的设计应该从文件末尾读取。下面是我使用StreamReader
并逐行读取文件(UTF8编码)时简化(最小)预告片的示例:
拖车
<< key1 value1
key2 value2
...
keyn valuen
>>
startxref
Byte_offset_of_last_cross-reference_section 的
%% EOF
trailer
<</Root 7 0 R /Size 7>>
startxref
696
%%EOF
我想以某种方式获取的值是 696 值。我只是不确定如何使用从文件末尾开始的BinaryReader。
答案 0 :(得分:2)
您可以使用Seek
方法,有关示例,请参阅here。您可以使用SeekOrigin.End作为参数,有关其他选项,请参阅here
示例:
using (var reader = File.Open(...))
{
reader.Seek(100, SeekOrigin.End);
//...
}
你可以开始在循环中向后阅读,直到你到达startxref
标记(或任何可以帮助你知道你可以阅读696
的东西)或假设从结尾的100字节长度该文件然后在安东尼在下面的评论中建议的那个小数组中进行查找。
答案 1 :(得分:0)
如何使用以下内容:
List<string> allLines = File.ReadAllLines(filePathHere);
return allLines[allLines.Count - 2];