C# 使用iTextSharp提取PDF文档的ID
我需要提取文档尾部提到的PDF标识符。但我无法得到那个值。 我的pdf文件中提到了以下内容:C# 使用iTextSharp提取PDF文档的ID,c#,asp.net,pdf,itextsharp,C#,Asp.net,Pdf,Itextsharp,我需要提取文档尾部提到的PDF标识符。但我无法得到那个值。 我的pdf文件中提到了以下内容: trailer <</Size 196/Prev 370761/Root 160 0 R/Info 158 0 R/ID[<30EB7FCBB6756E461176FBBD0CEBA7B9><DB67D6D43AE0FA4FBF8CC171FC66790A>]>> 拖车 我需要提取值30EB7FCBB6756E46176FBBD0CEBA7B9。使用P
trailer
<</Size 196/Prev 370761/Root 160 0 R/Info 158 0 R/ID[<30EB7FCBB6756E461176FBBD0CEBA7B9><DB67D6D43AE0FA4FBF8CC171FC66790A>]>>
拖车
我需要提取值30EB7FCBB6756E46176FBBD0CEBA7B9
。使用PdfReader.Trailer
如果一个键作为'ID',我会得到一个字典类型的对象,但我无法从中获得上述所需的值
使用PdfReader.Trailer
如果一个键作为'ID',我会得到一个字典类型的对象,但我无法从中获得上述所需的值
看着PdfReader.Trailer
你就快到了:
public PdfArray GetId(string FileName)
{
using (PdfReader pdfReader = new PdfReader(FileName))
{
return pdfReader.Trailer.GetAsArray(PdfName.ID);
}
}
这个方法返回文档的ID,一个由两个字节字符串组成的数组
您似乎对ID的十六进制表示法感兴趣。您可以这样输出它:
public void PrintId(PdfArray Id)
{
if (Id != null)
{
StringBuilder builder = new StringBuilder();
builder.Append("ID: ");
foreach (PdfObject o in Id)
{
builder.Append("<");
foreach (byte b in ((PdfString)o).GetBytes())
builder.AppendFormat("{0:X}", b);
builder.Append(">");
}
Console.WriteLine(builder.ToString());
}
}
public void打印Id(PdfArray Id)
{
如果(Id!=null)
{
StringBuilder=新的StringBuilder();
builder.Append(“ID:”);
foreach(Id中的PdfObject o)
{
生成器。追加(“”);
}
Console.WriteLine(builder.ToString());
}
}
(我对.Net不是很精通,所以可能有很多更优雅的方法来创建字节数组的十六进制转储。)
使用PdfReader.Trailer
如果一个键作为'ID',我会得到一个字典类型的对象,但我无法从中获得上述所需的值
看着PdfReader.Trailer
你就快到了:
public PdfArray GetId(string FileName)
{
using (PdfReader pdfReader = new PdfReader(FileName))
{
return pdfReader.Trailer.GetAsArray(PdfName.ID);
}
}
这个方法返回文档的ID,一个由两个字节字符串组成的数组
您似乎对ID的十六进制表示法感兴趣。您可以这样输出它:
public void PrintId(PdfArray Id)
{
if (Id != null)
{
StringBuilder builder = new StringBuilder();
builder.Append("ID: ");
foreach (PdfObject o in Id)
{
builder.Append("<");
foreach (byte b in ((PdfString)o).GetBytes())
builder.AppendFormat("{0:X}", b);
builder.Append(">");
}
Console.WriteLine(builder.ToString());
}
}
public void打印Id(PdfArray Id)
{
如果(Id!=null)
{
StringBuilder=新的StringBuilder();
builder.Append(“ID:”);
foreach(Id中的PdfObject o)
{
生成器。追加(“”);
}
Console.WriteLine(builder.ToString());
}
}
(我对.Net不是很精通,所以可能有很多更优雅的方法来创建字节数组的十六进制转储。)
使用PdfReader.Trailer
如果一个键作为'ID',我会得到一个字典类型的对象,但我无法从中获得上述所需的值
看着PdfReader.Trailer
你就快到了:
public PdfArray GetId(string FileName)
{
using (PdfReader pdfReader = new PdfReader(FileName))
{
return pdfReader.Trailer.GetAsArray(PdfName.ID);
}
}
这个方法返回文档的ID,一个由两个字节字符串组成的数组
您似乎对ID的十六进制表示法感兴趣。您可以这样输出它:
public void PrintId(PdfArray Id)
{
if (Id != null)
{
StringBuilder builder = new StringBuilder();
builder.Append("ID: ");
foreach (PdfObject o in Id)
{
builder.Append("<");
foreach (byte b in ((PdfString)o).GetBytes())
builder.AppendFormat("{0:X}", b);
builder.Append(">");
}
Console.WriteLine(builder.ToString());
}
}
public void打印Id(PdfArray Id)
{
如果(Id!=null)
{
StringBuilder=新的StringBuilder();
builder.Append(“ID:”);
foreach(Id中的PdfObject o)
{
生成器。追加(“”);
}
Console.WriteLine(builder.ToString());
}
}
(我对.Net不是很精通,所以可能有很多更优雅的方法来创建字节数组的十六进制转储。)
使用PdfReader.Trailer
如果一个键作为'ID',我会得到一个字典类型的对象,但我无法从中获得上述所需的值
看着PdfReader.Trailer
你就快到了:
public PdfArray GetId(string FileName)
{
using (PdfReader pdfReader = new PdfReader(FileName))
{
return pdfReader.Trailer.GetAsArray(PdfName.ID);
}
}
这个方法返回文档的ID,一个由两个字节字符串组成的数组
您似乎对ID的十六进制表示法感兴趣。您可以这样输出它:
public void PrintId(PdfArray Id)
{
if (Id != null)
{
StringBuilder builder = new StringBuilder();
builder.Append("ID: ");
foreach (PdfObject o in Id)
{
builder.Append("<");
foreach (byte b in ((PdfString)o).GetBytes())
builder.AppendFormat("{0:X}", b);
builder.Append(">");
}
Console.WriteLine(builder.ToString());
}
}
public void打印Id(PdfArray Id)
{
如果(Id!=null)
{
StringBuilder=新的StringBuilder();
builder.Append(“ID:”);
foreach(Id中的PdfObject o)
{
生成器。追加(“”);
}
Console.WriteLine(builder.ToString());
}
}
(我对.Net不是很精通,因此可能有很多更优雅的方法来创建字节数组的十六进制转储。)不知道是谁投了反对票,但我认为投票结束是“离题”的,声称这是一个“为什么这段代码不起作用”的问题。我不同意投票结束,我用一张赞成票来补偿反对票;-)谢谢@BrunoLowagie:)我不知道是谁投了反对票,但我认为结束投票是“离题”的,声称这是一个“为什么这个代码不起作用”的问题。我不同意投票结束,我用一张赞成票来补偿反对票;-)谢谢@BrunoLowagie:)我不知道是谁投了反对票,但我认为结束投票是“离题”的,声称这是一个“为什么这个代码不起作用”的问题。我不同意投票结束,我用一张赞成票来补偿反对票;-)谢谢@BrunoLowagie:)我不知道是谁投了反对票,但我认为结束投票是“离题”的,声称这是一个“为什么这个代码不起作用”的问题。我不同意投票结束,我用一张赞成票来补偿反对票;-)谢谢@BrunoLowagie:)