Jak dodawać i edytować adnotacje w plikach PDF w języku C#

Jak dodawać i edytować adnotacje w plikach PDF w języku C

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronPDF pozwala programistom C# dodawać, edytować i usuwać adnotacje PDF, w tym komentarze tekstowe i przypięte notatki, poprzez proste wywołania API jak AddTextAnnotation, co wzbogaca współpracę dokumentową i przepływy pracy przeglądu w aplikacjach biznesowych. X

Adnotacje pozwalają użytkownikom dodawać komentarze, przypomnienia lub dodatkowe informacje do określonych sekcji dokumentu. Ułatwiają one współpracę i komunikację podczas pracy z plikami PDF, umożliwiając użytkownikom dodawanie adnotacji, komentarzy i kontekstu do udostępnianych treści. Y

Adnotacje w plikach PDF służą różnym celom w procesach biznesowych: recenzenci mogą nanosić na dokumenty uwagi, zespoły mogą współpracować nad umowami bez modyfikowania oryginalnej treści, a zespoły ds. zapewnienia jakości mogą oznaczać problemy w dokumentach technicznych. Niezależnie od tego, czy tworzysz system zarządzania dokumentami, czy ulepszasz istniejące procesy pracy z plikami PDF, funkcje adnotacji IronPDF płynnie integrują się z możliwościami tworzenia i edycji plików PDF w języku C#. Organizacje, które potrzebują zaawansowanych funkcji bezpieczeństwa oraz możliwości dodawania adnotacji, mogą zapoznać się z naszym kompleksowym samouczkiem dotyczącym zabezpieczeń plików PDF.

Szybki start: Dodawanie adnotacji do plików PDF za pomocą IronPDF

Ten krótki przewodnik pokazuje, jak dodawać adnotacje tekstowe do dokumentu PDF przy użyciu IronPDF w języku C#. Wystarczy kilka linii kodu, aby programiści mogli ulepszyć swoje pliki PDF, dodając komentarze lub notatki, zwiększając interaktywność dokumentów i ułatwiając współpracę. Zacznij od załadowania PDF i użycia metody AddTextAnnotation, aby szybkom wstawić adnotacje.

  1. Install IronPDF with NuGet Package Manager

    PM > Install-Package IronPdf
  2. Skopiuj i uruchom ten fragment kodu.

    PdfDocument.FromFile("input.pdf")
        .Annotations.Add(new TextAnnotation(0) { Title="Note", Contents="Review this section.", X=50, Y=700 })
        .SaveAs("annotated.pdf");
  3. Wdrożenie do testowania w środowisku produkcyjnym

    Rozpocznij używanie IronPDF w swoim projekcie już dziś z darmową wersją próbną

    arrow pointer


Jak dodać adnotacje do pliku PDF?

Annotations Title Contents X Y

Adnotacje w plikach PDF umożliwiają dodawanie komentarzy przypominających "karteczki samoprzylepne" do stron PDF. Korzystając z metody Add właściwości Annotations, adnotacje mogą być dodawane programowo.

Adnotacje tekstowe w plikach PDF działają podobnie jak karteczki samoprzylepne w dokumentach papierowych. Pojawiają się one na stronie jako małe ikony, które po kliknięciu wyświetlają pełny tekst komentarza. To nieinwazyjne podejście zapewnia czytelność dokumentu, jednocześnie oferując niezbędne mechanizmy informacji zwrotnej. Podczas pracy z konwersjami HTML do PDF można dodawać adnotacje po konwersji, aby zaznaczyć obszary wymagające weryfikacji lub zapewnić dodatkowy kontekst. Ta funkcja jest szczególnie przydatna w połączeniu z renderowaniem JavaScript dla treści dynamicznych, które mogą wymagać dodatkowych wyjaśnień.

PoradyWszystkie indeksy stron stosują indeksowanie od zera.

:path=/static-assets/pdf/content-code-examples/how-to/annotation-add-annotation.cs
using IronPdf;
using IronPdf.Annotations;

ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Annotation</h1>");

// Create a PDF annotation object on a specified page index
TextAnnotation annotation = new TextAnnotation(0)
{
    Title = "This is the title",
    Contents = "This is the long 'sticky note' comment content...",
    X = 50,
    Y = 700,
};

// Add the annotation
pdf.Annotations.Add(annotation);
pdf.SaveAs("annotation.pdf");
Imports IronPdf
Imports IronPdf.Annotations

Dim renderer As New ChromePdfRenderer()
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>Annotation</h1>")

' Create a PDF annotation object on a specified page index
Dim annotation As New TextAnnotation(0) With {
    .Title = "This is the title",
    .Contents = "This is the long 'sticky note' comment content...",
    .X = 50,
    .Y = 700
}

' Add the annotation
pdf.Annotations.Add(annotation)
pdf.SaveAs("annotation.pdf")
$vbLabelText   $csharpLabel

Klasa TextAnnotation zapewnia kilka właściwości do dostosowania:

  • Title: Tekst nagłówka adnotacji, zwykle wyświetlany w oknie adnotacji
  • Contents: Główne ciało tekstu adnotacji
  • X, Y: Współrzędne określające, gdzie ikona adnotacji pojawia się na stronie
  • PageIndex: Numer strony zaczynający się od zera, gdzie powinna być umieszczona adnotacja

W przypadku bardziej złożonych procesów obiegu dokumentów warto rozważyć połączenie adnotacji z innymi funkcjami IronPDF, takimi jak podpisy cyfrowe do procesów zatwierdzania lub znaki wodne do wersjonowania dokumentów. Podczas pracy z poufnymi dokumentami można również zintegrować adnotacje z uprawnieniami i hasłami do plików PDF, aby kontrolować, kto może wyświetlać lub modyfikować adnotacje.

Jakie właściwości mogę ustawić dla adnotacji tekstowych?

Klasa TextAnnotation oferuje kilka właściwości do dostosowania poza wymienne podstawowe:

  • Title: Tekst nagłówka adnotacji, zwykle wyświetlany w oknie adnotacji
  • Contents: Główne ciało tekstu adnotacji
  • X, Y: Współrzędne określające, gdzie ikona adnotacji pojawia się na stronie
  • PageIndex: Numer strony zaczynający się od zera, gdzie powinna być umieszczona adnotacja
  • Subject: Opcjonalna linia temat dla kategoryzacji adnotacji
  • Icon: Wizualna reprezentacja adnotacji (np. Uwaga, Komentarz, Pomoc)
  • Open: Czy adnotacja popup jest domyślnie otwarta

Te właściwości umożliwiają programistom tworzenie bogatych, kontekstowych adnotacji, które usprawniają komunikację w dokumentach. W przypadku zaawansowanych procesów obejmujących wiele typów dokumentów warto rozważyć konwersję plików RTF do formatu PDF lub konwersję plików Markdown do formatu PDF, aby zachować adnotacje w różnych formatach źródłowych.

Jak działają współrzędne w adnotacjach PDF?

Współrzędne PDF zaczynają się od lewego dolnego rogu strony, w przeciwieństwie do wielu frameworków UI, które używają lewego górnego rogu jako punktu początkowego. Właściwości X i Y określają, gdzie pojawia się ikona adnotacji na stronie, mierzone w punktach (1/72 cala). Upewnij się, że obliczenia współrzędnych uwzględniają tę różnicę podczas programowego pozycjonowania adnotacji.

Przy obliczaniu pozycji adnotacji należy pamiętać, że standardowe strony formatu US Letter mają wymiary 8,5 x 11 cali (612 x 792 punktów). Strony formatu A4 mają wymiary 595 x 842 punktów. Aby uzyskać precyzyjne pozycjonowanie, przed umieszczeniem adnotacji warto programowo pobrać wymiary strony. Ma to szczególne znaczenie podczas pracy z niestandardowymi rozmiarami papieru lub wdrażania responsywnego rozmieszczania adnotacji w oparciu o treść.

Plik PDF z adnotacjami

Adnotacje w powyższym dokumencie PDF można wyświetlić w przeglądarce Chrome.


Jak odzyskać i edytować istniejące adnotacje?

Pobieranie i edycja adnotacji w plikach PDF usprawnia współpracę, zwiększając przejrzystość, dokładność i użyteczność. Uzyskaj dostęp do kolekcji adnotacji przez właściwość Annotations i aktualizuj właściwości takie jak Header, Body, X, Y i więcej z nowymi informacjami.

Podczas pracy z istniejącymi plikami PDF, zwłaszcza tymi pochodzącymi z konwersji adresów URL lub importu plików DOCX, może zaistnieć potrzeba modyfikacji adnotacji dodanych przez innych użytkowników lub systemy. IronPDF zapewnia pełny dostęp do zbioru adnotacji, umożliwiając programowe przeglądanie, identyfikowanie i aktualizowanie określonych adnotacji. Ta funkcja jest niezbędna podczas wdrażania procesów przeglądu dokumentów lub podczas integracji z istniejącymi systemami zarządzania dokumentami.

:path=/static-assets/pdf/content-code-examples/how-to/annotation-edit-annotation.cs
using IronPdf;
using IronPdf.Annotations;
using System.Linq;

PdfDocument pdf = PdfDocument.FromFile("annotation.pdf");

// Retrieve annotation collection
PdfAnnotationCollection annotationCollection = pdf.Annotations;

// Select the first annotation
TextAnnotation annotation = (TextAnnotation)annotationCollection.First();

// Edit annotation
annotation.Title = "New title";
annotation.Contents = "New content...";
annotation.X = 150;
annotation.Y = 800;

pdf.SaveAs("editedAnnotation.pdf");
Imports IronPdf
Imports IronPdf.Annotations
Imports System.Linq

Private pdf As PdfDocument = PdfDocument.FromFile("annotation.pdf")

' Retrieve annotation collection
Private annotationCollection As PdfAnnotationCollection = pdf.Annotations

' Select the first annotation
Private annotation As TextAnnotation = CType(annotationCollection.First(), TextAnnotation)

' Edit annotation
annotation.Title = "New title"
annotation.Contents = "New content..."
annotation.X = 150
annotation.Y = 800

pdf.SaveAs("editedAnnotation.pdf")
$vbLabelText   $csharpLabel

Proces edycji zachowuje wszystkie pozostałe właściwości i treść dokumentu, zapewniając, że zmodyfikowana zostanie tylko określona adnotacja. Jest to szczególnie przydatne w procesach recenzowania, gdzie adnotacje mogą wymagać aktualizacji w oparciu o poprawki dokumentów lub zmieniające się wymagania. Aby zapewnić kompleksowe zarządzanie dokumentami, warto połączyć edycję adnotacji z manipulacją metadanymi, co pozwoli śledzić wersje dokumentów i historię zmian.

Dlaczego miałbym edytować istniejące adnotacje?

Edycja adnotacji staje się niezbędna w procesach współpracy nad dokumentami, gdzie informacje zwrotne wymagają aktualizacji w oparciu o poprawki, niejasne komentarze wymagają wyjaśnienia, a adnotacje muszą zostać przeniesione w inne miejsce z powodu zmian w treści. Ta funkcja gwarantuje, że recenzje dokumentów pozostają aktualne i istotne przez cały cykl weryfikacji.

W środowiskach Enterprise edycja adnotacji często integruje się z procesami zatwierdzania, w których przełożeni mogą potrzebować zmodyfikować komentarze recenzentów przed ostatecznym zatwierdzeniem. Ponadto, gdy dokumenty są tłumaczone lub lokalizowane, adnotacje mogą wymagać aktualizacji w celu odzwierciedlenia zmian językowych lub dostosowań kulturowych. W takich sytuacjach obsługa UTF-8 i języków międzynarodowych przez IronPDF zapewnia prawidłowe wyświetlanie adnotacji w różnych językach i zestawach znaków.

Co dzieje się z innymi właściwościami dokumentu podczas edycji adnotacji?

Proces edycji zachowuje wszystkie pozostałe właściwości i treść dokumentu, zapewniając, że zmodyfikowana zostanie tylko określona adnotacja. Struktura dokumentu, formatowanie, zasoby osadzone i inne adnotacje pozostają niezmienione, co pozwala zachować integralność pliku PDF, umożliwiając jednocześnie ukierunkowane aktualizacje w odpowiedzi na konkretne uwagi recenzentów.

Takie selektywne podejście do edycji ma kluczowe znaczenie dla zachowania integralności dokumentu, zwłaszcza w branżach podlegających regulacjom, gdzie należy unikać fałszowania dokumentów. Proces ten zachowuje podpisy cyfrowe, pola formularzy, zakładki i wszystkie inne funkcje plików PDF. W przypadku dokumentów wymagających ścieżek audytu warto rozważyć wdrożenie śledzenia historii zmian wraz z modyfikacjami adnotacji.

Plik PDF z edytowaną adnotacją

Adnotacje w powyższym dokumencie PDF można wyświetlić w przeglądarce Chrome.


Icon Quote related to Plik PDF z edytowaną adnotacją

Moją ulubioną biblioteką tego typu jest IronPDF. Umożliwia ona szybkie i efektywne manipulowanie plikami PDF. Posiada także wiele cennych funkcji, takich jak eksport do formatu PDF/A i cyfrowe podpisywanie dokumentów PDF.

Milan Jovanovic related to Plik PDF z edytowaną adnotacją

Milan Jovanovic

Microsoft MVP

Zobacz studium przypadku
Icon Quote related to Plik PDF z edytowaną adnotacją

IronOCR pozwala nam oszczędzić 40 000 USD rocznie na ręcznym przetwarzaniu, jednocześnie zwiększając produktywność i uwalniając zasoby do zadań o wysokim wpływie. Gorąco polecam.

Brent Matzelle related to Plik PDF z edytowaną adnotacją

Brent Matzelle

Dyrektor technologiczny, OPYN

Zobacz studium przypadku
Icon Quote related to Plik PDF z edytowaną adnotacją

IronSuite odgrywa kluczową rolę w naszej działalności. Są to narzędzia zwiększające wydajność w całej firmie, w tym tworzenie planów pięter i poprawa zarządzania zapasami.

David Jones related to Plik PDF z edytowaną adnotacją

David Jones

Główny inżynier oprogramowania, Agorus Build

Zobacz studium przypadku

Jak usunąć adnotacje z dokumentów PDF?

Usuń niepotrzebne lub przestarzałe adnotacje, korzystając z następujących metod: RemoveAt, RemoveAllAnnotationsForPage i Clear.

  • RemoveAt: Usuń pojedynczą adnotację z określonym indeksem.
  • RemoveAllAnnotationsForPage: Usuń wszystkie adnotacje na określonej stronie.
  • Clear: Usuń wszystkie adnotacje w dokumencie.

Usunięcie adnotacji ma kluczowe znaczenie dla sfinalizowania dokumentu. Po uwzględnieniu opinii i wprowadzeniu niezbędnych zmian warto uporządkować komentarze recenzentów przed udostępnieniem ostatecznej wersji. Proces ten dobrze integruje się z innymi funkcjami IronPDF, takimi jak kompresja plików PDF, umożliwiając tworzenie przejrzystych, zoptymalizowanych dokumentów przeznaczonych do dystrybucji. W przypadku dokumentów wymagających archiwizacji warto rozważyć konwersję do formatu PDF/A po usunięciu adnotacji, aby zapewnić zgodność z wymogąmi długoterminowej archiwizacji.

Jak mogę usunąć pojedynczą adnotację?

Aby usunąć pojedynczą adnotację, użyj metody RemoveAt z odpowiednim indeksem bazującym na indeksie kolekcji adnotacji.

:path=/static-assets/pdf/content-code-examples/how-to/annotation-remove-single-annotation.cs
using IronPdf;

PdfDocument pdf = PdfDocument.FromFile("multipleAnnotation.pdf");

// Remove a single annotation with specified index
pdf.Annotations.RemoveAt(1);

pdf.SaveAs("removeSingleAnnotation.pdf");
Imports IronPdf

Private pdf As PdfDocument = PdfDocument.FromFile("multipleAnnotation.pdf")

' Remove a single annotation with specified index
pdf.Annotations.RemoveAt(1)

pdf.SaveAs("removeSingleAnnotation.pdf")
$vbLabelText   $csharpLabel

Podczas programowego usuwania adnotacji należy pamiętać, że zbiór adnotacji jest ponownie indeksowany po każdym usunięciu. Jeśli chcesz usunąć wiele konkretnych adnotacji, przejdź przez zbiór od końca lub zebraj najpierw adnotacje do usunięcia, a następnie usuń je w odwrotnej kolejności. Takie podejście zapobiega problemom z przesunięciem indeksu, które mogłyby prowadzić do usunięcia niewłaściwych adnotacji.

Usunięto pojedynczą adnotację w pliku PDF

Adnotacje w powyższym dokumencie PDF można wyświetlić w przeglądarce Chrome.

Jak mogę usunąć wszystkie adnotacje jednocześnie?

Aby usunąć wszystkie adnotacje na danej stronie, użyj metody RemoveAllAnnotationsForPage i określ indeks strony. Jeśli chcesz usunąć wszystkie adnotacje w całym dokumencie, wywołaj metodę Clear na właściwości Annotations.

Ta funkcja masowego usuwania jest szczególnie przydatna podczas przygotowywania dokumentów do ostatecznej dystrybucji lub podczas wdrażania systemów wersjonowania dokumentów, w których konieczne jest usunięcie adnotacji z poprzednich cykli przeglądu. Rozważ połączenie tego z edycją metadanych w celu aktualizacji właściwości dokumentu i wskazania statusu recenzji. W przypadku przepływów pracy wymagających zdezynfekowanych dokumentów, eksploruj opcje [sanitacji PDF](https://ironpdf.com/how to sanitize-pdf/) w celu usunięcia wszelkich potencjalnie wrażliwych informacji, w tym adnotacji.

:path=/static-assets/pdf/content-code-examples/how-to/annotation-remove-all-annotation.cs
using IronPdf;

PdfDocument pdf = PdfDocument.FromFile("multipleAnnotation.pdf");

// Remove all annotaions on a specified page
pdf.Annotations.RemoveAllAnnotationsForPage(0);

// Remove all annotaions on the document
pdf.Annotations.Clear();

pdf.SaveAs("removeAllAnnotation.pdf");
Imports IronPdf

Private pdf As PdfDocument = PdfDocument.FromFile("multipleAnnotation.pdf")

' Remove all annotaions on a specified page
pdf.Annotations.RemoveAllAnnotationsForPage(0)

' Remove all annotaions on the document
pdf.Annotations.Clear()

pdf.SaveAs("removeAllAnnotation.pdf")
$vbLabelText   $csharpLabel

Kiedy należy używać funkcji zbiorczego usuwania adnotacji?

Usuwanie zbiorcze jest idealnym rozwiązaniem podczas finalizowania dokumentów do dystrybucji, tworzenia czystych wersji do celów archiwizacji lub wdrażania wersjonowania dokumentów, gdzie konieczne jest usunięcie adnotacji z poprzednich cykli przeglądu. Takie podejście pozwala zaoszczędzić czas w porównaniu z usuwaniem adnotacji pojedynczo i gwarantuje, że żadne komentarze recenzentów nie pozostaną przypadkowo w dokumentach produkcyjnych.

Ponadto masowe usuwanie jest niezbędne podczas przygotowywania dokumentów dla systemów przetwarzania automatycznego, które mogą nie obsługiwać adnotacji poprawnie, lub podczas konwersji plików PDF z adnotacjami do innych formatów. W środowiskach o wysokim poziomie bezpieczeństwa usunięcie wszystkich adnotacji przed dystrybucją zapobiega nieumyślnemu ujawnieniu wewnętrznych komentarzy recenzujących lub poufnych opinii, które nie były przeznaczone dla odbiorców zewnętrznych.


Jak dodać klikalne linki wewnętrzne do PDF?

LinkAnnotation DestinationType Hidden

Klasa LinkAnnotation tworzy klikalny prostokąt na stronie, który po kliknięciu nawigować do innej strony w tym samym pliku PDF. Jest idealna do budowania spersonalizowanych spisów treści, odnośników, przycisków "wróć na górę" i innej nawigacji wewnątrz dokumentów. Podobnie jak TextAnnotation, LinkAnnotation jest dodawana przez metodę Annotations.Add, integrujący się z tą samą kolekcją, którą już używasz dla komentarzy i przypiętych notatek.

Pozycja jest ustawiana za pomocą X, Y, Width i Height (w punktach, gdzie 72 punkty = 1 cal), lub poprzez bezpośrednie przypisanie Rectangle. Zarówno strona, na której umieszczono link, jak i strona docelowa, są określone za pomocą indeksów bazujących na zerze w konstruktorze.

PoradyX, Y, Width i Height wszystkie zwracają -1, dopóki ich nie ustawisz. Zapomnienie o ich ustawieniu tworzy nieprawidłową adnotację, więc zawsze przydzielaj klikalny obszar.

:path=/static-assets/pdf/content-code-examples/how-to/annotation-link-basic.cs
using IronPdf;
using IronPdf.Annotations;

// Load an existing multi-page PDF
PdfDocument pdf = PdfDocument.FromFile("multipage.pdf");

// Create a clickable link on page 1 (index 0) that jumps to page 6 (index 5).
// Page indexes are zero-based. The default DestinationType (Page) fits the
// whole destination page in the viewer when the link is clicked.
LinkAnnotation link = new LinkAnnotation(pageIndex: 0, destinationPageIndex: 5)
{
    X = 72,        // points from the LEFT edge of the page (72 points = 1 inch)
    Y = 700,       // BOTTOM edge of the clickable area (PDF origin is bottom-left)
    Width = 200,
    Height = 20,
    Contents = "Go to Chapter 6"
};

// LinkAnnotation lives in the same collection as TextAnnotation
pdf.Annotations.Add(link);
pdf.SaveAs("internal-link.pdf");
Imports IronPdf
Imports IronPdf.Annotations

' Load an existing multi-page PDF
Dim pdf As PdfDocument = PdfDocument.FromFile("multipage.pdf")

' Create a clickable link on page 1 (index 0) that jumps to page 6 (index 5).
' Page indexes are zero-based. The default DestinationType (Page) fits the
' whole destination page in the viewer when the link is clicked.
Dim link As New LinkAnnotation(pageIndex:=0, destinationPageIndex:=5) With {
    .X = 72,        ' points from the LEFT edge of the page (72 points = 1 inch)
    .Y = 700,       ' BOTTOM edge of the clickable area (PDF origin is bottom-left)
    .Width = 200,
    .Height = 20,
    .Contents = "Go to Chapter 6"
}

' LinkAnnotation lives in the same collection as TextAnnotation
pdf.Annotations.Add(link)
pdf.SaveAs("internal-link.pdf")
$vbLabelText   $csharpLabel

Oprócz lokalizacji, kilka właściwości kontroluje wygląd i metadane: Color ustawia kolor obramowania linku, Contents dostarcza opisowy tekst lub podpowiedź, a Title nazywa adnotację. Dla niewidocznego klikalnego nakładki na istniejącej treści, pozostaw Color niewstawionym i ustaw Hidden = true (pokazane później w tym przewodniku).

Jaka jest różnica między adnotacją linku a adnotacją tekstową?

TextAnnotation to "przypięta notatka": ikona komentarza, która wyświetla tekst po kliknięciu. LinkAnnotation to kontrola nawigacyjna, niewidoczny lub obramowany klikalny obszar, który przenosi czytelnika do strony docelowej. Oba dzielą kolekcję Annotations oraz te same operacje Add, RemoveAt, RemoveAllAnnotationsForPage i Clear, dzięki czemu można mieszać komentarze i linki nawigacyjne w tym samym dokumencie i nimi zarządzać.

Ponieważ LinkAnnotation kieruje na strony w tym samym pliku, uzupełnia funkcje konturów i zakładek IronPDF (które tworzą drzewo nawigacji paska bocznego widoku) oraz automatycznie generowana spis treści dla renderowania HTML do PDF. Użyj zakładek dla paska bocznego, funkcji TOC dla renderowanego HTML i LinkAnnotation, gdy potrzebujesz klikalnych punktów w istniejącym PDF.

Jak kontrolować, co widzi czytelnik w miejscu docelowym?

Właściwość DestinationType używa istniejącej enumy BookmarkDestinations do kontrolowania, jak strona docelowa jest wyświetlana po kliknięciu linku. Domyślnie jest BookmarkDestinations.Page, co dopasowuje całą stronę docelową w oknie. Inne wartości przewijają do pozycji, ustalają poziom powiększenia lub dopasowują określony prostokąt, używając współrzędnych DestinationTop, DestinationLeft, DestinationRight, DestinationBottom i DestinationZoom.

Wartość BookmarkDestinations Zachowanie po kliknięciu Używane współrzędne docelowe
Page (domyślnie) Dopasuj całą stronę docelową w oknie. none
PageY Przewiń do pozycji pionowej; pokaż pełną szerokość. DestinationTop
PageX Przewiń do pozycji poziomej; pokaż pełną wysokość. DestinationLeft
PageZoom Przejdź do pozycji i ustaw poziom powiększenia. DestinationLeft, DestinationTop, DestinationZoom
PageRect Dopasuj określony prostokąt na stronie. DestinationLeft, DestinationBottom, DestinationRight, DestinationTop
PageBounds Dopasuj stronę według obszaru ograniczenia. none
PageBoundsY Tak samo jak PageY, bazując na obszarze ograniczenia strony. DestinationTop
PageBoundsX Tak samo jak PageX, bazując na obszarze ograniczenia strony. DestinationLeft

PoradyDestinationZoom = 0 oznacza 'dziedzicz bieżące powiększenie', a nie zero powiększenia. Ustaw wartosc taka jak 150 dla 150%.

:path=/static-assets/pdf/content-code-examples/how-to/annotation-link-destination-types.cs
using IronPdf;
using IronPdf.Annotations;
using IronPdf.Bookmarks;

PdfDocument pdf = PdfDocument.FromFile("multipage.pdf");

// 1. Scroll to a specific vertical position on the destination page (full width shown)
LinkAnnotation scrollLink = new LinkAnnotation(0, 2)
{
    X = 72, Y = 680, Width = 300, Height = 16,
    DestinationType = BookmarkDestinations.PageY,
    DestinationTop = 400        // scroll so y=400 sits at the top of the view
};
pdf.Annotations.Add(scrollLink);

// 2. Jump to a position AND set the zoom level
LinkAnnotation zoomLink = new LinkAnnotation(0, 3, "Zoom to figure")
{
    X = 72, Y = 650, Width = 200, Height = 16,
    DestinationType = BookmarkDestinations.PageZoom,
    DestinationLeft = 100,
    DestinationTop = 500,
    DestinationZoom = 150       // 150% zoom; use 0 to inherit the current zoom
};
pdf.Annotations.Add(zoomLink);

// 3. Fit a specific rectangle on the destination page
LinkAnnotation rectLink = new LinkAnnotation(0, 4)
{
    X = 72, Y = 620, Width = 200, Height = 16,
    DestinationType = BookmarkDestinations.PageRect,
    DestinationLeft = 50,
    DestinationBottom = 100,
    DestinationRight = 550,
    DestinationTop = 700
};
pdf.Annotations.Add(rectLink);

pdf.SaveAs("link-destinations.pdf");
Imports IronPdf
Imports IronPdf.Annotations
Imports IronPdf.Bookmarks

Dim pdf As PdfDocument = PdfDocument.FromFile("multipage.pdf")

' 1. Scroll to a specific vertical position on the destination page (full width shown)
Dim scrollLink As New LinkAnnotation(0, 2) With {
    .X = 72, .Y = 680, .Width = 300, .Height = 16,
    .DestinationType = BookmarkDestinations.PageY,
    .DestinationTop = 400        ' scroll so y=400 sits at the top of the view
}
pdf.Annotations.Add(scrollLink)

' 2. Jump to a position AND set the zoom level
Dim zoomLink As New LinkAnnotation(0, 3, "Zoom to figure") With {
    .X = 72, .Y = 650, .Width = 200, .Height = 16,
    .DestinationType = BookmarkDestinations.PageZoom,
    .DestinationLeft = 100,
    .DestinationTop = 500,
    .DestinationZoom = 150       ' 150% zoom; use 0 to inherit the current zoom
}
pdf.Annotations.Add(zoomLink)

' 3. Fit a specific rectangle on the destination page
Dim rectLink As New LinkAnnotation(0, 4) With {
    .X = 72, .Y = 620, .Width = 200, .Height = 16,
    .DestinationType = BookmarkDestinations.PageRect,
    .DestinationLeft = 50,
    .DestinationBottom = 100,
    .DestinationRight = 550,
    .DestinationTop = 700
}
pdf.Annotations.Add(rectLink)

pdf.SaveAs("link-destinations.pdf")
$vbLabelText   $csharpLabel

Aby nałożyć klikalny link na tekst, który już istnieje na stronie, wyodrębnij tekst za pomocą PdfPage.TextChunks i użyj BoundingBox dla każdego kawałka, aby dopasować rozmiar linku. Ponieważ współrzędne PDF pochodzą z dolnego-lewego rogu strony, przypisz BoundingBox.Bottom do Y, a nie BoundingBox.Top, co umieściłoby klikalny obszar nad widocznym tekstem. Ustaw Hidden = true, aby usunąć widoczną krawędź, tak aby link siedział niewidocznie nad renderowanym tekstem.

To jest podstawa do przekształcenia statycznego, drukowanego spisu treści w nawigowalny. Poniższy przykład skanuje stronę spisu treści, dopasowuje każdą pozycję na podstawie tekstu i nakłada niewidoczny LinkAnnotation, który przeskakuje do właściwej strony.

:path=/static-assets/pdf/content-code-examples/how-to/annotation-link-toc.cs
using IronPdf;
using IronPdf.Annotations;
using IronPdf.Bookmarks;
using System;
using System.Collections.Generic;

PdfDocument pdf = PdfDocument.FromFile("report-with-toc.pdf");

// Zero-based index of the page that holds the table-of-contents text
int tocPageIndex = 1;

// Map each TOC entry's leading text to the page index it should jump to
var tocEntries = new Dictionary<string, int>
{
    { "Introduction", 2 },
    { "Methodology",  4 },
    { "Results",      6 },
    { "Conclusion",   9 },
};

// Walk the text chunks on the TOC page and overlay a clickable link on each match
foreach (var chunk in pdf.Pages[tocPageIndex].TextChunks)
{
    string text = chunk.Contents.Trim();

    foreach (var entry in tocEntries)
    {
        if (!text.StartsWith(entry.Key)) continue;

        var box = chunk.BoundingBox;
        pdf.Annotations.Add(new LinkAnnotation(tocPageIndex, entry.Value)
        {
            X = (int)box.Left,
            Y = (int)box.Bottom,                       // Bottom, NOT Top (PDF origin is bottom-left)
            Width = (int)Math.Max(box.Width, 400),
            Height = (int)Math.Abs(box.Top - box.Bottom),
            DestinationType = BookmarkDestinations.PageY,
            DestinationTop = 792,                      // top of a US Letter page
            Hidden = true                              // invisible overlay on the existing TOC text
        });
        break;
    }
}

pdf.SaveAs("clickable-toc.pdf");
Imports IronPdf
Imports IronPdf.Annotations
Imports IronPdf.Bookmarks
Imports System
Imports System.Collections.Generic

Dim pdf As PdfDocument = PdfDocument.FromFile("report-with-toc.pdf")

' Zero-based index of the page that holds the table-of-contents text
Dim tocPageIndex As Integer = 1

' Map each TOC entry's leading text to the page index it should jump to
Dim tocEntries As New Dictionary(Of String, Integer) From {
    {"Introduction", 2},
    {"Methodology", 4},
    {"Results", 6},
    {"Conclusion", 9}
}

' Walk the text chunks on the TOC page and overlay a clickable link on each match
For Each chunk In pdf.Pages(tocPageIndex).TextChunks
    Dim text As String = chunk.Contents.Trim()

    For Each entry In tocEntries
        If Not text.StartsWith(entry.Key) Then Continue For

        Dim box = chunk.BoundingBox
        pdf.Annotations.Add(New LinkAnnotation(tocPageIndex, entry.Value) With {
            .X = CInt(box.Left),
            .Y = CInt(box.Bottom),                       ' Bottom, NOT Top (PDF origin is bottom-left)
            .Width = CInt(Math.Max(box.Width, 400)),
            .Height = CInt(Math.Abs(box.Top - box.Bottom)),
            .DestinationType = BookmarkDestinations.PageY,
            .DestinationTop = 792,                      ' top of a US Letter page
            .Hidden = True                              ' invisible overlay on the existing TOC text
        })
        Exit For
    Next
Next

pdf.SaveAs("clickable-toc.pdf")
$vbLabelText   $csharpLabel

Czy mogę tworzyć linki "Wstecz na górę" lub linki na tej samej stronie?

Tak. Linki na tej samej stronie, gdzie pageIndex jest równe destinationPageIndex, są w pełni obsługiwane i to typowy sposób na budowanie przycisku "wstecz na górę". Połącz link na tej samej stronie z DestinationType = BookmarkDestinations.PageY i wysoką wartością DestinationTop, tak aby kliknięcie przewijało czytelnika na górę bieżącej strony. Dodaj ten sam link do dolnej części każdej strony, aby dać długim raportom jednolitą kontrolę powrotu na górę.


Jakie są najlepsze praktyki dotyczące pracy z adnotacjami w plikach PDF?

Wdrażając funkcje adnotacji w swoich aplikacjach, należy wziąć pod uwagę następujące najlepsze praktyki:

  1. Układ współrzędnych: Współrzędne w pliku PDF zaczynają się od lewego dolnego rogu strony, w przeciwieństwie do wielu frameworków UI, które stosują punkt początkowy w lewym górnym rogu. Upewnij się, że obliczenia współrzędnych uwzględniają tę różnicę.

  2. Optymalizacja wydajności: Podczas dodawania wielu adnotacji warto rozważyć operacje zbiorcze zamiast zapisywania po każdym dodaniu. Takie podejście poprawia wydajność, zwłaszcza podczas pracy z dużymi plikami PDF.

  3. Widoczność adnotacji: Nie wszystkie przeglądarki plików PDF wyświetlają adnotacje w identyczny sposób. Przetestuj swoje pliki PDF z adnotacjami w różnych przeglądarkach, aby zapewnić spójne wrażenia użytkownika.

  4. Integracja z formularzami: Adnotacje uzupełniają formularze PDF, zapewniając pomoc kontekstową lub instrukcje bez modyfikowania struktury formularza.

  5. Kwestie bezpieczeństwa: Podczas pracy z dokumentami wrażliwymi należy pamiętać, że adnotacje mogą zawierać informacje poufne. Należy wdrożyć odpowiednie środki bezpieczeństwa w celu ochrony treści opatrzonych adnotacjami.

  6. Dostępność: Rozważ dodanie adnotacji, które zwiększą dostępność dokumentu, zapewniając dodatkowy kontekst dla użytkowników z niepełnosprawnościami. Jest to zgodne z wymaganiami zgodności PDF/UA dotyczącymi dokumentów dostępnych dla osób niepełnosprawnych.

Dlaczego układy współrzędnych mają znaczenie dla adnotacji?

Współrzędne PDF wywodzące się z lewego dolnego rogu mogą powodować zamieszanie wśród programistów przyzwyczajonych do systemów współrzędnych z lewym górnym rogiem jako punktem początkowym. Nieprawidłowe obliczenia współrzędnych mogą spowodować umieszczenie adnotacji w nieoczekiwanych miejscach, potencjalnie zasłaniając ważne treści lub wykraczając poza obszar strony. Zawsze należy odpowiednio konwertować współrzędne podczas integracji z frameworkami UI lub systemami wprowadzania danych przez użytkownika.

Zrozumienie układu współrzędnych staje się jeszcze ważniejsze podczas wdrażania funkcji takich jak "kliknij, aby dodać adnotację" lub podczas konwersji współrzędnych ekranowych z interakcji użytkownika na współrzędne PDF. W przypadku złożonych wymagań dotyczących pozycjonowania warto rozważyć wykorzystanie funkcji okna wyświetlania i Zoomu IronPDF, aby zapewnić prawidłowe wyświetlanie adnotacji niezależnie od warunków wyświetlania.

Jak mogę zoptymalizować wydajność podczas dodawania wielu adnotacji?

W przypadku dodawania wielu adnotacji należy zgrupować operacje, dodając wszystkie adnotacje do kolekcji przed zapisaniem dokumentu. Takie podejście ogranicza operacje wejścia/wyjścia plików i znacznie poprawia wydajność, zwłaszcza w przypadku dużych plików PDF lub podczas przetwarzania wielu dokumentów po kolei. Rozważ wdrożenie wskaźników postępu, aby zapewnić użytkownikom lepsze wrażenia podczas operacji zbiorczych.

// Example of batch annotation processing
var annotations = new List<TextAnnotation>();
for (int i = 0; i < 100; i++)
{
    annotations.Add(new TextAnnotation(0) 
    { 
        Title = $"Note {i}", 
        Contents = $"Content for note {i}",
        X = 50 + (i * 10),
        Y = 700 - (i * 20)
    });
}

// Add all annotations at once
foreach (var annotation in annotations)
{
    pdf.Annotations.Add(annotation);
}

// Save once after all additions
pdf.SaveAs("batch-annotated.pdf");
// Example of batch annotation processing
var annotations = new List<TextAnnotation>();
for (int i = 0; i < 100; i++)
{
    annotations.Add(new TextAnnotation(0) 
    { 
        Title = $"Note {i}", 
        Contents = $"Content for note {i}",
        X = 50 + (i * 10),
        Y = 700 - (i * 20)
    });
}

// Add all annotations at once
foreach (var annotation in annotations)
{
    pdf.Annotations.Add(annotation);
}

// Save once after all additions
pdf.SaveAs("batch-annotated.pdf");
Imports System.Collections.Generic

' Example of batch annotation processing
Dim annotations As New List(Of TextAnnotation)()
For i As Integer = 0 To 99
    annotations.Add(New TextAnnotation(0) With {
        .Title = $"Note {i}",
        .Contents = $"Content for note {i}",
        .X = 50 + (i * 10),
        .Y = 700 - (i * 20)
    })
Next

' Add all annotations at once
For Each annotation In annotations
    pdf.Annotations.Add(annotation)
Next

' Save once after all additions
pdf.SaveAs("batch-annotated.pdf")
$vbLabelText   $csharpLabel

Aby uzyskać jeszcze lepszą wydajność w scenariuszach o dużej objętości, warto rozważyć zastosowanie przetwarzania asynchronicznego lub technik wielowątkowości w celu równoległego przetwarzania operacji adnotacji.

Co należy wziąć pod uwagę w kwestii kompatybilności między przeglądarkami?

Różne przeglądarki plików PDF mogą wyświetlać adnotacje z różnymi stylami ikon, zachowaniami wyskakujących okienek lub specyficznym rozmieszczeniem. Zawsze testuj swoje pliki PDF z adnotacjami w popularnych przeglądarkach, takich jak Adobe Acrobat, Chrome, Edge i mobilne czytniki PDF, aby upewnić się, że adnotacje wyświetlają się poprawnie i działają na wszystkich platformach, z których mogą korzystać Twoi użytkownicy.

Niektóre przeglądarki mogą nie obsługiwać wszystkich typów adnotacji lub wyświetlać je w inny sposób. Aby zapewnić maksymalną kompatybilność, należy stosować standardowe typy adnotacji i unikać funkcji specyficznych dla danej przeglądarki. Podczas wdrażania w określonych środowiskach, takich jak Azure lub AWS, należy przetestować adnotacje w domyślnych przeglądarkach plików PDF środowiska docelowego, aby zapewnić spójne działanie.

Gotowy, aby sprawdzić, co jeszcze możesz zrobić? Zapoznaj się z naszą stroną z samouczkami tutaj: Edytuj pliki PDF

Często Zadawane Pytania

Jak dodać tekstowe adnotacje do dokumentów PDF w C#?

IronPDF zapewnia proste API do dodawania tekstowych adnotacji przy użyciu metody AddTextAnnotation. Możesz tworzyć adnotacje, określając numer strony, współrzędne pozycji (X, Y), tytuł i zawartość. Na przykład, możesz dodać adnotację w postaci notatki samoprzylepnej w jednym wierszu kodu używając metody Annotations.Add z obiektem TextAnnotation.

Jakie typy adnotacji PDF są obsługiwane?

IronPDF obsługuje tekstowe adnotacje, które działają jak notatki samoprzylepne w dokumentach PDF. Te adnotacje pojawiają się jako małe ikony na stronie, które wyświetlają pełny tekst komentarza po kliknięciu, zapewniając nieinwazyjny sposób dodawania komentarzy, przypomnień lub dodatkowych informacji do określonych sekcji dokumentu.

Czy mogę programowo edytować istniejące adnotacje PDF?

Tak, IronPDF umożliwia odzyskiwanie i edycję istniejących adnotacji PDF za pośrednictwem swojego API. Możesz uzyskać dostęp do adnotacji, używając właściwości Annotations obiektu PdfDocument, modyfikować ich właściwości, takie jak tytuł, zawartość, pozycja, a następnie zapisać zmiany z powrotem do PDF.

Jak usunąć adnotacje z dokumentu PDF?

IronPDF zapewnia metody do usuwania adnotacji z dokumentów PDF programowo. Możesz uzyskać dostęp do kolekcji Annotations obiektu PdfDocument i usuwać określone adnotacje lub wyczyścić wszystkie adnotacje z jednej strony lub z całego dokumentu.

Jakie są powszechne przypadki użycia adnotacji PDF w biznesie?

Funkcje adnotacji IronPDF są idealne dla przepływów pracy związanych z przeglądem dokumentów, gdzie przeglądający mogą oznaczać dokumenty uwagami, współpraca w zespołach nad umowami bez modyfikowania oryginalnej treści i zespoły zapewnienia jakości wskazujące problemy w dokumentach technicznych. Funkcje te integrują się bezproblemowo z systemami zarządzania dokumentami.

Czy muszę zainstalować dodatkowe oprogramowanie, aby korzystać z funkcji adnotacji PDF?

Nie, IronPDF to samowystarczalna biblioteka C# zawierająca wszystkie funkcje adnotacji PDF. Wystarczy pobrać i zreferencować bibliotekę IronPDF w swoim projekcie, aby zacząć dodawać, edytować i usuwać adnotacje z dokumentów PDF bez żadnych zewnętrznych zależności.

Jak dodać klikalne linki do nawigacji wewnętrznej w PDF w C#?

Użyj klasy LinkAnnotation w IronPDF, która jest dodawana tą samą metodą Annotations.Add co adnotacje tekstowe. Utwórz LinkAnnotation z opartym na zerze indeksem strony oraz indeksem strony docelowej, ustaw klikalny obszar za pomocą X, Y, Width i Height (w punktach), a IronPDF generuje klikalny obszar, który przenosi do strony docelowej. Idealne do niestandardowych spisów treści, referencji krzyżowych i przycisków powrotu na górę.

Jak kontrolować pozycję powiększenia i przewijania, gdy klikany jest link w PDF?

Ustaw właściwość DestinationType prostokąta docelowego LinkAnnotation używając enum BookmarkDestinations. Domyślna wartość Page pasuje do całej strony docelowej, podczas gdy PageY przewija do pozycji pionowej, PageZoom ustawia pozycję i poziom powiększenia, a PageRect pasuje do określonego prostokąta. Ulepsz widok za pomocą DestinationTop, DestinationLeft, DestinationRight, DestinationBottom i DestinationZoom. Uwaga, DestinationZoom = 0 oznacza dziedziczenie aktualnego poziomu powiększenia, a nie powiększenie do zera.

Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podrę...

Czytaj więcej
Gotowy, aby rozpocząć?
Nuget Pliki do pobrania 19,936,792 | Wersja: 2026.7 właśnie wydany
Still Scrolling Icon

Wciąż przewijasz?

Czy chcesz szybko dowodu? PM > Install-Package IronPdf
Uruchom przykład i zobacz, jak Twój kod HTML zamienia się w plik PDF.