Обновление ссылок в PDF

Следующий фрагмент кода также работает с библиотекой Aspose.PDF.Drawing.

Обновление ссылок в PDF файле

Как обсуждалось в разделе Добавление гиперссылки в PDF файл, класс LinkAnnotation позволяет добавлять ссылки в PDF файл. Существует также похожий класс, используемый для получения существующих ссылок из PDF файлов. Используйте это, если вам нужно обновить существующую ссылку. Чтобы обновить существующую ссылку:

  1. Загрузите PDF файл.
  2. Перейдите на определенную страницу в PDF файле.
  3. Укажите место назначения ссылки с помощью свойства Destination объекта GoToAction.
  4. Страница назначения указывается с помощью конструктора XYZExplicitDestination.

Установка цели ссылки на страницу в том же документе

Следующий фрагмент кода показывает, как обновить ссылку в PDF файле и установить ее цель на вторую страницу документа. Следующий фрагмент кода показывает, как обновить ссылку в файле PDF и установить её цель на вторую страницу документа.

// Для полных примеров и файлов данных, пожалуйста, перейдите по ссылке https://github.com/aspose-pdf/Aspose.PDF-for-.NET
// Путь к директории документов.
string dataDir = RunExamples.GetDataDir_AsposePdf_LinksActions();
// Загрузить файл PDF
Document doc = new Document(dataDir + "UpdateLinks.pdf");
// Получить первую аннотацию ссылки с первой страницы документа
LinkAnnotation linkAnnot = (LinkAnnotation)doc.Pages[1].Annotations[1];
// Модификация ссылки: изменение места назначения
GoToAction goToAction = (GoToAction)linkAnnot.Action;
// Указать место назначения для объекта ссылки
// Первый параметр - это объект документа, второй - номер страницы назначения.
// Пятый аргумент - это коэффициент масштабирования при отображении соответствующей страницы. При использовании 2 страница будет отображаться с увеличением 200%
goToAction.Destination = new Aspose.Pdf.Annotations.XYZExplicitDestination(1, 1, 2, 2);
dataDir = dataDir + "PDFLINK_Modified_UpdateLinks_out.pdf";
// Сохранить документ с обновленной ссылкой
doc.Save(dataDir);

Установить адрес ссылки на веб-адрес

Для обновления гиперссылки, чтобы она указывала на веб-адрес, создайте объект GoToURIAction и передайте его в свойство Action аннотации LinkAnnotation. Следующий фрагмент кода показывает, как обновить ссылку в файле PDF и установить ее целью веб-адрес.

// Для полных примеров и файлов данных, пожалуйста, перейдите на https://github.com/aspose-pdf/Aspose.PDF-for-.NET
// Путь к каталогу документов.
string dataDir = RunExamples.GetDataDir_AsposePdf_LinksActions();
// Загрузить файл PDF
Document doc = new Document(dataDir + "UpdateLinks.pdf");

// Получить первую аннотацию ссылки с первой страницы документа
LinkAnnotation linkAnnot = (LinkAnnotation)doc.Pages[1].Annotations[1];
// Модификация ссылки: изменить действие ссылки и установить целью веб-адрес
linkAnnot.Action = new GoToURIAction("www.aspose.com");

dataDir = dataDir + "SetDestinationLink_out.pdf";
// Сохранить документ с обновленной ссылкой
doc.Save(dataDir);

Установить цель ссылки на другой PDF-файл

Следующий фрагмент кода показывает, как обновить ссылку в PDF-файле и установить её цель на другой PDF-файл.

// Для полных примеров и файлов данных, пожалуйста, перейдите по ссылке https://github.com/aspose-pdf/Aspose.PDF-for-.NET
// Путь к директории с документами.
string dataDir = RunExamples.GetDataDir_AsposePdf_LinksActions();
// Загрузить PDF-файл
Document document = new Document(dataDir + "UpdateLinks.pdf");

LinkAnnotation linkAnnot = (LinkAnnotation)document.Pages[1].Annotations[1];

GoToRemoteAction goToR = (GoToRemoteAction)linkAnnot.Action;
// Следующая строка обновляет назначение, не обновляйте файл
goToR.Destination = new XYZExplicitDestination(2, 0, 0, 1.5);
// Следующая строка обновляет файл
goToR.File = new FileSpecification(dataDir +  "input.pdf");

dataDir = dataDir + "SetTargetLink_out.pdf";
// Сохранить документ с обновленной ссылкой
document.Save(dataDir);

Обновить цвет текста LinkAnnotation

Аннотация ссылки не содержит текста. Аннотация ссылки не содержит текста.

// Для полных примеров и файлов данных, пожалуйста, перейдите на https://github.com/aspose-pdf/Aspose.PDF-for-.NET
// Путь к директории с документами.
string dataDir = RunExamples.GetDataDir_AsposePdf_LinksActions();
// Загрузка файла PDF
Document doc = new Document(dataDir + "UpdateLinks.pdf");
foreach (Annotation annotation in doc.Pages[1].Annotations)
{
    if (annotation is LinkAnnotation)
    {
        // Поиск текста под аннотацией
        TextFragmentAbsorber ta = new TextFragmentAbsorber();
        Rectangle rect = annotation.Rect;
        rect.LLX -= 10;
        rect.LLY -= 10;
        rect.URX += 10;
        rect.URY += 10;
        ta.TextSearchOptions = new TextSearchOptions(rect);
        ta.Visit(doc.Pages[1]);
        // Изменение цвета текста.
        foreach (TextFragment tf in ta.TextFragments)
        {
            tf.TextState.ForegroundColor = Color.Red;
        }
    }

}
dataDir = dataDir + "UpdateLinkTextColor_out.pdf";
// Сохранение документа с обновленной ссылкой
doc.Save(dataDir);