mirror of
				https://github.com/johnwhitington/cpdf-source.git
				synced 2025-06-05 22:09:39 +02:00 
			
		
		
		
	beginning python splits
This commit is contained in:
		
							
								
								
									
										
											BIN
										
									
								
								cpdfmanual.pdf
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								cpdfmanual.pdf
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							@@ -1,6 +1,6 @@
 | 
			
		||||
\documentclass{book}
 | 
			
		||||
% Edit here to produce cpdfmanual.pdf, cpdflibmanual.pdf, pycpdfmanual.pdf etc.
 | 
			
		||||
\usepackage{comment}\excludecomment{cpdflib}\excludecomment{pycpdflib}
 | 
			
		||||
\usepackage{comment}\excludecomment{cpdflib}\includecomment{pycpdflib}
 | 
			
		||||
\usepackage{palatino}
 | 
			
		||||
\usepackage{listings}
 | 
			
		||||
\usepackage{microtype}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,8 +1,16 @@
 | 
			
		||||
/*
 | 
			
		||||
 * A C wrapper to cpdf PDF tools library. Free for non-commercial use. See
 | 
			
		||||
 * LICENSE for details. To purchase a license, please visit
 | 
			
		||||
 * http://www.coherentpdf.com/
 | 
			
		||||
 *
 | 
			
		||||
 * Text arguments and results are in UTF8.
 | 
			
		||||
 */
 | 
			
		||||
"""Pycpdf: a python interface to cpdf.
 | 
			
		||||
 | 
			
		||||
Before using the library, you must load the libpycpdf and libcpdf DLLs. This is
 | 
			
		||||
achieved with the pycpdf.loadDLL function, given the filename or full path of
 | 
			
		||||
the libpycpdf DLL.  On Windows, you may have to call os.add_dll_directory
 | 
			
		||||
first. On MacOS, you may need to give the full path, and you may need to
 | 
			
		||||
install libcpdf.so in a standard location /usr/local/lib/, or use the
 | 
			
		||||
install_name_tool command to tell libpycpdf.so where to find libcpdf.so.
 | 
			
		||||
 | 
			
		||||
A 'range' is a list of integers specifying page numbers.
 | 
			
		||||
 | 
			
		||||
Text arguments and results are in UTF8.
 | 
			
		||||
 | 
			
		||||
Any function may raise the exception CPDFError, carrying a string describing
 | 
			
		||||
the error.
 | 
			
		||||
"""
 | 
			
		||||
 
 | 
			
		||||
@@ -1,36 +1,45 @@
 | 
			
		||||
/* CHAPTER 0. Preliminaries */
 | 
			
		||||
# CHAPTER 0. Preliminaries
 | 
			
		||||
 | 
			
		||||
/* The function cpdf_startup(argv) must be called before using the library.  */
 | 
			
		||||
void cpdf_startup(char **);
 | 
			
		||||
def loadDLL(f):
 | 
			
		||||
    """Load the libpycpdf DLL from a given file, and set up pycpdflib."""
 | 
			
		||||
 | 
			
		||||
/* Return the version of the cpdflib library as a string */
 | 
			
		||||
char *cpdf_version();
 | 
			
		||||
class Pdf:
 | 
			
		||||
    """The type of PDF documents."""
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Some operations have a fast mode. The default is 'slow' mode, which works
 | 
			
		||||
 * even on old-fashioned files. For more details, see section 1.13 of the
 | 
			
		||||
 * CPDF manual. These functions set the mode globally.
 | 
			
		||||
 */
 | 
			
		||||
void cpdf_setFast();
 | 
			
		||||
void cpdf_setSlow();
 | 
			
		||||
class CPDFError(Exception):
 | 
			
		||||
    """Any function may raise an exception CPDFError, carrying a string
 | 
			
		||||
    describing what went wrong"""
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Errors. cpdf_lastError and cpdf_lastErrorString hold information about the
 | 
			
		||||
 * last error to have occurred. They should be consulted after each call. If
 | 
			
		||||
 * cpdf_lastError is non-zero, there was an error, and cpdf_lastErrorString
 | 
			
		||||
 * gives details. If cpdf_lastError is zero, there was no error on the most
 | 
			
		||||
 * recent cpdf call.
 | 
			
		||||
 */
 | 
			
		||||
extern int cpdf_lastError;
 | 
			
		||||
extern char *cpdf_lastErrorString;
 | 
			
		||||
def lastError():
 | 
			
		||||
    """Return the last error. Not usually used directly, since pycpdflib
 | 
			
		||||
    functions raise exceptions."""
 | 
			
		||||
 | 
			
		||||
/* cpdf_clearError clears the current error state. */
 | 
			
		||||
void cpdf_clearError(void);
 | 
			
		||||
def lastErrorString():
 | 
			
		||||
    """Return the last error string. Not usually used directly, since pycpdflib
 | 
			
		||||
    functions raise exceptions."""
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpdf_onExit is a debug function which prints some information about
 | 
			
		||||
 * resource usage. This can be used to detect if PDFs or ranges are being
 | 
			
		||||
 * deallocated properly. Contrary to its name, it may be run at any time.
 | 
			
		||||
 */
 | 
			
		||||
void cpdf_onExit(void);
 | 
			
		||||
def checkerror():
 | 
			
		||||
    """Raise an exception if the last function call resulted in an error. Not
 | 
			
		||||
    used directly, since pycpdflib functions will raise the exception
 | 
			
		||||
    directly."""
 | 
			
		||||
 | 
			
		||||
def version():
 | 
			
		||||
    """Returns the version number of the pycpdflib library."""
 | 
			
		||||
 | 
			
		||||
def setFast():
 | 
			
		||||
    """ Some operations have a fast mode. The default is 'slow' mode, which
 | 
			
		||||
    works even on old-fashioned files. For more details, see section 1.13 of
 | 
			
		||||
    the CPDF manual. These functions set the mode globally. """
 | 
			
		||||
 | 
			
		||||
def setSlow():
 | 
			
		||||
    """ Some operations have a fast mode. The default is 'slow' mode, which
 | 
			
		||||
    works even on old-fashioned files. For more details, see section 1.13 of
 | 
			
		||||
    the CPDF manual. These functions set the mode globally. """
 | 
			
		||||
 | 
			
		||||
def clearError():
 | 
			
		||||
    """ clearError clears the current error state. """
 | 
			
		||||
 | 
			
		||||
def onExit():
 | 
			
		||||
    """ onExit is a debug function which prints some information about
 | 
			
		||||
    resource usage. This can be used to detect if PDFs or ranges are being
 | 
			
		||||
    deallocated properly."""
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										457
									
								
								pysplits/c02.tex
									
									
									
									
									
								
							
							
						
						
									
										457
									
								
								pysplits/c02.tex
									
									
									
									
									
								
							@@ -1,332 +1,209 @@
 | 
			
		||||
/* CHAPTER 1. Basics */
 | 
			
		||||
# CHAPTER 1. Basics
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpdf_fromFile(filename, userpw) loads a PDF file from a given file. Supply
 | 
			
		||||
 * a user password (possibly blank) in case the file is encrypted. It won't be
 | 
			
		||||
 * decrypted, but sometimes the password is needed just to load the file.
 | 
			
		||||
 */
 | 
			
		||||
int cpdf_fromFile(const char[], const char[]);
 | 
			
		||||
def fromFile(filename, userpw):
 | 
			
		||||
    """ fromFile(filename, userpw) loads a PDF file from a given file.
 | 
			
		||||
    Supply a user password (possibly blank) in case the file is encypted. It
 | 
			
		||||
    won't be decrypted, but sometimes the password is needed just to load the
 | 
			
		||||
    file."""
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpdf_fromFileLazy(pdf, userpw) loads a PDF from a file, doing only minimal
 | 
			
		||||
 * parsing. The objects will be read and parsed when they are actually
 | 
			
		||||
 * needed. Use this when the whole file won't be required. Also supply a user
 | 
			
		||||
 * password (possibly blank) in case the file is encrypted. It won't be
 | 
			
		||||
 * decrypted, but sometimes the password is needed just to load the file.
 | 
			
		||||
 */
 | 
			
		||||
int cpdf_fromFileLazy(const char[], const char[]);
 | 
			
		||||
def fromFileLazy(filename, userpw):
 | 
			
		||||
    """ fromFileLazy(pdf, userpw) loads a PDF from a file, doing only
 | 
			
		||||
    minimal parsing. The objects will be read and parsed when they are actually
 | 
			
		||||
    needed.  Use this when the whole file won't be required. Also supply a user
 | 
			
		||||
    password (possibly blank) in case the file is encypted. It won't be
 | 
			
		||||
    decrypted, but sometimes the password is needed just to load the file."""
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpdf_fromMemory(data, length, userpw) loads a file from memory, given a
 | 
			
		||||
 * pointer and a length, and the user password.
 | 
			
		||||
 */
 | 
			
		||||
int cpdf_fromMemory(void *, int, const char[]);
 | 
			
		||||
def fromMemory(data, userpw):
 | 
			
		||||
    """ fromMemory(data, length, userpw) loads a file from memory, given a
 | 
			
		||||
    pointer and a length, and the user password."""
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpdf_fromMemory(data, length, userpw) loads a file from memory, given a
 | 
			
		||||
 * pointer and a length, and the user password, but lazily like
 | 
			
		||||
 * cpdf_fromFileLazy.
 | 
			
		||||
 */
 | 
			
		||||
int cpdf_fromMemoryLazy(void *, int, const char[]);
 | 
			
		||||
def fromMemoryLazy(data, userpw):
 | 
			
		||||
    """ fromMemoryLazy(data, length, userpw) loads a file from memory, given a
 | 
			
		||||
    pointer and a length, and the user password, but lazily like
 | 
			
		||||
    fromFileLazy."""
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpdf_blankDocument(width, height, num_pages) creates a blank document with
 | 
			
		||||
 * pages of the given width (in points), height (in points), and number of
 | 
			
		||||
 * pages.
 | 
			
		||||
 */
 | 
			
		||||
int cpdf_blankDocument(double, double, int);
 | 
			
		||||
def blankDocument(w, h, pages):
 | 
			
		||||
    """ blankDocument(width, height, num_pages) creates a blank document
 | 
			
		||||
    with pages of the given width (in points), height (in points), and number
 | 
			
		||||
    of pages."""
 | 
			
		||||
 | 
			
		||||
/* Standard page sizes. */
 | 
			
		||||
enum cpdf_papersize {
 | 
			
		||||
  cpdf_a0portrait,        /* A0 portrait */
 | 
			
		||||
  cpdf_a1portrait,        /* A1 portrait */
 | 
			
		||||
  cpdf_a2portrait,        /* A2 portrait */
 | 
			
		||||
  cpdf_a3portrait,        /* A3 portrait */
 | 
			
		||||
  cpdf_a4portrait,        /* A4 portrait */
 | 
			
		||||
  cpdf_a5portrait,        /* A5 portrait */
 | 
			
		||||
  cpdf_a0landscape,       /* A0 landscape */
 | 
			
		||||
  cpdf_a1landscape,       /* A1 landscape */
 | 
			
		||||
  cpdf_a2landscape,       /* A2 landscape */
 | 
			
		||||
  cpdf_a3landscape,       /* A3 landscape */
 | 
			
		||||
  cpdf_a4landscape,       /* A4 landscape */
 | 
			
		||||
  cpdf_a5landscape,       /* A5 landscape */
 | 
			
		||||
  cpdf_usletterportrait,  /* US Letter portrait */
 | 
			
		||||
  cpdf_usletterlandscape, /* US Letter landscape */
 | 
			
		||||
  cpdf_uslegalportrait,   /* US Legal portrait */
 | 
			
		||||
  cpdf_uslegallandscape   /* US Legal landscape */
 | 
			
		||||
};
 | 
			
		||||
"""Paper sizes."""
 | 
			
		||||
a0portrait
 | 
			
		||||
a1portrait
 | 
			
		||||
a2portrait
 | 
			
		||||
a3portrait
 | 
			
		||||
a4portrait
 | 
			
		||||
a5portrait
 | 
			
		||||
a0landscape
 | 
			
		||||
a1landscape
 | 
			
		||||
a2landscape
 | 
			
		||||
a3landscape
 | 
			
		||||
a4landscape
 | 
			
		||||
a5landscape
 | 
			
		||||
usletterportrait
 | 
			
		||||
usletterlandscape
 | 
			
		||||
uslegalportrait
 | 
			
		||||
uslegallandscape
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpdf_blankDocumentPaper(papersize, num_pages) makes a blank document given
 | 
			
		||||
 * a page size and number of pages.
 | 
			
		||||
 */
 | 
			
		||||
int cpdf_blankDocumentPaper(enum cpdf_papersize, int);
 | 
			
		||||
def blankDocumentPaper(papersize, pages):
 | 
			
		||||
    """blankDocument(width, height, num_pages) creates a blank document
 | 
			
		||||
    with pages of the given width (in points), height (in points), and number
 | 
			
		||||
    of pages. """
 | 
			
		||||
 | 
			
		||||
/* Remove a PDF from memory, given its number. */
 | 
			
		||||
void cpdf_deletePdf(int);
 | 
			
		||||
def ptOfCm(i):
 | 
			
		||||
    """Convert a figure in centimetres to points (72 points to 1 inch)"""
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Calling cpdf_replacePdf(a, b) places PDF b under number a. Number b is no
 | 
			
		||||
 * longer available.
 | 
			
		||||
 */
 | 
			
		||||
void cpdf_replacePdf(int, int);
 | 
			
		||||
def ptOfMm(i):
 | 
			
		||||
    """Convert a figure in millimetres to points (72 points to 1 inch)"""
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * To enumerate the list of currently allocated PDFs, call
 | 
			
		||||
 * cpdf_startEnumeratePDFs which gives the number, n, of PDFs allocated, then
 | 
			
		||||
 * cpdf_enumeratePDFsInfo and cpdf_enumeratePDFsKey with index numbers from
 | 
			
		||||
 * 0...(n - 1). Call cpdf_endEnumeratePDFs to clean up.
 | 
			
		||||
 */
 | 
			
		||||
int cpdf_startEnumeratePDFs(void);
 | 
			
		||||
int cpdf_enumeratePDFsKey(int);
 | 
			
		||||
char *cpdf_enumeratePDFsInfo(int);
 | 
			
		||||
void cpdf_endEnumeratePDFs(void);
 | 
			
		||||
def ptOfIn(i):
 | 
			
		||||
    """Convert a figure in inches to points (72 points to 1 inch)"""
 | 
			
		||||
 | 
			
		||||
/* Convert a figure in centimetres to points (72 points to 1 inch) */
 | 
			
		||||
double cpdf_ptOfCm(double);
 | 
			
		||||
def cmOfPt(i):
 | 
			
		||||
    """Convert a figure in points to centimetres (72 points to 1 inch)"""
 | 
			
		||||
 | 
			
		||||
/* Convert a figure in millimetres to points (72 points to 1 inch) */
 | 
			
		||||
double cpdf_ptOfMm(double);
 | 
			
		||||
def mmOfPt(i):
 | 
			
		||||
    """Convert a figure in points to millimetres (72 points to 1 inch)"""
 | 
			
		||||
 | 
			
		||||
/* Convert a figure in inches to points (72 points to 1 inch) */
 | 
			
		||||
double cpdf_ptOfIn(double);
 | 
			
		||||
def inOfPt(i):
 | 
			
		||||
    """Convert a figure in points to inches (72 points to 1 inch)"""
 | 
			
		||||
 | 
			
		||||
/* Convert a figure in points to centimetres (72 points to 1 inch) */
 | 
			
		||||
double cpdf_cmOfPt(double);
 | 
			
		||||
def parsePagespec(pdf, pagespec):
 | 
			
		||||
    """parsePagespec(pdf, pagespec) parses a page specification with reference to
 | 
			
		||||
    a given PDF (the PDF is supplied so that page ranges which reference pages
 | 
			
		||||
    which do not exist are rejected)."""
 | 
			
		||||
 | 
			
		||||
/* Convert a figure in points to millimetres (72 points to 1 inch) */
 | 
			
		||||
double cpdf_mmOfPt(double);
 | 
			
		||||
def validatePagespec(pagespec):
 | 
			
		||||
    """validatePagespec(range) validates a page specification so far as is
 | 
			
		||||
    possible in the absence of the actual document."""
 | 
			
		||||
 | 
			
		||||
/* Convert a figure in points to inches (72 points to 1 inch) */
 | 
			
		||||
double cpdf_inOfPt(double);
 | 
			
		||||
def stringOfPagespec(pdf, r):
 | 
			
		||||
    """stringOfPagespec(pdf, range) builds a page specification from a page
 | 
			
		||||
    range. For example, the range containing 1,2,3,6,7,8 in a document of 8
 | 
			
		||||
    pages might yield "1-3,6-end" """
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * A page range is a list of page numbers used to restrict operations to
 | 
			
		||||
 * certain pages. A page specification is a textual description of a page
 | 
			
		||||
 * range, such as "1-12,18-end". Here is the syntax:
 | 
			
		||||
 *
 | 
			
		||||
 * o A range must contain no spaces.
 | 
			
		||||
 *
 | 
			
		||||
 * o A dash (-) defines ranges, e.g. 1-5 or 6-3.
 | 
			
		||||
 *
 | 
			
		||||
 * o A comma (,) allows one to specify several ranges, e.g. 1-2,4-5.
 | 
			
		||||
 *
 | 
			
		||||
 * o The word end represents the last page number.
 | 
			
		||||
 *
 | 
			
		||||
 * o The words odd and even can be used in place of or at the end of a page
 | 
			
		||||
 * range to restrict to just the odd or even pages.
 | 
			
		||||
 *
 | 
			
		||||
 * o The words portrait and landscape can be used in place of or at the end of
 | 
			
		||||
 * a page range to restrict to just those pages which are portrait or
 | 
			
		||||
 * landscape. Note that the meaning of "portrait" and "landscape" does not
 | 
			
		||||
 * take account of any viewing rotation in place (use cpdf_upright first, if
 | 
			
		||||
 * required). A page with equal width and height is considered neither
 | 
			
		||||
 * portrait nor landscape.
 | 
			
		||||
 *
 | 
			
		||||
 * o The word reverse is the same as end-1.
 | 
			
		||||
 *
 | 
			
		||||
 * o The word all is the same as 1-end.
 | 
			
		||||
 *
 | 
			
		||||
 * o A tilde (~) defines a page number counting from the end of the document
 | 
			
		||||
 * rather than the beginning. Page ~1 is the last page, ~2 the penultimate
 | 
			
		||||
 * page etc.
 | 
			
		||||
 */
 | 
			
		||||
def blankRange():
 | 
			
		||||
    """blankRange() creates a range with no pages in."""
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpdf_parsePagespec(pdf, range) parses a page specification with reference
 | 
			
		||||
 * to a given PDF (the PDF is supplied so that page ranges which reference
 | 
			
		||||
 * pages which do not exist are rejected).
 | 
			
		||||
 */
 | 
			
		||||
int cpdf_parsePagespec(int, const char[]);
 | 
			
		||||
def pageRange(f, t):
 | 
			
		||||
    """ pageRange(from, to) build a range from one page to another inclusive.
 | 
			
		||||
    For example, pageRange(3,7) gives the range 3,4,5,6,7 """
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpdf_validatePagespec(range) validates a page specification so far as is
 | 
			
		||||
 * possible in the absence of the actual document. Result is true if valid.
 | 
			
		||||
 */
 | 
			
		||||
int cpdf_validatePagespec(const char[]);
 | 
			
		||||
def all(pdf):
 | 
			
		||||
    """all(pdf) is the range containing all the pages in a given document."""
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpdf_stringOfPagespec(pdf, range) builds a page specification from a page
 | 
			
		||||
 * range. For example, the range containing 1,2,3,6,7,8 in a document of 8
 | 
			
		||||
 * pages might yield "1-3,6-end"
 | 
			
		||||
 */
 | 
			
		||||
char *cpdf_stringOfPagespec(int, int);
 | 
			
		||||
def even(r):
 | 
			
		||||
    """even(range) makes a range which contains just the even pages of another
 | 
			
		||||
    range"""
 | 
			
		||||
 | 
			
		||||
/* cpdf_blankRange() creates a range with no pages in. */
 | 
			
		||||
int cpdf_blankRange(void);
 | 
			
		||||
def odd(r):
 | 
			
		||||
    """odd(range) makes a range which contains just the odd pages of another
 | 
			
		||||
    range"""
 | 
			
		||||
 | 
			
		||||
/* cpdf_deleteRange(range) deletes a range. */
 | 
			
		||||
void cpdf_deleteRange(int);
 | 
			
		||||
def rangeUnion(a, b):
 | 
			
		||||
    """rangeUnion(a, b) makes the union of two ranges giving a range containing
 | 
			
		||||
    the pages in range a and range b."""
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpdf_range(from, to) builds a range from one page to another inclusive. For
 | 
			
		||||
 * example, cpdf_range(3,7) gives the range 3,4,5,6,7
 | 
			
		||||
 */
 | 
			
		||||
int cpdf_range(int, int);
 | 
			
		||||
def difference(a, b):
 | 
			
		||||
    """difference(a, b) makes the difference of two ranges, giving a range
 | 
			
		||||
    containing all the pages in a except for those which are also in b."""
 | 
			
		||||
 | 
			
		||||
/* cpdf_all(pdf) is the range containing all the pages in a given document. */
 | 
			
		||||
int cpdf_all(int);
 | 
			
		||||
def removeDuplicates(r):
 | 
			
		||||
    """removeDuplicates(range) deduplicates a range, making a new one."""
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpdf_even(range) makes a range which contains just the even pages of
 | 
			
		||||
 * another range.
 | 
			
		||||
 */
 | 
			
		||||
int cpdf_even(int);
 | 
			
		||||
def rangeLength(r):
 | 
			
		||||
    """rangeLength gives the number of pages in a range."""
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpdf_odd(range) makes a range which contains just the odd pages of another
 | 
			
		||||
 * range.
 | 
			
		||||
 */
 | 
			
		||||
int cpdf_odd(int);
 | 
			
		||||
def rangeGet(r, n):
 | 
			
		||||
    """rangeGet(range, n) gets the page number at position n in a range, where
 | 
			
		||||
    n runs from 0 to rangeLength - 1."""
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpdf_rangeUnion(a, b) makes the union of two ranges giving a range
 | 
			
		||||
 * containing the pages in range a and range b.
 | 
			
		||||
 */
 | 
			
		||||
int cpdf_rangeUnion(int, int);
 | 
			
		||||
def rangeAdd(r, p):
 | 
			
		||||
    """rangeAdd(range, page) adds the page to a range, if it is not already
 | 
			
		||||
    there."""
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpdf_difference(a, b) makes the difference of two ranges, giving a range
 | 
			
		||||
 * containing all the pages in a except for those which are also in b.
 | 
			
		||||
 */
 | 
			
		||||
int cpdf_difference(int, int);
 | 
			
		||||
def isInRange(r, p):
 | 
			
		||||
    """isInRange(range, page) returns True if the page is in the range, False
 | 
			
		||||
    otherwise."""
 | 
			
		||||
 | 
			
		||||
/* cpdf_removeDuplicates(range) deduplicates a range, making a new one. */
 | 
			
		||||
int cpdf_removeDuplicates(int);
 | 
			
		||||
def pages(pdf):
 | 
			
		||||
    """pages(pdf) returns the number of pages in a PDF."""
 | 
			
		||||
 | 
			
		||||
/* cpdf_rangeLength gives the number of pages in a range. */
 | 
			
		||||
int cpdf_rangeLength(int);
 | 
			
		||||
def pagesFast(userpw, filename):
 | 
			
		||||
    """pagesFast(password, filename) returns the number of pages in a given
 | 
			
		||||
    PDF, with given user encryption password. It tries to do this as fast as
 | 
			
		||||
    possible, without loading the whole file."""
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpdf_rangeGet(range, n) gets the page number at position n in a range,
 | 
			
		||||
 * where n runs from 0 to rangeLength - 1.
 | 
			
		||||
 */
 | 
			
		||||
int cpdf_rangeGet(int, int);
 | 
			
		||||
def toFile(pdf, filename, linearize, make_id):
 | 
			
		||||
    """toFile (pdf, filename, linearize, make_id) writes the file to a given
 | 
			
		||||
    filename. If linearize is True, it will be linearized. If make_id is True,
 | 
			
		||||
    it will be given a new ID."""
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpdf_rangeAdd(range, page) adds the page to a range, if it is not already
 | 
			
		||||
 * there.
 | 
			
		||||
 */
 | 
			
		||||
int cpdf_rangeAdd(int, int);
 | 
			
		||||
def toFileExt(pdf, filename, linearize, make_id, preserve_objstm,
 | 
			
		||||
              generate_objstm, compress_objstm):
 | 
			
		||||
    """toFileExt (pdf, filename, linearize, make_id, preserve_objstm,
 | 
			
		||||
    generate_objstm, compress_objstm) writes the file to a given filename. If
 | 
			
		||||
    make_id is True, it will be given a new ID.  If preserve_objstm is True,
 | 
			
		||||
    existing object streams will be preserved. If generate_objstm is True,
 | 
			
		||||
    object streams will be generated even if not originally present. If
 | 
			
		||||
    compress_objstm is True, object streams will be compressed (what we usually
 | 
			
		||||
    want). WARNING: the pdf argument will be invalid after this call and should
 | 
			
		||||
    not be used again."""
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpdf_isInRange(range, page) returns true if the page is in the range,
 | 
			
		||||
 * false otherwise.
 | 
			
		||||
 */
 | 
			
		||||
int cpdf_isInRange(int, int);
 | 
			
		||||
def toMemory(pdf, linearize, make_id):
 | 
			
		||||
    """Given a buffer of the correct size, toMemory (pdf, linearize,
 | 
			
		||||
    make_id) writes it and returns the buffer as a byte array of type bytes."""
 | 
			
		||||
 | 
			
		||||
/* cpdf_pages(pdf) returns the number of pages in a PDF. */
 | 
			
		||||
int cpdf_pages(int);
 | 
			
		||||
def isEncrypted(pdf):
 | 
			
		||||
    """isEncrypted(pdf) returns True if a documented is encrypted, False
 | 
			
		||||
    otherwise."""
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpdf_pagesFast(password, filename) returns the number of pages in a given
 | 
			
		||||
 * PDF, with given user encryption password. It tries to do this as fast as
 | 
			
		||||
 * possible, without loading the whole file.
 | 
			
		||||
 */
 | 
			
		||||
int cpdf_pagesFast(const char[], const char[]);
 | 
			
		||||
"""Permissions."""
 | 
			
		||||
noEdit
 | 
			
		||||
noPrint
 | 
			
		||||
noCopy
 | 
			
		||||
noAnnot
 | 
			
		||||
noForms
 | 
			
		||||
noExtract
 | 
			
		||||
noAssemble
 | 
			
		||||
noHqPrint
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpdf_toFile (pdf, filename, linearize, make_id) writes the file to a given
 | 
			
		||||
 * filename. If linearize is true, it will be linearized if a linearizer is
 | 
			
		||||
 * available. If make_id is true, it will be given a new ID.
 | 
			
		||||
 */
 | 
			
		||||
void cpdf_toFile(int, const char[], int, int);
 | 
			
		||||
"""Encryption Methods."""
 | 
			
		||||
pdf40bit
 | 
			
		||||
pdf128bit
 | 
			
		||||
aes128bitfalse
 | 
			
		||||
aes128bittrue
 | 
			
		||||
aes256bitfalse
 | 
			
		||||
aes256bittrue
 | 
			
		||||
aes256bitisofalse
 | 
			
		||||
aes256bitisotrue
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpdf_toFile (pdf, filename, linearize, make_id, preserve_objstm,
 | 
			
		||||
 * generate_objstm, compress_objstm) writes the file to a given filename. If
 | 
			
		||||
 * make_id is true, it will be given a new ID.  If preserve_objstm is true,
 | 
			
		||||
 * existing object streams will be preserved. If generate_objstm is true,
 | 
			
		||||
 * object streams will be generated even if not originally present. If
 | 
			
		||||
 * compress_objstm is true, object streams will be compressed (what we
 | 
			
		||||
 * usually want). WARNING: the pdf argument will be invalid after this call,
 | 
			
		||||
 * and should be discarded.
 | 
			
		||||
 */
 | 
			
		||||
void cpdf_toFileExt(int, const char[], int, int, int, int, int);
 | 
			
		||||
def toFileEncrypted(pdf, method, permissions, ownerpw, userpw, linearize,
 | 
			
		||||
                    makeid, filename):
 | 
			
		||||
    """toFileEncrypted(pdf, encryption_method, permissions, permission_length,
 | 
			
		||||
    owner_password, user password, linearize, makeid, filename) writes a file
 | 
			
		||||
    as encrypted."""
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Given a buffer of the correct size, cpdf_toFileMemory (pdf, linearize,
 | 
			
		||||
 * make_id, &length) writes it and returns the buffer. The buffer length is
 | 
			
		||||
 * filled in &length.
 | 
			
		||||
 */
 | 
			
		||||
void *cpdf_toMemory(int, int, int, int *);
 | 
			
		||||
def toFileEncryptedExt(pdf, method, permissions, ownerpw, userpw, linearize,
 | 
			
		||||
                       makeid, preserve_objstm, generate_objstm,
 | 
			
		||||
                       compress_objstm, filename):
 | 
			
		||||
    """toFileEncryptedExt(pdf, encryption_method, permissions,
 | 
			
		||||
    permission_length, owner_password, user_password, linearize, makeid,
 | 
			
		||||
    preserve_objstm, generate_objstm, compress_objstm, filename) WARNING: the
 | 
			
		||||
    pdf argument will be invalid after this call, and should be discarded."""
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpdf_isEncrypted(pdf) returns true if a documented is encrypted, false
 | 
			
		||||
 * otherwise.
 | 
			
		||||
 */
 | 
			
		||||
int cpdf_isEncrypted(int);
 | 
			
		||||
def decryptPdf(pdf, userpw):
 | 
			
		||||
    """decryptPdf(pdf, userpw) attempts to decrypt a PDF using the given user
 | 
			
		||||
    password."""
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpdf_decryptPdf(pdf, userpw) attempts to decrypt a PDF using the given
 | 
			
		||||
 * user password. The error code is non-zero if the decryption fails.
 | 
			
		||||
 */
 | 
			
		||||
void cpdf_decryptPdf(int, const char[]);
 | 
			
		||||
def decryptPdfOwner(pdf, ownerpw):
 | 
			
		||||
    """decryptPdfOwner(pdf, ownerpw) attempts to decrypt a PDF using the given
 | 
			
		||||
    owner password."""
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpdf_decryptPdfOwner(pdf, ownerpw) attempts to decrypt a PDF using the
 | 
			
		||||
 * given owner password. The error code is non-zero if the decryption fails.
 | 
			
		||||
 */
 | 
			
		||||
void cpdf_decryptPdfOwner(int, const char[]);
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * File permissions. These are inverted, in the sense that the presence of
 | 
			
		||||
 * one of them indicates a restriction.
 | 
			
		||||
 */
 | 
			
		||||
enum cpdf_permission {
 | 
			
		||||
  cpdf_noEdit,     /* Cannot edit the document */
 | 
			
		||||
  cpdf_noPrint,    /* Cannot print the document */
 | 
			
		||||
  cpdf_noCopy,     /* Cannot copy the document */
 | 
			
		||||
  cpdf_noAnnot,    /* Cannot annotate the document */
 | 
			
		||||
  cpdf_noForms,    /* Cannot edit forms in the document */
 | 
			
		||||
  cpdf_noExtract,  /* Cannot extract information */
 | 
			
		||||
  cpdf_noAssemble, /* Cannot assemble into a bigger document */
 | 
			
		||||
  cpdf_noHqPrint   /* Cannot print high quality */
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Encryption methods. Suffixes 'false' and 'true' indicates lack of or
 | 
			
		||||
 * presence of encryption for XMP metadata streams.
 | 
			
		||||
 */
 | 
			
		||||
enum cpdf_encryptionMethod {
 | 
			
		||||
  cpdf_pdf40bit,          /* 40 bit RC4 encryption */
 | 
			
		||||
  cpdf_pdf128bit,         /* 128 bit RC4 encryption */
 | 
			
		||||
  cpdf_aes128bitfalse,    /* 128 bit AES encryption, do not encrypt
 | 
			
		||||
                           * metadata. */
 | 
			
		||||
  cpdf_aes128bittrue,     /* 128 bit AES encryption, encrypt metadata */
 | 
			
		||||
  cpdf_aes256bitfalse,    /* Deprecated. Do not use for new files */
 | 
			
		||||
  cpdf_aes256bittrue,     /* Deprecated. Do not use for new files */
 | 
			
		||||
  cpdf_aes256bitisofalse, /* 256 bit AES encryption, do not encrypt
 | 
			
		||||
                           * metadata. */
 | 
			
		||||
  cpdf_aes256bitisotrue   /* 256 bit AES encryption, encrypt metadata */
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpdf_toFileEncrypted(pdf, encryption_method, permissions,
 | 
			
		||||
 * permission_length, owner_password, user password, linearize, makeid,
 | 
			
		||||
 * filename) writes a file as encrypted.
 | 
			
		||||
 */
 | 
			
		||||
void cpdf_toFileEncrypted(int, int, int *, int, const char[], const char[], int,
 | 
			
		||||
                          int, const char[]);
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpdf_toFileEncryptedExt(pdf, encryption_method, permissions,
 | 
			
		||||
 * permission_length, owner_password, user_password, linearize, makeid,
 | 
			
		||||
 * preserve_objstm, generate_objstm, compress_objstm, filename) WARNING: the
 | 
			
		||||
 * pdf argument will be invalid after this call, and should be discarded.
 | 
			
		||||
 */
 | 
			
		||||
void cpdf_toFileEncryptedExt(int, int, int *, int, const char[], const char[],
 | 
			
		||||
                             int, int, int, int, int, const char[]);
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpdf_hasPermission(pdf, permission) returns true if the given permission
 | 
			
		||||
 * (restriction) is present.
 | 
			
		||||
 */
 | 
			
		||||
int cpdf_hasPermission(int, enum cpdf_permission);
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpdf_encryptionKind(pdf) return the encryption method currently in use on
 | 
			
		||||
 * a document.
 | 
			
		||||
 */
 | 
			
		||||
enum cpdf_encryptionMethod cpdf_encryptionKind(int);
 | 
			
		||||
def hasPermission(pdf, perm):
 | 
			
		||||
    """hasPermission(pdf, permission) returns True if the given permission
 | 
			
		||||
    (restriction) is present."""
 | 
			
		||||
 | 
			
		||||
def encryptionKind(pdf):
 | 
			
		||||
    """encryptionMethod(pdf) return the encryption method currently in use on
 | 
			
		||||
    a document."""
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user