public static void Run( String email, // authorization email String licenseKey, // authorization license key String openPath, // source PDF document String savePath // dest PDF document ) { pdfix = new Pdfix(); if (pdfix == null) { throw new Exception("Pdfix initialization fail"); } if (!pdfix.Authorize(email, licenseKey)) { throw new Exception(pdfix.GetErrorType().ToString()); } PdfDoc doc = pdfix.OpenDoc(openPath, ""); if (doc == null) { throw new Exception(pdfix.GetError()); } // cleanup any previous structure tree if (!doc.RemoveTags(null, IntPtr.Zero)) { throw new Exception(pdfix.GetErrorType().ToString()); } // autotag document first if (!doc.AddTags(null, IntPtr.Zero)) { throw new Exception(pdfix.GetErrorType().ToString()); } // read document structure tree PdsStructTree struct_tree = doc.GetStructTree(); if (struct_tree == null) { Console.WriteLine("No Tags available"); } else { for (var i = 0; i < struct_tree.GetNumKids(); i++) { PdsObject kid_object = struct_tree.GetKidObject(i); PdsStructElement struct_elem = struct_tree.AcquireStructElement(kid_object); ProcessStructElement(doc, struct_elem, ""); struct_elem.Release(); } } doc.Close(); pdfix.Destroy(); }
private static PdsStructElement GetFirstParagraph(PdsStructTree struct_tree) { for (int i = 0; i < struct_tree.GetNumKids(); i++) { PdsObject kid_obj = struct_tree.GetKidObject(i); PdsStructElement kid_elem = struct_tree.AcquireStructElement(kid_obj); var paragraph = GetFirstParagraph(kid_elem); if (paragraph != null) { kid_elem.Release(); return(paragraph); } kid_elem.Release(); } return(null); }
public static void Run( String email, // authorization email String licenseKey, // authorization license key String openPath, // source PDF document String savePath // dest PDF document ) { pdfix = new Pdfix(); if (pdfix == null) { throw new Exception("Pdfix initialization fail"); } if (!pdfix.Authorize(email, licenseKey)) { throw new Exception(pdfix.GetErrorType().ToString()); } PdfDoc doc = pdfix.OpenDoc(openPath, ""); if (doc == null) { throw new Exception(pdfix.GetError()); } // cleanup any previous structure tree if (!doc.RemoveTags(null, IntPtr.Zero)) { throw new Exception(pdfix.GetErrorType().ToString()); } // autotag document first if (!doc.AddTags(null, IntPtr.Zero)) { throw new Exception(pdfix.GetErrorType().ToString()); } // get the struct tree PdsStructTree struct_tree = doc.GetStructTree(); if (struct_tree == null) { throw new Exception(pdfix.GetErrorType().ToString()); } // tag text on the bottom of the page as artifact for (int i = 0; i < struct_tree.GetNumKids(); i++) { PdsObject kid_obj = struct_tree.GetKidObject(i); PdsStructElement kid_elem = struct_tree.AcquireStructElement(kid_obj); TagParagraphAsHeading(kid_elem); kid_elem.Release(); } if (!doc.Save(savePath, PdfSaveFlags.kSaveFull)) { throw new Exception(pdfix.GetError()); } doc.Close(); pdfix.Destroy(); }