You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
206 lines
7.6 KiB
206 lines
7.6 KiB
// Copyright 2014 PDFium Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
|
|
|
|
#ifndef PUBLIC_FPDF_DATAAVAIL_H_
|
|
#define PUBLIC_FPDF_DATAAVAIL_H_
|
|
|
|
#include <stddef.h>
|
|
|
|
// NOLINTNEXTLINE(build/include)
|
|
#include "fpdfview.h"
|
|
|
|
#define PDF_LINEARIZATION_UNKNOWN -1
|
|
#define PDF_NOT_LINEARIZED 0
|
|
#define PDF_LINEARIZED 1
|
|
|
|
#define PDF_DATA_ERROR -1
|
|
#define PDF_DATA_NOTAVAIL 0
|
|
#define PDF_DATA_AVAIL 1
|
|
|
|
#define PDF_FORM_ERROR -1
|
|
#define PDF_FORM_NOTAVAIL 0
|
|
#define PDF_FORM_AVAIL 1
|
|
#define PDF_FORM_NOTEXIST 2
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif // __cplusplus
|
|
|
|
// Interface for checking whether sections of the file are available.
|
|
typedef struct _FX_FILEAVAIL {
|
|
// Version number of the interface. Must be 1.
|
|
int version;
|
|
|
|
// Reports if the specified data section is currently available. A section is
|
|
// available if all bytes in the section are available.
|
|
//
|
|
// Interface Version: 1
|
|
// Implementation Required: Yes
|
|
//
|
|
// pThis - pointer to the interface structure.
|
|
// offset - the offset of the data section in the file.
|
|
// size - the size of the data section.
|
|
//
|
|
// Returns true if the specified data section at |offset| of |size|
|
|
// is available.
|
|
FPDF_BOOL (*IsDataAvail)(struct _FX_FILEAVAIL* pThis,
|
|
size_t offset,
|
|
size_t size);
|
|
} FX_FILEAVAIL;
|
|
typedef void* FPDF_AVAIL;
|
|
|
|
// Create a document availability provider.
|
|
//
|
|
// file_avail - pointer to file availability interface.
|
|
// file - pointer to a file access interface.
|
|
//
|
|
// Returns a handle to the document availability provider, or NULL on error.
|
|
//
|
|
// FPDFAvail_Destroy() must be called when done with the availability provider.
|
|
FPDF_EXPORT FPDF_AVAIL FPDF_CALLCONV FPDFAvail_Create(FX_FILEAVAIL* file_avail,
|
|
FPDF_FILEACCESS* file);
|
|
|
|
// Destroy the |avail| document availability provider.
|
|
//
|
|
// avail - handle to document availability provider to be destroyed.
|
|
FPDF_EXPORT void FPDF_CALLCONV FPDFAvail_Destroy(FPDF_AVAIL avail);
|
|
|
|
// Download hints interface. Used to receive hints for further downloading.
|
|
typedef struct _FX_DOWNLOADHINTS {
|
|
// Version number of the interface. Must be 1.
|
|
int version;
|
|
|
|
// Add a section to be downloaded.
|
|
//
|
|
// Interface Version: 1
|
|
// Implementation Required: Yes
|
|
//
|
|
// pThis - pointer to the interface structure.
|
|
// offset - the offset of the hint reported to be downloaded.
|
|
// size - the size of the hint reported to be downloaded.
|
|
//
|
|
// The |offset| and |size| of the section may not be unique. Part of the
|
|
// section might be already available. The download manager must deal with
|
|
// overlapping sections.
|
|
void (*AddSegment)(struct _FX_DOWNLOADHINTS* pThis,
|
|
size_t offset,
|
|
size_t size);
|
|
} FX_DOWNLOADHINTS;
|
|
|
|
// Checks if the document is ready for loading, if not, gets download hints.
|
|
//
|
|
// avail - handle to document availability provider.
|
|
// hints - pointer to a download hints interface.
|
|
//
|
|
// Returns one of:
|
|
// PDF_DATA_ERROR: A common error is returned. Data availability unknown.
|
|
// PDF_DATA_NOTAVAIL: Data not yet available.
|
|
// PDF_DATA_AVAIL: Data available.
|
|
//
|
|
// Applications should call this function whenever new data arrives, and process
|
|
// all the generated download hints, if any, until the function returns
|
|
// |PDF_DATA_ERROR| or |PDF_DATA_AVAIL|.
|
|
// if hints is nullptr, the function just check current document availability.
|
|
//
|
|
// Once all data is available, call FPDFAvail_GetDocument() to get a document
|
|
// handle.
|
|
FPDF_EXPORT int FPDF_CALLCONV FPDFAvail_IsDocAvail(FPDF_AVAIL avail,
|
|
FX_DOWNLOADHINTS* hints);
|
|
|
|
// Get document from the availability provider.
|
|
//
|
|
// avail - handle to document availability provider.
|
|
// password - password for decrypting the PDF file. Optional.
|
|
//
|
|
// Returns a handle to the document.
|
|
//
|
|
// When FPDFAvail_IsDocAvail() returns TRUE, call FPDFAvail_GetDocument() to
|
|
// retrieve the document handle.
|
|
// See the comments for FPDF_LoadDocument() regarding the encoding for
|
|
// |password|.
|
|
FPDF_EXPORT FPDF_DOCUMENT FPDF_CALLCONV
|
|
FPDFAvail_GetDocument(FPDF_AVAIL avail, FPDF_BYTESTRING password);
|
|
|
|
// Get the page number for the first available page in a linearized PDF.
|
|
//
|
|
// doc - document handle.
|
|
//
|
|
// Returns the zero-based index for the first available page.
|
|
//
|
|
// For most linearized PDFs, the first available page will be the first page,
|
|
// however, some PDFs might make another page the first available page.
|
|
// For non-linearized PDFs, this function will always return zero.
|
|
FPDF_EXPORT int FPDF_CALLCONV FPDFAvail_GetFirstPageNum(FPDF_DOCUMENT doc);
|
|
|
|
// Check if |page_index| is ready for loading, if not, get the
|
|
// |FX_DOWNLOADHINTS|.
|
|
//
|
|
// avail - handle to document availability provider.
|
|
// page_index - index number of the page. Zero for the first page.
|
|
// hints - pointer to a download hints interface. Populated if
|
|
// |page_index| is not available.
|
|
//
|
|
// Returns one of:
|
|
// PDF_DATA_ERROR: A common error is returned. Data availability unknown.
|
|
// PDF_DATA_NOTAVAIL: Data not yet available.
|
|
// PDF_DATA_AVAIL: Data available.
|
|
//
|
|
// This function can be called only after FPDFAvail_GetDocument() is called.
|
|
// Applications should call this function whenever new data arrives and process
|
|
// all the generated download |hints|, if any, until this function returns
|
|
// |PDF_DATA_ERROR| or |PDF_DATA_AVAIL|. Applications can then perform page
|
|
// loading.
|
|
// if hints is nullptr, the function just check current availability of
|
|
// specified page.
|
|
FPDF_EXPORT int FPDF_CALLCONV FPDFAvail_IsPageAvail(FPDF_AVAIL avail,
|
|
int page_index,
|
|
FX_DOWNLOADHINTS* hints);
|
|
|
|
// Check if form data is ready for initialization, if not, get the
|
|
// |FX_DOWNLOADHINTS|.
|
|
//
|
|
// avail - handle to document availability provider.
|
|
// hints - pointer to a download hints interface. Populated if form is not
|
|
// ready for initialization.
|
|
//
|
|
// Returns one of:
|
|
// PDF_FORM_ERROR: A common eror, in general incorrect parameters.
|
|
// PDF_FORM_NOTAVAIL: Data not available.
|
|
// PDF_FORM_AVAIL: Data available.
|
|
// PDF_FORM_NOTEXIST: No form data.
|
|
//
|
|
// This function can be called only after FPDFAvail_GetDocument() is called.
|
|
// The application should call this function whenever new data arrives and
|
|
// process all the generated download |hints|, if any, until the function
|
|
// |PDF_FORM_ERROR|, |PDF_FORM_AVAIL| or |PDF_FORM_NOTEXIST|.
|
|
// if hints is nullptr, the function just check current form availability.
|
|
//
|
|
// Applications can then perform page loading. It is recommend to call
|
|
// FPDFDOC_InitFormFillEnvironment() when |PDF_FORM_AVAIL| is returned.
|
|
FPDF_EXPORT int FPDF_CALLCONV FPDFAvail_IsFormAvail(FPDF_AVAIL avail,
|
|
FX_DOWNLOADHINTS* hints);
|
|
|
|
// Check whether a document is a linearized PDF.
|
|
//
|
|
// avail - handle to document availability provider.
|
|
//
|
|
// Returns one of:
|
|
// PDF_LINEARIZED
|
|
// PDF_NOT_LINEARIZED
|
|
// PDF_LINEARIZATION_UNKNOWN
|
|
//
|
|
// FPDFAvail_IsLinearized() will return |PDF_LINEARIZED| or |PDF_NOT_LINEARIZED|
|
|
// when we have 1k of data. If the files size less than 1k, it returns
|
|
// |PDF_LINEARIZATION_UNKNOWN| as there is insufficient information to determine
|
|
// if the PDF is linearlized.
|
|
FPDF_EXPORT int FPDF_CALLCONV FPDFAvail_IsLinearized(FPDF_AVAIL avail);
|
|
|
|
#ifdef __cplusplus
|
|
} // extern "C"
|
|
#endif // __cplusplus
|
|
|
|
#endif // PUBLIC_FPDF_DATAAVAIL_H_
|