我正在尝试使用itext根据其URL在pdf中查找图像。 我知道当在Adobe设计器中编写pdf时,您可以设置其加载图像的“URL”。 当再次打开相同的pdf时,URL将保留在Image上,因此我知道该URL保留在pdf中。但是,我似乎无法看到URL可用于itext的任何地方。
即使您遍历所有对象并使用下面的代码查找图像对象。
iTextSharp.text.pdf.PdfReader reader = new iTextSharp.text.pdf.PdfReader(path);
iTextSharp.text.pdf.PdfObject pdfObject = reader.GetPdfObject(objectIndex);
然后遍历对象的'字典'值:
PdfDictionary pdx=(PdfDictionary)pdfObject;
foreach(PdfName name in pdx.Keys)
{
string value = pdx.Get(name).ToString();
Debug.WriteLine("Object at index " + objectIndex + " has dict item " + name + " of value " + value);
}
您可以找到Adobe Designer插入的图像对象,但对象上没有URL项/属性,即使URL显然存储在pdf文件中。
有人能在这里提供见解吗?
感谢。 斯科特。
答案 0 :(得分:0)
我想这个URL存储在某个地方的XFA中。
org.w3c.dom.Document xfaDOM = myReader.getAcroFields().getXfa().getDomDocument();
String imgURL = magicallyExtractImageUrlfromDOM( xfaDOM );
糟糕。这是Java。对于C#,它将非常相似,只有getDomDocument()
的返回类型为XmlDocument
。
编辑:IIRC,LiveCycle Designer将让您将表单视为XML文档,因此您应该能够轻松确定XPath表达式以提取图像URL。