アンパサンドでリンクを作成するとき。代わりに生成されたpdfで&
、私は持っています&
そのせいでリンク切れ
私は itextsharp と xmlworker を使用して ASP.NET プロジェクトに取り組んでいます。
デモhttp://demo.itextsupport.com/xmlworker/でもテストしましたが、同じ問題が発生しました。
私のために働く解決策:
// we create the reader
var reader = new PdfReader(new FileStream(path, FileMode.Open));
// we retrieve the total number of pages
var n = reader.NumberOfPages;
for (var page = 1; page <= n; page++)
{
//Get the current page
var pageDictionary = reader.GetPageN(page);
//Get all of the annotations for the current page
var annots = pageDictionary.GetAsArray(PdfName.ANNOTS);
//Loop through each annotation
if ((annots != null) && (annots.Length != 0))
foreach (var a in annots.ArrayList)
{
//Convert the itext-specific object as a generic PDF object
var annotationDictionary = (PdfDictionary)PdfReader.GetPdfObject(a);
//Make sure this annotation has a link
if (!annotationDictionary.Get(PdfName.SUBTYPE).Equals(PdfName.LINK))
continue;
//Make sure this annotation has an ACTION
if (annotationDictionary.Get(PdfName.A) == null)
continue;
//Get the ACTION for the current annotation
var annotationAction = (PdfDictionary)annotationDictionary.Get(PdfName.A);
//Test if it is a URI action (There are tons of other types of actions, some of which might mimic URI, such as JavaScript, but those need to be handled seperately)
if (!annotationAction.Get(PdfName.S).Equals(PdfName.URI)) continue;
var destination = annotationAction.GetAsString(PdfName.URI).ToString();
destination = destination.Replace("&", "&");
annotationAction.Put(PdfName.URI, new PdfString(destination));
}
}