במאמר זה תלמדו כיצד לחלץ תוכן מתויג ממסמך PDF באמצעות C#.
הקטע הקוד הבא עובד גם עם ספריית Aspose.PDF.Drawing.
קבלת תוכן PDF מתויג
על מנת לקבל תוכן של מסמך PDF עם טקסט מתויג, Aspose.PDF מציעה את התכונה TaggedContent של הכיתה Document.
הקטע קוד הבא מראה כיצד לקבל תוכן של מסמך PDF עם טקסט מתויג:
// לדוגמאות מלאות וקבצי נתונים, אנא עברו ל https://github.com/aspose-pdf/Aspose.PDF-for-.NET
// הנתיב לתיקיית המסמכים.
string dataDir = RunExamples.GetDataDir_AsposePdf_WorkingDocuments();
// יצירת מסמך Pdf
Document document = new Document();
// קבלת תוכן לעבודה עם TaggedPdf
ITaggedContent taggedContent = document.TaggedContent;
//
// עבודה עם תוכן PDF מתויג
//
// הגדרת כותרת ושפה למסמך
taggedContent.SetTitle("Simple Tagged Pdf Document");
taggedContent.SetLanguage("en-US");
// שמירת מסמך PDF מתויג
document.Save(dataDir + "TaggedPDFContent.pdf");
קבלת מבנה שורש
כדי לקבל את מבנה השורש של מסמך PDF מתויג, Aspose.PDF מציע את התכונה StructTreeRootElement של ממשק ITaggedContent ו-StructureElement. הקטע קוד הבא מראה איך לקבל את מבנה השורש של מסמך PDF מתויג:
// לדוגמאות מלאות וקבצי נתונים, אנא עבור אל https://github.com/aspose-pdf/Aspose.PDF-for-.NET
// הנתיב לתיקיית המסמכים.
string dataDir = RunExamples.GetDataDir_AsposePdf_WorkingDocuments();
// יצירת מסמך PDF
Document document = new Document();
// קבלת תוכן לעבודה עם TaggedPdf
ITaggedContent taggedContent = document.TaggedContent;
// הגדרת כותרת ושפה למסמך
taggedContent.SetTitle("Tagged Pdf Document");
taggedContent.SetLanguage("en-US");
// התכונות StructTreeRootElement ו-RootElement משמשות לגישה ל
// אובייקט StructTreeRoot של מסמך pdf ולאלמנט מבנה שורש (אלמנט מבנה המסמך).
StructTreeRootElement structTreeRootElement = taggedContent.StructTreeRootElement;
StructureElement rootElement = taggedContent.RootElement;
גישה לאלמנטים צאצא
כדי לגשת לאלמנטים צאצא של מסמך PDF מתויג, Aspose.PDF מציעה את הכיתה ElementList. קטע הקוד הבא מראה כיצד לגשת לאלמנטים צאצא של מסמך PDF מתויג:
// לדוגמאות מלאות וקבצי נתונים, אנא עבור ל https://github.com/aspose-pdf/Aspose.PDF-for-.NET
// הנתיב לתיקיית המסמכים.
string dataDir = RunExamples.GetDataDir_AsposePdf_WorkingDocuments();
// פתיחת מסמך PDF
Document document = new Document(dataDir + "StructureElementsTree.pdf");
// קבלת תוכן לעבודה עם PDF מתויג
ITaggedContent taggedContent = document.TaggedContent;
// גישה לאלמנט(ים) שורש
ElementList elementList = taggedContent.StructTreeRootElement.ChildElements;
foreach (Element element in elementList)
{
if (element is StructureElement)
{
StructureElement structureElement = element as StructureElement;
// קבלת מאפיינים
string title = structureElement.Title;
string language = structureElement.Language;
string actualText = structureElement.ActualText;
string expansionText = structureElement.ExpansionText;
string alternativeText = structureElement.AlternativeText;
}
}
// גישה לאלמנטים צאצא של האלמנט הראשון באלמנט שורש
elementList = taggedContent.RootElement.ChildElements[1].ChildElements;
foreach (Element element in elementList)
{
if (element is StructureElement)
{
StructureElement structureElement = element as StructureElement;
// הגדרת מאפיינים
structureElement.Title = "title";
structureElement.Language = "fr-FR";
structureElement.ActualText = "actual text";
structureElement.ExpansionText = "exp";
structureElement.AlternativeText = "alt";
}
}
// שמירת מסמך PDF מתויג
document.Save(dataDir + "AccessChildElements.pdf");
תיוג תמונות במסמך PDF קיים
כדי לתייג תמונות במסמך PDF קיים, Aspose.PDF מציעה את שיטת FindElements של מחלקת StructureElement. ניתן להוסיף טקסט חלופי לדמויות באמצעות תכונת AlternativeText של מחלקת FigureElement.
הדוגמה הבאה מראה כיצד לתייג תמונות במסמך PDF קיים:
// לדוגמאות מלאות וקבצי נתונים, אנא עבורו ל https://github.com/aspose-pdf/Aspose.PDF-for-.NET
// הנתיב לתיקיית המסמכים.
string dataDir = RunExamples.GetDataDir_AsposePdf_WorkingDocuments();
string inFile = dataDir + "TH.pdf";
string outFile = dataDir + "TH_out.pdf";
string logFile = dataDir + "TH_out.xml";
// פתח מסמך
Document document = new Document(inFile);
// מקבל תוכן מתויג ואלמנט מבנה שורש
ITaggedContent taggedContent = document.TaggedContent;
StructureElement rootElement = taggedContent.RootElement;
// הגדר כותרת למסמך PDF מתויג
taggedContent.SetTitle("מסמך עם תמונות");
foreach (FigureElement figureElement in rootElement.FindElements<FigureElement>(true))
{
// הגדר טקסט חלופי לדמות
figureElement.AlternativeText = "טקסט חלופי לדמות (טכניקה 2)";
// צור והגדר את תכונת 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);
}
// הזז אלמנט Span לתוך פסקה (מצא span ופסקה שגויים ב-TD הראשון)
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];
// הזז אלמנט Span לתוך פסקה
spanElement.ChangeParentElement(paragraph);
// שמור מסמך
document.Save(outFile);
// בדיקת תאימות PDF/UA למסמך החדש
document = new Document(outFile);
bool isPdfUaCompliance = document.Validate(logFile, PdfFormat.PDF_UA_1);
Console.WriteLine(String.Format("תאימות PDF/UA: {0}", isPdfUaCompliance));