在这里,我想使用带有iTextSharp.dll的C#编辑PDF文件中已存在的命名目标。
这里我展示的是PS脚本示例。
OLD:
[/Dest /bmkaff1 /View [/FitR 59 516 435 504] /DEST pdfmark
更新
[/Dest /bmkaff1 /View [/XYZ 59 516 0] /DEST pdfmark
PDF字典截图:
原始PDF文件
更新了PDF文件
注意:
通过更新PS文件生成更新的PDF文件
答案 0 :(得分:2)
我的问题得到了解决方案。
首先,我使用GetNamedDestination()
方法读取namded destionation,然后检查条件,然后编辑指定的目标值。
这是我的C#代码:
string pdfFilePath = @"D:\Raja\Testing\AuthorQuery\xxx.pdf";
string dPDFFile = @"D:\Raja\Testing\AuthorQuery\YYY.pdf";
PdfReader pdfR = new PdfReader(pdfFilePath);
Dictionary<object, PdfObject> nDest = new Dictionary<object, PdfObject>();
nDest = pdfR.GetNamedDestination();
List<object> nDesColl = new List<object>();
nDesColl.Clear();
foreach (KeyValuePair<object, PdfObject> sEntry in nDest)
{
PdfArray pArr = (PdfArray)sEntry.Value;
if(pArr.ArrayList.Count== 6)
{
if (pArr[1].ToString() == "/FitR")
{
nDesColl.Add(sEntry.Key);
}
}
}
if (nDesColl.Count > 0)
{
foreach (object keyVal in nDesColl)
{
PdfNumber pNo = new PdfNumber(0);
PdfArray pArr = (PdfArray)nDest[keyVal];
pArr[1] = PdfName.XYZ;
pArr[4] = (PdfObject)pNo;
pArr.ArrayList.RemoveAt(5);
PdfObject fVal = (PdfObject)pArr;
nDest[keyVal] = fVal;
}
}
using (PdfStamper stamper = new PdfStamper(pdfR, new FileStream(dPDFFile, FileMode.Create)))
{
}