Buat PDF Berlabel menggunakan C#
Membuat PDF Berlabel berarti menambahkan (atau membuat) elemen tertentu ke dokumen yang akan memungkinkan dokumen tersebut divalidasi sesuai dengan persyaratan PDF/UA. Elemen-elemen ini sering disebut sebagai Elemen Struktur.
Potongan kode berikut juga bekerja dengan perpustakaan Aspose.PDF.Drawing .
Membuat PDF Berlabel (Skenario Sederhana)
Untuk membuat elemen struktur dalam Dokumen PDF Berlabel, Aspose.PDF menawarkan metode untuk membuat elemen struktur menggunakan antarmuka ITaggedContent . Potongan kode berikut menunjukkan cara membuat PDF Berlabel yang berisi 2 elemen: header dan paragraf.
.NET Core 3.1
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void CreateTaggedPdfDocument01 ()
{
// The path to the documents directory
var dataDir = RunExamples . GetDataDir_AsposePdf_WorkingDocuments ();
// Create PDF document
using ( var document = new Aspose . Pdf . Document ())
{
// Get Content for work with TaggedPdf
Aspose . Pdf . Tagged . ITaggedContent taggedContent = document . TaggedContent ;
var rootElement = taggedContent . RootElement ;
// Set Title and Language for Document
taggedContent . SetTitle ( "Tagged Pdf Document" );
taggedContent . SetLanguage ( "en-US" );
Aspose . Pdf . LogicalStructure . HeaderElement mainHeader = taggedContent . CreateHeaderElement ();
mainHeader . SetText ( "Main Header" );
Aspose . Pdf . LogicalStructure . ParagraphElement paragraphElement = taggedContent . CreateParagraphElement ();
paragraphElement . SetText ( "Lorem ipsum dolor sit amet, consectetur adipiscing elit. " +
"Aenean nec lectus ac sem faucibus imperdiet. Sed ut erat ac magna ullamcorper hendrerit. " +
"Cras pellentesque libero semper, gravida magna sed, luctus leo. Fusce lectus odio, laoreet" +
"nec ullamcorper ut, molestie eu elit. Interdum et malesuada fames ac ante ipsum primis in faucibus." +
"Aliquam lacinia sit amet elit ac consectetur. Donec cursus condimentum ligula, vitae volutpat" +
"sem tristique eget. Nulla in consectetur massa. Vestibulum vitae lobortis ante. Nulla ullamcorper" +
"pellentesque justo rhoncus accumsan. Mauris ornare eu odio non lacinia. Aliquam massa leo, rhoncus" +
"ac iaculis eget, tempus et magna. Sed non consectetur elit. Sed vulputate, quam sed lacinia luctus," +
"ipsum nibh fringilla purus, vitae posuere risus odio id massa. Cras sed venenatis lacus." );
rootElement . AppendChild ( mainHeader );
rootElement . AppendChild ( paragraphElement );
// Save Tagged PDF Document
document . Save ( dataDir + "TaggedPdfDocument_out.pdf" );
}
}
.NET 8
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void CreateTaggedPdfDocument01 ()
{
// The path to the documents directory
var dataDir = RunExamples . GetDataDir_AsposePdf_WorkingDocuments ();
// Create PDF Document
using var document = new Aspose . Pdf . Document ();
// Get Content for work with TaggedPdf
Aspose . Pdf . Tagged . ITaggedContent taggedContent = document . TaggedContent ;
var rootElement = taggedContent . RootElement ;
// Set Title and Language for Document
taggedContent . SetTitle ( "Tagged Pdf Document" );
taggedContent . SetLanguage ( "en-US" );
Aspose . Pdf . LogicalStructure . HeaderElement mainHeader = taggedContent . CreateHeaderElement ();
mainHeader . SetText ( "Main Header" );
Aspose . Pdf . LogicalStructure . ParagraphElement paragraphElement = taggedContent . CreateParagraphElement ();
paragraphElement . SetText ( "Lorem ipsum dolor sit amet, consectetur adipiscing elit. " +
"Aenean nec lectus ac sem faucibus imperdiet. Sed ut erat ac magna ullamcorper hendrerit. " +
"Cras pellentesque libero semper, gravida magna sed, luctus leo. Fusce lectus odio, laoreet" +
"nec ullamcorper ut, molestie eu elit. Interdum et malesuada fames ac ante ipsum primis in faucibus." +
"Aliquam lacinia sit amet elit ac consectetur. Donec cursus condimentum ligula, vitae volutpat" +
"sem tristique eget. Nulla in consectetur massa. Vestibulum vitae lobortis ante. Nulla ullamcorper" +
"pellentesque justo rhoncus accumsan. Mauris ornare eu odio non lacinia. Aliquam massa leo, rhoncus" +
"ac iaculis eget, tempus et magna. Sed non consectetur elit. Sed vulputate, quam sed lacinia luctus," +
"ipsum nibh fringilla purus, vitae posuere risus odio id massa. Cras sed venenatis lacus." );
rootElement . AppendChild ( mainHeader );
rootElement . AppendChild ( paragraphElement );
// Save Tagged PDF Document
document . Save ( dataDir + "TaggedPdfDocument_out.pdf" );
}
Kami akan mendapatkan dokumen berikut setelah pembuatan:
Membuat PDF Berlabel dengan elemen bersarang (Membuat Pohon Elemen Struktur)
Dalam beberapa kasus, kita perlu membuat struktur yang lebih kompleks, misalnya menempatkan kutipan dalam paragraf.
Untuk membuat pohon elemen struktur, kita harus menggunakan metode AppendChild .
Potongan kode berikut menunjukkan cara membuat pohon elemen struktur dari Dokumen PDF Berlabel:
.NET Core 3.1
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void CreateTaggedPdfDocument02 ()
{
// The path to the documents directory
var dataDir = RunExamples . GetDataDir_AsposePdf_WorkingDocuments ();
// Create PDF Document
using ( var document = new Aspose . Pdf . Document ())
{
// Get Content for work with TaggedPdf
Aspose . Pdf . Tagged . ITaggedContent taggedContent = document . TaggedContent ;
var rootElement = taggedContent . RootElement ;
// Set Title and Language for Document
taggedContent . SetTitle ( "Tagged Pdf Document" );
taggedContent . SetLanguage ( "en-US" );
Aspose . Pdf . LogicalStructure . HeaderElement header1 = taggedContent . CreateHeaderElement ( 1 );
header1 . SetText ( "Header Level 1" );
Aspose . Pdf . LogicalStructure . ParagraphElement paragraphWithQuotes = taggedContent . CreateParagraphElement ();
paragraphWithQuotes . StructureTextState . Font = Aspose . Pdf . Text . FontRepository . FindFont ( "Calibri" );
paragraphWithQuotes . AdjustPosition ( new Aspose . Pdf . Tagged . PositionSettings
{
Margin = new Aspose . Pdf . MarginInfo ( 10 , 5 , 10 , 5 )
});
Aspose . Pdf . LogicalStructure . SpanElement spanElement1 = taggedContent . CreateSpanElement ();
spanElement1 . SetText ( "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean nec lectus ac sem faucibus imperdiet. Sed ut erat ac magna ullamcorper hendrerit. Cras pellentesque libero semper, gravida magna sed, luctus leo. Fusce lectus odio, laoreet nec ullamcorper ut, molestie eu elit. Interdum et malesuada fames ac ante ipsum primis in faucibus. Aliquam lacinia sit amet elit ac consectetur. Donec cursus condimentum ligula, vitae volutpat sem tristique eget. Nulla in consectetur massa. Vestibulum vitae lobortis ante. Nulla ullamcorper pellentesque justo rhoncus accumsan. Mauris ornare eu odio non lacinia. Aliquam massa leo, rhoncus ac iaculis eget, tempus et magna. Sed non consectetur elit. " );
Aspose . Pdf . LogicalStructure . QuoteElement quoteElement = taggedContent . CreateQuoteElement ();
quoteElement . SetText ( "Sed vulputate, quam sed lacinia luctus, ipsum nibh fringilla purus, vitae posuere risus odio id massa." );
quoteElement . StructureTextState . FontStyle = Aspose . Pdf . Text . FontStyles . Bold | Aspose . Pdf . Text . FontStyles . Italic ;
Aspose . Pdf . LogicalStructure . SpanElement spanElement2 = taggedContent . CreateSpanElement ();
spanElement2 . SetText ( " Sed non consectetur elit." );
paragraphWithQuotes . AppendChild ( spanElement1 );
paragraphWithQuotes . AppendChild ( quoteElement );
paragraphWithQuotes . AppendChild ( spanElement2 );
rootElement . AppendChild ( header1 );
rootElement . AppendChild ( paragraphWithQuotes );
// Save Tagged PDF Document
document . Save ( dataDir + "TaggedPdfDocument_out.pdf" );
}
}
.NET 8
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void CreateTaggedPdfDocument02 ()
{
// The path to the documents directory
var dataDir = RunExamples . GetDataDir_AsposePdf_WorkingDocuments ();
// Create PDF Document
using var document = new Aspose . Pdf . Document ();
// Get Content for work with TaggedPdf
Aspose . Pdf . Tagged . ITaggedContent taggedContent = document . TaggedContent ;
var rootElement = taggedContent . RootElement ;
// Set Title and Language for Document
taggedContent . SetTitle ( "Tagged Pdf Document" );
taggedContent . SetLanguage ( "en-US" );
Aspose . Pdf . LogicalStructure . HeaderElement header1 = taggedContent . CreateHeaderElement ( 1 );
header1 . SetText ( "Header Level 1" );
Aspose . Pdf . LogicalStructure . ParagraphElement paragraphWithQuotes = taggedContent . CreateParagraphElement ();
paragraphWithQuotes . StructureTextState . Font = Aspose . Pdf . Text . FontRepository . FindFont ( "Calibri" );
paragraphWithQuotes . AdjustPosition ( new Aspose . Pdf . Tagged . PositionSettings
{
Margin = new Aspose . Pdf . MarginInfo ( 10 , 5 , 10 , 5 )
});
Aspose . Pdf . LogicalStructure . SpanElement spanElement1 = taggedContent . CreateSpanElement ();
spanElement1 . SetText ( "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean nec lectus ac sem faucibus imperdiet. Sed ut erat ac magna ullamcorper hendrerit. Cras pellentesque libero semper, gravida magna sed, luctus leo. Fusce lectus odio, laoreet nec ullamcorper ut, molestie eu elit. Interdum et malesuada fames ac ante ipsum primis in faucibus. Aliquam lacinia sit amet elit ac consectetur. Donec cursus condimentum ligula, vitae volutpat sem tristique eget. Nulla in consectetur massa. Vestibulum vitae lobortis ante. Nulla ullamcorper pellentesque justo rhoncus accumsan. Mauris ornare eu odio non lacinia. Aliquam massa leo, rhoncus ac iaculis eget, tempus et magna. Sed non consectetur elit. " );
Aspose . Pdf . LogicalStructure . QuoteElement quoteElement = taggedContent . CreateQuoteElement ();
quoteElement . SetText ( "Sed vulputate, quam sed lacinia luctus, ipsum nibh fringilla purus, vitae posuere risus odio id massa." );
quoteElement . StructureTextState . FontStyle = Aspose . Pdf . Text . FontStyles . Bold | Aspose . Pdf . Text . FontStyles . Italic ;
Aspose . Pdf . LogicalStructure . SpanElement spanElement2 = taggedContent . CreateSpanElement ();
spanElement2 . SetText ( " Sed non consectetur elit." );
paragraphWithQuotes . AppendChild ( spanElement1 );
paragraphWithQuotes . AppendChild ( quoteElement );
paragraphWithQuotes . AppendChild ( spanElement2 );
rootElement . AppendChild ( header1 );
rootElement . AppendChild ( paragraphWithQuotes );
// Save Tagged PDF Document
document . Save ( dataDir + "TaggedPdfDocument_out.pdf" );
}
Kami akan mendapatkan dokumen berikut setelah pembuatan:
Menata Struktur Teks
Untuk menata struktur teks dalam Dokumen PDF Berlabel, Aspose.PDF menawarkan properti Font , FontSize , FontStyle dan ForegroundColor dari Kelas StructureTextState . Potongan kode berikut menunjukkan cara menata struktur teks dalam Dokumen PDF Berlabel:
Mengilustrasikan Elemen Struktur
Untuk mengilustrasikan elemen struktur dalam Dokumen PDF Berlabel, Aspose.PDF menawarkan kelas IllustrationElement . Potongan kode berikut menunjukkan cara mengilustrasikan elemen struktur dalam Dokumen PDF Berlabel:
Validasi PDF Berlabel
Aspose.PDF for .NET menyediakan kemampuan untuk memvalidasi Dokumen PDF Berlabel PDF/UA. Validasi standar PDF/UA mendukung:
Memeriksa XObjects.
Memeriksa Tindakan.
Memeriksa Konten Opsional.
Memeriksa Berkas Tersemat.
Memeriksa Bidang Acroform (Validasi Bahasa Alami dan Nama Alternatif serta Tanda Tangan Digital).
Memeriksa Bidang Formulir XFA.
Memeriksa pengaturan Keamanan.
Memeriksa Navigasi.
Memeriksa Anotasi.
Potongan kode di bawah ini menunjukkan cara memvalidasi Dokumen PDF Berlabel. Masalah yang sesuai akan ditampilkan dalam laporan log XML.
Menyesuaikan posisi Struktur Teks
Potongan kode berikut menunjukkan cara menyesuaikan posisi Struktur Teks dalam dokumen PDF Berlabel:
.NET Core 3.1
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void AdjustPosition ()
{
// The path to the documents directory
var dataDir = RunExamples . GetDataDir_AsposePdf_WorkingDocuments ();
// Create PDF Document
using ( var document = new Aspose . Pdf . Document ())
{
// Get Content for work with TaggedPdf
var taggedContent = document . TaggedContent ;
// Set Title and Language for Document
taggedContent . SetTitle ( "Tagged Pdf Document" );
taggedContent . SetLanguage ( "en-US" );
// Create paragraph
var p = taggedContent . CreateParagraphElement ();
taggedContent . RootElement . AppendChild ( p );
p . SetText ( "Text." );
// Adjust position
p . AdjustPosition ( new Aspose . Pdf . Tagged . PositionSettings
{
HorizontalAlignment = Aspose . Pdf . HorizontalAlignment . None ,
Margin = new Aspose . Pdf . MarginInfo
{
Left = 300 ,
Right = 0 ,
Top = 20 ,
Bottom = 0
},
VerticalAlignment = Aspose . Pdf . VerticalAlignment . None ,
IsFirstParagraphInColumn = false ,
IsKeptWithNext = false ,
IsInNewPage = false ,
IsInLineParagraph = false
});
// Save Tagged PDF Document
document . Save ( dataDir + "AdjustTextPosition_out.pdf" );
}
}
.NET 8
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void AdjustPosition ()
{
// The path to the documents directory
var dataDir = RunExamples . GetDataDir_AsposePdf_WorkingDocuments ();
// Create PDF Document
using var document = new Aspose . Pdf . Document ();
// Get Content for work with TaggedPdf
var taggedContent = document . TaggedContent ;
// Set Title and Language for Document
taggedContent . SetTitle ( "Tagged Pdf Document" );
taggedContent . SetLanguage ( "en-US" );
// Create paragraph
var p = taggedContent . CreateParagraphElement ();
taggedContent . RootElement . AppendChild ( p );
p . SetText ( "Text." );
// Adjust position
p . AdjustPosition ( new Aspose . Pdf . Tagged . PositionSettings
{
HorizontalAlignment = Aspose . Pdf . HorizontalAlignment . None ,
Margin = new Aspose . Pdf . MarginInfo
{
Left = 300 ,
Right = 0 ,
Top = 20 ,
Bottom = 0
},
VerticalAlignment = Aspose . Pdf . VerticalAlignment . None ,
IsFirstParagraphInColumn = false ,
IsKeptWithNext = false ,
IsInNewPage = false ,
IsInLineParagraph = false
});
// Save Tagged PDF Document
document . Save ( dataDir + "AdjustTextPosition_out.pdf" );
}
Membuat PDF Berlabel secara otomatis dengan konversi PDF/UA-1
Aspose.PDF memungkinkan pembuatan markup struktur logis dasar secara otomatis saat mengonversi dokumen ke PDF/UA-1. Pengguna kemudian dapat secara manual meningkatkan struktur logis dasar ini, memberikan wawasan tambahan mengenai konten dokumen.
Untuk menghasilkan struktur dokumen logis, buat instance dari kelas Aspose.Pdf.AutoTaggingSettings , atur propertinya AutoTaggingSettings.EnableAutoTagging ke true
, dan tetapkan ke properti PdfFormatConversionOptions.AutoTaggingSettings .
Jika dokumen sudah memiliki tag struktur logis, mengaktifkan auto-tagging akan menghancurkan struktur logis yang ada dan menghasilkan yang baru.
Anda dapat memberi label pada bidang formulir interaktif dalam dokumen PDF untuk memastikan mereka termasuk dalam pohon struktur logis untuk aksesibilitas (PDF/UA). Potongan di bawah ini menunjukkan cara membuat bidang formulir, mendaftarkannya dalam AcroForm, dan mengaitkannya dengan elemen struktur /Form
dalam pohon struktur.
.NET Core 3.1
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void CreatePdfWithTaggedFormField ()
{
// The path to the documents directory
var dataDir = RunExamples . GetDataDir_AsposePdf_WorkingDocuments ();
// Create PDF document
using ( var document = new Aspose . Pdf . Document ())
{
document . Pages . Add ();
// Get Content for work with TaggedPdf
Aspose . Pdf . Tagged . ITaggedContent taggedContent = document . TaggedContent ;
Aspose . Pdf . LogicalStructure . StructureElement rootElement = taggedContent . RootElement ;
// Create a visible signature form field (AcroForm)
var signatureField = new Aspose . Pdf . Forms . SignatureField ( document . Pages [ 1 ], new Aspose . Pdf . Rectangle ( 50 , 50 , 100 , 100 ));
signatureField . PartialName = "Signature1" ;
signatureField . AlternateName = "signature 1" ;
// Add the signature field to the document's AcroForm
document . Form . Add ( signatureField );
// Create a /Form structure element in the tag tree
Aspose . Pdf . LogicalStructure . FormElement form = taggedContent . CreateFormElement ();
form . AlternativeText = "form 1" ;
// Link the /Form tag to the signature field via an /OBJR reference
form . Tag ( signatureField );
// Add the /Form structure element to the document’s logical structure tree
rootElement . AppendChild ( form );
// Save PDF document
document . Save ( dataDir + "CreatePdfWithTaggedFormField_out.pdf" );
}
}
.NET 8
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void CreatePdfWithTaggedFormField ()
{
// The path to the documents directory
var dataDir = RunExamples . GetDataDir_AsposePdf_WorkingDocuments ();
// Create PDF document
using var document = new Aspose . Pdf . Document ();
document . Pages . Add ();
// Get Content for work with TaggedPdf
Aspose . Pdf . Tagged . ITaggedContent taggedContent = document . TaggedContent ;
Aspose . Pdf . LogicalStructure . StructureElement rootElement = taggedContent . RootElement ;
// Create a visible signature form field (AcroForm)
var signatureField = new Aspose . Pdf . Forms . SignatureField ( document . Pages [ 1 ], new Aspose . Pdf . Rectangle ( 50 , 50 , 100 , 100 ));
signatureField . PartialName = "Signature1" ;
signatureField . AlternateName = "signature 1" ;
// Add the signature field to the document's AcroForm
document . Form . Add ( signatureField );
// Create a /Form structure element in the tag tree
Aspose . Pdf . LogicalStructure . FormElement form = taggedContent . CreateFormElement ();
form . AlternativeText = "form 1" ;
// Link the /Form tag to the signature field via an /OBJR reference
form . Tag ( signatureField );
// Add the /Form structure element to the document’s logical structure tree
rootElement . AppendChild ( form );
// Save PDF document
document . Save ( dataDir + "CreatePdfWithTaggedFormField_out.pdf" );
}
Membuat PDF Berlabel dengan halaman daftar isi (TOC)
Hasilkan dokumen PDF berlabel dengan halaman Daftar Isi (TOC) yang dapat diakses.
Hasilkan PDF berlabel yang mencakup halaman daftar isi yang dapat diakses, yang berisi judul halaman dan sublist bersarang.
.NET Core 3.1
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void CreatePdfWithTOCpageAdvanced ()
{
// The path to the documents directory
var dataDir = RunExamples . GetDataDir_AsposePdf_WorkingDocuments ();
// Create PDF document
using ( var doc = new Aspose . Pdf . Document ())
{
// Get tagged content for the PDF structure
Aspose . Pdf . Tagged . ITaggedContent content = doc . TaggedContent ;
Aspose . Pdf . LogicalStructure . StructureElement rootElement = content . RootElement ;
content . SetLanguage ( "en-US" );
// Add the table of contents (TOC) page
Aspose . Pdf . Page tocPage = doc . Pages . Add ();
tocPage . TocInfo = new Aspose . Pdf . TocInfo ();
tocPage . TocInfo . Title = new Aspose . Pdf . Text . TextFragment ( "Table of Contents" );
// Create a TOC structure element
Aspose . Pdf . LogicalStructure . TOCElement tocElement = content . CreateTOCElement ();
// Create a header element for the TOC page title
Aspose . Pdf . LogicalStructure . HeaderElement headerForTOCpageTitle = content . CreateHeaderElement ( 1 );
tocElement . LinkTocPageTitleToHeaderElement ( tocPage , headerForTOCpageTitle );
// Add the TOC page title header and TOC element to the document structure tree
rootElement . AppendChild ( headerForTOCpageTitle );
rootElement . AppendChild ( tocElement );
// Add a content page
doc . Pages . Add ();
// Create a header element and set its text
Aspose . Pdf . LogicalStructure . HeaderElement header = content . CreateHeaderElement ( 1 );
header . SetText ( "1. Header" );
// Add the header to the document structure
rootElement . AppendChild ( header );
// Create a TOC item (TOCI) element
Aspose . Pdf . LogicalStructure . TOCIElement toci = content . CreateTOCIElement ();
// Add the TOCI element to the TOC element
tocElement . AppendChild ( toci );
// Add an entry to the TOC page and link it to the TOCI element
header . AddEntryToTocPage ( tocPage , toci );
// Add a logical reference to the header within the TOCI element
toci . AddRef ( header );
// Create a list element for TOCI subitems
Aspose . Pdf . LogicalStructure . ListElement listElement = content . CreateListElement ();
for ( var i = 1 ; i <= 3 ; i ++)
{
// Create a list item (LI) element
Aspose . Pdf . LogicalStructure . ListLIElement li = content . CreateListLIElement ();
// Add the list item to the list element
listElement . AppendChild ( li );
// Create a sub-header element and set its properties
Aspose . Pdf . LogicalStructure . HeaderElement subHeader = content . CreateHeaderElement ( 2 );
subHeader . StructureTextState . FontSize = 14 ;
subHeader . Language = "en-US" ;
subHeader . SetText ( $@"1.{i} subheader " );
// Add an entry to the TOC page and link it to the LI element
subHeader . AddEntryToTocPage ( tocPage , li );
// Add a logical reference to the subheader element
li . AddRef ( subHeader );
// Create a paragraph element and set its text and language
Aspose . Pdf . LogicalStructure . ParagraphElement p = content . CreateParagraphElement ();
p . SetText ( "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." );
p . Language = "en-US" ;
// Add the sub-header and paragraph to the document structure
rootElement . AppendChild ( subHeader );
rootElement . AppendChild ( p );
}
// Add the list element as a child to the TOCI element
toci . AppendChild ( listElement );
// --- Additional TOC header example ---
// Create a second header element (see comments above for header 1)
Aspose . Pdf . LogicalStructure . HeaderElement header2 = content . CreateHeaderElement ( 1 );
header2 . SetText ( "2. Header" );
rootElement . AppendChild ( header2 );
Aspose . Pdf . LogicalStructure . TOCIElement toci2 = content . CreateTOCIElement ();
tocElement . AppendChild ( toci2 );
header2 . AddEntryToTocPage ( tocPage , toci2 );
toci2 . AddRef ( header2 );
// Save the PDF document
doc . Save ( dataDir + "CreatePdfWithTOCpageAdvanced_out.pdf" );
}
}
.NET 8
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void CreatePdfWithTOCpageAdvanced ()
{
// The path to the documents directory
var dataDir = RunExamples . GetDataDir_AsposePdf_WorkingDocuments ();
// Create PDF document
using var doc = new Aspose . Pdf . Document ();
// Get tagged content for the PDF structure
Aspose . Pdf . Tagged . ITaggedContent content = doc . TaggedContent ;
Aspose . Pdf . LogicalStructure . StructureElement rootElement = content . RootElement ;
content . SetLanguage ( "en-US" );
// Add the table of contents (TOC) page
Aspose . Pdf . Page tocPage = doc . Pages . Add ();
tocPage . TocInfo = new Aspose . Pdf . TocInfo ();
tocPage . TocInfo . Title = new Aspose . Pdf . Text . TextFragment ( "Table of Contents" );
// Create a TOC structure element
Aspose . Pdf . LogicalStructure . TOCElement tocElement = content . CreateTOCElement ();
// Create a header element for the TOC page title
Aspose . Pdf . LogicalStructure . HeaderElement headerForTOCpageTitle = content . CreateHeaderElement ( 1 );
tocElement . LinkTocPageTitleToHeaderElement ( tocPage , headerForTOCpageTitle );
// Add the TOC page title header and TOC element to the document structure tree
rootElement . AppendChild ( headerForTOCpageTitle );
rootElement . AppendChild ( tocElement );
// Add a content page
doc . Pages . Add ();
// Create a header element and set its text
Aspose . Pdf . LogicalStructure . HeaderElement header = content . CreateHeaderElement ( 1 );
header . SetText ( "1. Header" );
// Add the header to the document structure
rootElement . AppendChild ( header );
// Create a TOC item (TOCI) element
Aspose . Pdf . LogicalStructure . TOCIElement toci = content . CreateTOCIElement ();
// Add the TOCI element to the TOC element
tocElement . AppendChild ( toci );
// Add an entry to the TOC page and link it to the TOCI element
header . AddEntryToTocPage ( tocPage , toci );
// Add a logical reference to the header within the TOCI element
toci . AddRef ( header );
// Create a list element for TOCI subitems
Aspose . Pdf . LogicalStructure . ListElement listElement = content . CreateListElement ();
for ( var i = 1 ; i <= 3 ; i ++)
{
// Create a list item (LI) element
Aspose . Pdf . LogicalStructure . ListLIElement li = content . CreateListLIElement ();
// Add the list item to the list element
listElement . AppendChild ( li );
// Create a sub-header element and set its properties
Aspose . Pdf . LogicalStructure . HeaderElement subHeader = content . CreateHeaderElement ( 2 );
subHeader . StructureTextState . FontSize = 14 ;
subHeader . Language = "en-US" ;
subHeader . SetText ( $@"1.{i} subheader " );
// Add an entry to the TOC page and link it to the LI element
subHeader . AddEntryToTocPage ( tocPage , li );
// Add a logical reference to the subheader element
li . AddRef ( subHeader );
// Create a paragraph element and set its text and language
Aspose . Pdf . LogicalStructure . ParagraphElement p = content . CreateParagraphElement ();
p . SetText ( "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." );
p . Language = "en-US" ;
// Add the sub-header and paragraph to the document structure
rootElement . AppendChild ( subHeader );
rootElement . AppendChild ( p );
}
// Add the list element as a child to the TOCI element
toci . AppendChild ( listElement );
// --- Additional TOC header example ---
// Create a second header element (see comments above for header 1)
Aspose . Pdf . LogicalStructure . HeaderElement header2 = content . CreateHeaderElement ( 1 );
header2 . SetText ( "2. Header" );
rootElement . AppendChild ( header2 );
Aspose . Pdf . LogicalStructure . TOCIElement toci2 = content . CreateTOCIElement ();
tocElement . AppendChild ( toci2 );
header2 . AddEntryToTocPage ( tocPage , toci2 );
toci2 . AddRef ( header2 );
// Save the PDF document
doc . Save ( dataDir + "CreatePdfWithTOCpageAdvanced_out.pdf" );
}