All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
PDFDoc.h
Go to the documentation of this file.
1 //---------------------------------------------------------------------------------------
2 // Copyright (c) 2001-2018 by PDFTron Systems Inc. All Rights Reserved.
3 // Consult legal.txt regarding legal and license information.
4 //---------------------------------------------------------------------------------------
5 #ifndef PDFTRON_H_CPPPDFPDFDoc
6 #define PDFTRON_H_CPPPDFPDFDoc
7 
8 #include <FDF/FDFDoc.h>
9 #include <PDF/PDFDocInfo.h>
10 #include <PDF/PageLabel.h>
11 //#include <PDF/OCG/Config.h>
12 #include <C/PDF/TRN_PDFDoc.h>
13 #include <PDF/PDFDocViewPrefs.h>
14 #include <SDF/SDFDoc.h>
15 #include <PDF/Page.h>
16 #include <PDF/PageSet.h>
17 #include <PDF/Annot.h>
18 #include <Common/Iterator.h>
19 #include <SDF/SignatureHandler.h>
20 
21 namespace pdftron {
22  namespace PDF {
23  namespace OCG{
24  class Config;
25  }
26  namespace Struct{class STree;};
27 
33 
39 
40 
57 class PDFDoc
58 {
59 public:
60 
64  PDFDoc ();
65 
75  PDFDoc (SDF::SDFDoc& sdfdoc);
76 
84  PDFDoc(const PDFDoc& other);
85  PDFDoc& operator= (const PDFDoc&);
86 
95  PDFDoc (const UString& filepath);
96  PDFDoc (const char* filepath);
97 
112  PDFDoc (Filters::Filter stream);
113 
123  PDFDoc (const UChar* buf, size_t buf_size);
124 
128  ~PDFDoc ();
129 
133  void Close();
134 
138  bool IsEncrypted();
139 
165  bool InitSecurityHandler (
166 #ifndef SWIG
167  void* custom_data = 0
168 #endif
169  );
170 
203  bool InitStdSecurityHandler(const char* password, int password_sz);
204 
231  bool InitStdSecurityHandler(const pdftron::UString& password);
232 
259  bool InitStdSecurityHandler(const std::vector<UInt8>& password_buf);
260 
276 
289 
293  void RemoveSecurity();
294 
299  bool HasSignatures();
300 
309 
319  SDF::SignatureHandlerId AddStdSignatureHandler(const UString& pkcs12_keyfile, const UString& pkcs12_keypass);
320 
330  SDF::SignatureHandlerId AddStdSignatureHandler(const std::vector<unsigned char>& pkcs12_keybuffer, const UString& pkcs12_keypass);
331 
337  void RemoveSignatureHandler(const SDF::SignatureHandlerId signature_handler_id);
338 
347 
353 
362 
364  {
365  e_action_trigger_doc_will_close = 17, //Triggered before closing a document
366  e_action_trigger_doc_will_save = 18, //Triggered before saving a document
367  e_action_trigger_doc_did_save = 19, //Triggered after saving a document
368  e_action_trigger_doc_will_print = 20, //Triggered before printing a document
369  e_action_trigger_doc_did_print = 21 //Triggered after printing a document
370  };
371 
379 
386  bool IsModified () const;
387 
399  bool HasRepairedXRef() const;
400 
420  bool IsLinearized() const;
421 
449  void Save(const UString& path, UInt32 flags);
450 
451 #ifndef SWIG
452  void Save(const UString& path, UInt32 flags, Common::ProgressMonitor* progress);
453 #endif
454 
475  std::vector<unsigned char> Save(UInt32 flags);
476 
477 #ifndef SWIG
478  void Save(const char* &out_buf, size_t& out_buf_size, UInt32 flags, Common::ProgressMonitor* progress);
479 #endif
480 
497  void Save(Filters::Filter stream, UInt32 flags);
498 
515  PageIterator GetPageIterator(UInt32 page_number=1);
516 
530  Page GetPage(UInt32 page_number);
531 
537  void PageRemove(const PageIterator& page_itr);
538 
539  enum InsertFlag {
540  e_none, //default, do not insert bookmarks
541  e_insert_bookmark //insert bookmarks
542  };
543 
554  void PageInsert(PageIterator& where, Page page);
555 
568  void InsertPages(int insert_before_page_number
569  , PDFDoc& src_doc
570  , int start_page
571  , int end_page
572  , enum InsertFlag flag
573 #ifndef SWIG
574  , Common::ProgressMonitor * monitor = 0
575 #endif
576  );
577 
589  void InsertPages(int insert_before_page_number
590  , PDFDoc& src_doc
591  , const PageSet& source_page_set
592  , enum InsertFlag flag
593 #ifndef SWIG
594  , Common::ProgressMonitor * monitor = 0
595 #endif
596  );
597 
598 
613  void MovePages(int move_before_page_number
614  , PDFDoc& src_doc
615  , int start_page
616  , int end_page
617  , enum InsertFlag flag
618 #ifndef SWIG
619  , Common::ProgressMonitor * monitor = 0
620 #endif
621  );
622 
623 
637  void MovePages(int move_before_page_number
638  , PDFDoc& src_doc
639  , const PageSet& source_page_set
640  , enum InsertFlag flag
641 #ifndef SWIG
642  , Common::ProgressMonitor * monitor = 0
643 #endif
644  );
645 
651  void PagePushFront(Page page);
652 
658  void PagePushBack(Page page);
659 
676  std::vector<Page> ImportPages(const std::vector<Page>& pages, bool import_bookmarks = false);
677 
743  Page PageCreate(const Rect& media_box = Rect(0, 0, 612, 792));
744 
750  class Bookmark GetFirstBookmark();
751 
758  void AddRootBookmark(class Bookmark root_bookmark);
759 
763  SDF::Obj GetTrailer ();
764 
769  SDF::Obj GetRoot();
770 
774  SDF::Obj GetPages();
775 
779  int GetPageCount ();
780 
805  FieldIterator GetFieldIterator(const UString& field_name);
806 
823  Field GetField(const UString& field_name);
824 
840  Field FieldCreate(const UString& field_name,
841  Field::Type type,
842  SDF::Obj field_value = 0,
843  SDF::Obj def_field_value = 0);
844 
845  Field FieldCreate(const UString& field_name,
846  Field::Type type,
847  const UString& field_value,
848  const UString& def_field_value);
849 
856 
862  void FlattenAnnotations(bool forms_only = false);
863 
868 
869  enum ExtractFlag {
870  e_forms_only, // default, only extract form fields to FDF
871  e_annots_only, // only extract annots
872  e_both, // extract both form fields and annots
873  e_annots_only_no_links = 5 // same as e_annots_only but no url links get converted
874  };
875 
882 
889  FDF::FDFDoc FDFExtract(PageSet& pages_to_extract, enum ExtractFlag flag = e_forms_only);
890 
896  FDF::FDFDoc FDFExtract(const std::vector<Annot>& annotations);
897 
905  FDF::FDFDoc FDFExtract(const std::vector<Annot>& annot_added, const std::vector<Annot>& annot_modified, const std::vector<Annot>& annot_deleted);
906 
911  void FDFMerge(FDF::FDFDoc& fdf_doc);
912 
918  void FDFUpdate(FDF::FDFDoc& fdf_doc);
919 
929 
937  void SetOpenAction(const Action& action);
938 
956  void AddFileAttachment(const UString& file_key, FileSpec embedded_file);
957 
966  PageLabel GetPageLabel(int page_num);
967 
978  void SetPageLabel(int page_num, PageLabel& label);
979 
989  void RemovePageLabel(int page_num);
990 
994  bool IsTagged();
995 
1000 
1007  bool HasOC() const;
1008 
1015  SDF::Obj GetOCGs() const;
1016 
1021  OCG::Config GetOCGConfig() const;
1022 
1034  void AddHighlights(const UString& hilite);
1035 
1043  SDF::Obj CreateIndirectName(const char* name);
1060  SDF::Obj CreateIndirectBool(bool value);
1085  SDF::Obj CreateIndirectNumber(double value);
1095  SDF::Obj CreateIndirectString(const UChar* value, UInt32 size);
1125  SDF::Obj CreateIndirectStream(const char* data, const size_t data_size, Filters::Filter filter_chain = Filters::Filter (0,false));
1126 
1130  SDF::SDFDoc& GetSDFDoc ();
1131 
1136  operator SDF::SDFDoc& () { return GetSDFDoc(); }
1137 
1138 
1144  void Lock();
1145 
1149  void Unlock();
1150 
1156  bool TryLock( int milliseconds = 0 );
1157 
1168  void LockRead();
1169 
1173  void UnlockRead();
1174 
1181  bool TryLockRead( int milliseconds = 0 );
1182 
1188  UString GetFileName() const;
1189 
1194  void GenerateThumbnails(UInt32 size);
1195 
1196 
1197  //for xamarin use only
1198  static PDFDoc* CreateInternal(ptrdiff_t impl);
1199  ptrdiff_t GetHandleInternal();
1200 
1202 #ifndef SWIGHIDDEN
1203 
1204  TRN_PDFDoc mp_doc;
1205  //for xamarin use only
1206  PDFDoc(TRN_PDFDoc impl) : mp_doc(impl) {}
1207 #endif
1208 
1210 };
1211 
1212  }; // namespace PDF
1213 }; // namespace pdftron
1214 
1215 
1216 #include <Impl/PDFDoc.inl>
1217 
1218 #endif // PDFTRON_H_CPPPDFPDFDoc
void PageInsert(PageIterator &where, Page page)
void FDFMerge(FDF::FDFDoc &fdf_doc)
SDF::SignatureHandler * GetSignatureHandler(const SDF::SignatureHandlerId signature_handler_id)
Page PageCreate(const Rect &media_box=Rect(0, 0, 612, 792))
void RemoveSignatureHandler(const SDF::SignatureHandlerId signature_handler_id)
OCG::Config GetOCGConfig() const
PageLabel GetPageLabel(int page_num)
size_t SignatureHandlerId
SDF::Obj CreateIndirectBool(bool value)
ptrdiff_t GetHandleInternal()
SDF::Obj CreateIndirectNumber(double value)
void SetOpenAction(const Action &action)
void SetSecurityHandler(SDF::SecurityHandler handler)
SDF::Obj GetOCGs() const
Struct::STree GetStructTree()
bool TryLock(int milliseconds=0)
void InsertPages(int insert_before_page_number, PDFDoc &src_doc, int start_page, int end_page, enum InsertFlag flag, Common::ProgressMonitor *monitor=0)
SDF::Obj CreateIndirectName(const char *name)
void PagePushFront(Page page)
void PagePushBack(Page page)
UString GetFileName() const
bool HasRepairedXRef() const
void SetPageLabel(int page_num, PageLabel &label)
void AddFileAttachment(const UString &file_key, FileSpec embedded_file)
PDFDocViewPrefs GetViewPrefs()
void AddRootBookmark(class Bookmark root_bookmark)
Page GetPage(UInt32 page_number)
SDF::SignatureHandlerId AddStdSignatureHandler(const UString &pkcs12_keyfile, const UString &pkcs12_keypass)
SDF::Obj GetTriggerAction(PDFDoc::ActionTriggerEvent trigger)
bool IsLinearized() const
Common::Iterator< Field > FieldIterator
Definition: PDFDoc.h:38
TRN_UInt32 UInt32
Definition: BasicTypes.h:13
void PageRemove(const PageIterator &page_itr)
bool HasOC() const
TRN_UChar UChar
Definition: BasicTypes.h:12
std::vector< Page > ImportPages(const std::vector< Page > &pages, bool import_bookmarks=false)
bool InitStdSecurityHandler(const char *password, int password_sz)
Field FieldCreate(const UString &field_name, Field::Type type, SDF::Obj field_value=0, SDF::Obj def_field_value=0)
FieldIterator GetFieldIterator()
bool IsModified() const
bool TryLockRead(int milliseconds=0)
SDF::Obj CreateIndirectStream(Filters::FilterReader &data, Filters::Filter filter_chain=Filters::Filter(0, false))
void FlattenAnnotations(bool forms_only=false)
Field GetField(const UString &field_name)
SDF::SignatureHandlerId AddSignatureHandler(const SDF::SignatureHandler &signature_handler)
SDF::Obj CreateIndirectNull()
bool InitSecurityHandler(void *custom_data=0)
void RefreshFieldAppearances()
void Save(const UString &path, UInt32 flags)
SDF::Obj CreateIndirectString(const UChar *value, UInt32 size)
SDF::Obj CreateIndirectArray()
void AddHighlights(const UString &hilite)
PDFDocInfo GetDocInfo()
void MovePages(int move_before_page_number, PDFDoc &src_doc, int start_page, int end_page, enum InsertFlag flag, Common::ProgressMonitor *monitor=0)
static PDFDoc * CreateInternal(ptrdiff_t impl)
PageIterator GetPageIterator(UInt32 page_number=1)
void GenerateThumbnails(UInt32 size)
SDF::SDFDoc & GetSDFDoc()
SDF::Obj CreateIndirectDict()
SDF::SecurityHandler GetSecurityHandler()
Common::Iterator< Page > PageIterator
Definition: PDFDoc.h:26
PDFDoc & operator=(const PDFDoc &)
void FDFUpdate(FDF::FDFDoc &fdf_doc)
FDF::FDFDoc FDFExtract(enum ExtractFlag flag=e_forms_only)
void RemovePageLabel(int page_num)
class Bookmark GetFirstBookmark()
SDF::Obj GetAcroForm()

© 2002-2014 PDFTron Systems Inc.