繁体   English   中英

如何在C#中使用iTextSharp编辑PDF文件中的命名目标?

[英]How to edit named destination in PDF file using iTextSharp with C#?

在这里,我想使用带有iTextSharp.dll的C#编辑PDF文件中已经存在的命名目标。

在这里,我展示了示例PS脚本。

旧:

[/Dest /bmkaff1 /View [/FitR 59 516 435 504] /DEST pdfmark

更新:

[/Dest /bmkaff1 /View [/XYZ 59 516 0] /DEST pdfmark

PDF词典屏幕截图:

在此处输入图片说明

原始PDF文件

在此处输入图片说明

更新的PDF文件

在此处输入图片说明

注意:

通过更新PS文件生成更新的PDF文件

我为我的问题找到了解决方案。

首先,我使用GetNamedDestination()方法读取命名的目标,然后检查条件,然后编辑命名的目标值。

这是我的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)))
{
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM