Skip to content

Wrapper

Wrapper gives users a way to store data associated with a PDF document. For example, when opening an encrypted PDF without authorization, the user sees an error indicating they do not have permission to access the document. In that case, even if the user cannot access PDF content, they can still access the document's wrapper data. Wrapper data can provide information such as how to decrypt the document.

Open a PDF document that contains wrapper data

c++
#include "include/common/fs_common.h"
#include "include/pdf/fs_pdfdoc.h"
#include "include/pdf/fs_pdfpage.h"
#include "include/common/fs_render.h"

using namespace foxit;
using namespace foxit::common;
using foxit::common::Library;
using namespace pdf;
using namespace common::file;

// file_name is PDF document which includes wrapper data.
PDFDoc doc(file_name);
ErrorCode code = doc.Load();
if (code != foxit::e_ErrSuccess) {
    return false;
}
if(!doc.IsWrapper()){
    return false;
}
int64 offset = doc.GetWrapperOffset();

FileReader file_reader(offset);
file_reader.LoadFile(String::FromUnicode(file_name));
...
C
#include "include/fs_basictypes_c.h"
#include "include/fs_common_c.h"
#include "include/fs_pdfdoc_c.h"
#include "include/fs_pdfpage_c.h"
#include "include/fs_render_c.h"

// file_name is PDF document which includes wrapper data.
FS_PDFDOC_HANDLE doc;
FSDK_PDFDoc_Create0(input_file, &doc);
FSErrorCode code = FSDK_PDFDoc_Load(doc_wrapper, NULL);
if (e_FSErrSuccess) {
    FSDK_PDFDoc_Release(doc); 
    return false;
}
FS_BOOL return_iswrapper;
FSDK_PDFDoc_IsWrapper(doc, &return_iswrapper);
if(!return_iswrapper){
    return false;
}
FS_INT64 offset;
FSDK_PDFDoc_GetWrapperOffset(doc, &offset);

FileReader file_reader(offset);
file_reader.LoadFile(file_name);
...
java
import com.foxit.sdk.common.fxcrt.FileReaderCallback;

import com.foxit.sdk.pdf.PDFDoc;
import com.foxit.sdk.pdf.WrapperData;
...

PDFDoc doc = new PDFDoc(file_name);
int code = doc.load(null);
if (code != e_ErrSuccess) {
    return;
}
if (!doc.isWrapper()) {
    return;
}
int offset = doc.getWrapperOffset();
FileReader file_reader = new FileReader(offset);
file_reader.LoadFile(file_name);

PDFDoc doc_real = new PDFDoc(file_reader, false);
code = doc_real.load(null);
if (code != e_ErrSuccess) {
    return;
}
...
py
import sys
import site

if sys.version_info.major == 2:
    _PYTHON2_ = True
else:
    _PYTHON2_ = False

if _PYTHON2_:
    #replace with the python2 lib path
    site.addsitedir('../../../')
    from FoxitPDFSDKPython2 import *
else:
    from FoxitPDFSDKPython3 import *
# file_name is PDF document which includes wrapper data.
doc = PDFDoc(file_name)
code = doc.Load()
if code != e_ErrSuccess:
    return False

if not doc.IsWrapper():
    return False

offset = doc.GetWrapperOffset()

file_reader = FileReader(offset)
file_reader.LoadFile(file_name)
...
objc
#include "FSPDFObjC.h"
...

FSPDFDoc *doc = [[FSPDFDoc alloc] initWithPath:file_name];
FSErrorCode code = [doc load:nil];
if (code != FSErrSuccess) {
    return -1;
}
if (![doc isWrapper]) {
    return -1;
}
long long offset = [doc getWrapperOffset];
FSFileRead *file_reader = [[FSFileRead alloc] initWithSourceFilePath:file_name offset:offset];

FSPDFDoc *doc_real = [[FSPDFDoc alloc] initWithFile_read:file_reader is_async:NO];
code = [doc_real load:nil];
if (code != FSErrSuccess) {
    return -1;
}	
...
js
const FSDK = require("@fuxinsoft/foxit-pdf-sdk-node");
// file_name is PDF document which includes wrapper data.
let doc = new FSDK.PDFDoc(file_name);
let code = doc.Load("");
if (code != FSDK.e_ErrSuccess) {
    return false;
}

  if(!doc.IsWrapper()){
    return false;
  }

let offset = doc.GetWrapperOffset();

let file_reader = new FileReader(offset);
file_reader.LoadFile(file_name);
let reader_callback = new FSDK.FileReaderCallback(file_reader);
...
csharp
using foxit;
using foxit.common;
using foxit.common.fxcrt;
using foxit.pdf;
using foxit.pdf.graphics;
using foxit.pdf.objects;

// Assuming PDFDoc doc has been loaded.
 
// file_name is PDF document which includes wrapper data.
PDFDoc doc = new PDFDoc(file_name);
ErrorCode code = doc.Load(null);
if (code != ErrorCode.e_ErrSuccess)
{
return;
}
if (!doc.IsWrapper())
{
return;
}

long offset = doc.GetWrapperOffset();
FileReader file_reader = new FileReader(offset);
file_reader.LoadFile(file_name);
...
go
import (
. “foxit.com/fsdk”
)

# file_name is PDF document which includes wrapper data.
doc := NewPDFDoc(file_name)
code := doc.Load()
if code != E_ErrSuccess:
    return false

if ! doc.IsWrapper(){
    return false
}
offset := doc.GetWrapperOffset()

file_reader := FileReader{offset}
file_reader.LoadFile(file_name)
...