00001
00002
00003
00004
00005
00006 #ifndef H_CPPSDFDoc
00007 #define H_CPPSDFDoc
00008
00009 #include <Common/Matrix2D.h>
00010 #include <Filters/FilterReader.h>
00011 #include <vector>
00012
00013 namespace pdftron {
00014 namespace Common {
00015 struct ProgressMonitor;
00016 }
00017
00018 namespace SDF {
00019
00020
00021
00022 class Obj;
00023 class SecurityHandler;
00024
00068 class SDFDoc
00069 {
00070 public:
00071
00078 SDFDoc ();
00079
00088 SDFDoc (const UString& filepath);
00089 SDFDoc (const char* filepath);
00090
00105 SDFDoc (Filters::Filter stream);
00106
00120 SDFDoc (const char* buf, size_t buf_size);
00121
00125 ~SDFDoc ();
00126
00130 bool IsEncrypted();
00131
00157 bool InitSecurityHandler (void* custom_data = 0);
00158
00189 bool InitStdSecurityHandler (const char* password, int password_sz = 0);
00190
00194 bool IsModified () const;
00195
00199 bool IsFullSaveRequired () const;
00200
00205 Obj GetTrailer ();
00206
00212 Obj GetObj (const UInt32 obj_num) const;
00213
00228 Obj ImportObj (Obj obj, bool deep_copy);
00229
00244 std::vector<Obj> ImportObjs(const std::vector<Obj>& obj_list);
00245
00249 UInt32 XRefSize () const;
00250
00254 void ClearMarks ();
00255
00256 enum SaveOptions
00257 {
00258 e_incremental = 0x01,
00259 e_remove_unused = 0x02,
00260 e_hex_strings = 0x04,
00261 e_omit_xref = 0x08,
00262 e_linearized = 0x10
00263 };
00264
00287 void Save(const UString& path, UInt32 flags, Common::ProgressMonitor* progress, const char* header);
00288
00304 void Save(const char* &out_buf, size_t& out_buf_size, UInt32 flags, Common::ProgressMonitor* progress, const char* header);
00305
00314 const char* GetHeader() const;
00315
00330 SecurityHandler GetSecurityHandler ();
00331
00343 void SetSecurityHandler (SecurityHandler handler);
00344
00348 void RemoveSecurity();
00349
00365 void Swap(UInt32 obj_num1, UInt32 obj_num2);
00366
00375 Obj CreateIndirectName(const char* name);
00376 Obj CreateIndirectArray();
00377 Obj CreateIndirectBool(bool value);
00378 Obj CreateIndirectDict();
00379 Obj CreateIndirectNull();
00380 Obj CreateIndirectNumber(double value);
00381 Obj CreateIndirectString(const UChar* value, UInt32 size);
00382 Obj CreateIndirectString(const UString& str);
00383
00387 Obj CreateIndirectStream(Filters::FilterReader& data, Filters::Filter filter_chain=Filters::Filter());
00388 Obj CreateIndirectStream(const char* data, const size_t data_size, Filters::Filter filter_chain =Filters::Filter());
00389
00390
00410 bool IsLinearized() const;
00411
00418 SDF::Obj GetLinearizationDict() const;
00419
00426 SDF::Obj GetHintStream() const;
00427
00433 void Lock();
00434
00438 void Unlock();
00439
00443 bool IsLocked();
00444
00449 bool TryLock( int milliseconds = 0 );
00450
00456 UString GetFileName() const;
00457
00463 void EnableDiskCaching( bool use_cache_flag );
00464
00466 SDFDoc(TRN_SDFDoc doc) : mp_doc(doc) {}
00467 TRN_SDFDoc mp_doc;
00468 private:
00469 SDFDoc(SDFDoc& other);
00470 SDFDoc& operator=(SDFDoc& other);
00472 };
00473
00474
00475 };
00476 };
00477
00478
00479 #include <Impl/SDFDoc.inl>
00480 #endif
00481