Mengekstrak Konten Bertag dari PDF

Dalam artikel ini Anda akan belajar bagaimana mengekstrak konten bertag dari dokumen PDF menggunakan C#.

Potongan kode berikut juga bekerja dengan perpustakaan Aspose.PDF.Drawing.

Mendapatkan Konten PDF Bertag

Untuk mendapatkan konten dari Dokumen PDF dengan Teks Bertag, Aspose.PDF menawarkan properti TaggedContent dari kelas Document.

Potongan kode berikut menunjukkan cara mendapatkan konten dari dokumen PDF dengan Teks Bertag:

// Untuk contoh lengkap dan file data, silakan kunjungi https://github.com/aspose-pdf/Aspose.PDF-for-.NET
// Jalur ke direktori dokumen.
string dataDir = RunExamples.GetDataDir_AsposePdf_WorkingDocuments();

// Membuat Dokumen Pdf
Document document = new Document();

// Mendapatkan Konten untuk bekerja dengan TaggedPdf
ITaggedContent taggedContent = document.TaggedContent;

//
// Bekerja dengan konten Pdf Bertag
//

// Mengatur Judul dan Bahasa untuk Dokumen
taggedContent.SetTitle("Simple Tagged Pdf Document");
taggedContent.SetLanguage("en-US");

// Menyimpan Dokumen Pdf Bertag
document.Save(dataDir + "TaggedPDFContent.pdf");

Mendapatkan Struktur Akar

Untuk mendapatkan struktur akar dari Dokumen PDF Bertag, Aspose.PDF menawarkan properti StructTreeRootElement dari antarmuka ITaggedContent dan StructureElement. Cuplikan kode berikut menunjukkan cara mendapatkan struktur akar dari Dokumen PDF Bertag:

// Untuk contoh lengkap dan file data, silakan kunjungi https://github.com/aspose-pdf/Aspose.PDF-for-.NET
// Jalur ke direktori dokumen.
string dataDir = RunExamples.GetDataDir_AsposePdf_WorkingDocuments();

// Membuat Dokumen Pdf
Document document = new Document();

// Mendapatkan Konten untuk bekerja dengan TaggedPdf
ITaggedContent taggedContent = document.TaggedContent;

// Mengatur Judul dan Bahasa untuk Dokumen
taggedContent.SetTitle("Dokumen Pdf Bertag");
taggedContent.SetLanguage("en-US");

// Properti StructTreeRootElement dan RootElement digunakan untuk akses ke
// objek StructTreeRoot dari dokumen pdf dan ke elemen struktur akar (elemen struktur Dokumen).
StructTreeRootElement structTreeRootElement = taggedContent.StructTreeRootElement;
StructureElement rootElement = taggedContent.RootElement;

Mengakses Elemen Anak

Untuk mengakses elemen anak dari Dokumen PDF Bertag, Aspose.PDF menawarkan kelas ElementList. Cuplikan kode berikut menunjukkan cara mengakses elemen anak dari Dokumen PDF Bertag:

// Untuk contoh lengkap dan file data, silakan kunjungi https://github.com/aspose-pdf/Aspose.PDF-for-.NET
// Jalur ke direktori dokumen.
string dataDir = RunExamples.GetDataDir_AsposePdf_WorkingDocuments();

// Buka Dokumen Pdf
Document document = new Document(dataDir + "StructureElementsTree.pdf");

// Dapatkan Konten untuk bekerja dengan TaggedPdf
ITaggedContent taggedContent = document.TaggedContent;

// Akses ke elemen akar
ElementList elementList = taggedContent.StructTreeRootElement.ChildElements;
foreach (Element element in elementList)
{
    if (element is StructureElement)
    {
        StructureElement structureElement = element as StructureElement;

        // Dapatkan properti
        string title = structureElement.Title;
        string language = structureElement.Language;
        string actualText = structureElement.ActualText;
        string expansionText = structureElement.ExpansionText;
        string alternativeText = structureElement.AlternativeText;
    }
}

// Akses ke elemen anak dari elemen pertama di elemen akar
elementList = taggedContent.RootElement.ChildElements[1].ChildElements;
foreach (Element element in elementList)
{
    if (element is StructureElement)
    {
        StructureElement structureElement = element as StructureElement;

        // Atur properti
        structureElement.Title = "title";
        structureElement.Language = "fr-FR";
        structureElement.ActualText = "actual text";
        structureElement.ExpansionText = "exp";
        structureElement.AlternativeText = "alt";
    }
}

// Simpan Dokumen PDF Bertag
document.Save(dataDir + "AccessChildElements.pdf");

Menandai Gambar di PDF yang Ada

Untuk menandai gambar dalam dokumen PDF yang ada, Aspose.PDF menawarkan metode FindElements dari kelas StructureElement. Anda dapat menambahkan teks alternatif untuk gambar menggunakan properti AlternativeText dari kelas FigureElement.

Berikut ini adalah cuplikan kode yang menunjukkan cara menandai gambar dalam dokumen PDF yang ada:

// Untuk contoh lengkap dan file data, silakan kunjungi https://github.com/aspose-pdf/Aspose.PDF-for-.NET
// Jalur ke direktori dokumen.
string dataDir = RunExamples.GetDataDir_AsposePdf_WorkingDocuments();
string inFile = dataDir + "TH.pdf";
string outFile = dataDir + "TH_out.pdf";
string logFile = dataDir + "TH_out.xml";

// Membuka dokumen
Document document = new Document(inFile);

// Mendapatkan konten bertag dan elemen struktur root
ITaggedContent taggedContent = document.TaggedContent;
StructureElement rootElement = taggedContent.RootElement;

// Mengatur judul untuk dokumen pdf bertag
taggedContent.SetTitle("Dokumen dengan gambar");

foreach (FigureElement figureElement in rootElement.FindElements<FigureElement>(true))
{
    // Mengatur Teks Alternatif untuk Gambar
    figureElement.AlternativeText = "Teks alternatif gambar (teknik 2)";


    // Membuat dan Mengatur Atribut BBox
    StructureAttribute bboxAttribute = new StructureAttribute(AttributeKey.BBox);
    bboxAttribute.SetRectangleValue(new Rectangle(0.0, 0.0, 100.0, 100.0));

    StructureAttributes figureLayoutAttributes = figureElement.Attributes.GetAttributes(AttributeOwnerStandard.Layout);
    figureLayoutAttributes.SetAttribute(bboxAttribute);
}

// Memindahkan Elemen Span ke dalam Paragraf (menemukan span dan paragraf yang salah di TD pertama)
TableElement tableElement = rootElement.FindElements<TableElement>(true)[0];
SpanElement spanElement = tableElement.FindElements<SpanElement>(true)[0];
TableTDElement firstTdElement = tableElement.FindElements<TableTDElement>(true)[0];
ParagraphElement paragraph = firstTdElement.FindElements<ParagraphElement>(true)[0];

// Memindahkan Elemen Span ke dalam Paragraf
spanElement.ChangeParentElement(paragraph);


// Menyimpan dokumen
document.Save(outFile);



// Memeriksa Kepatuhan PDF/UA untuk dokumen keluaran
document = new Document(outFile);

bool isPdfUaCompliance = document.Validate(logFile, PdfFormat.PDF_UA_1);
Console.WriteLine(String.Format("Kepatuhan PDF/UA: {0}", isPdfUaCompliance));