diff --git a/Makefile b/Makefile index ac37dc4..2e5ec23 100644 --- a/Makefile +++ b/Makefile @@ -23,7 +23,7 @@ all : native-code native-code-library byte-code-library top htdoc clean :: rm -rf doc foo foo2 out.pdf out2.pdf foo.pdf decomp.pdf *.cmt *.cmti \ - *.json test/*.pdf debug/*.pdf *.ps + *.json test/*.pdf debug/*.pdf *.ps *.aux *.idx *.log *.out *.toc DOC_FILES = cpdfunicodedata.mli cpdferror.mli cpdfdebug.mli cpdfjson.mli \ cpdfstrftime.mli cpdfcoord.mli cpdfattach.mli cpdfpagespec.mli \ diff --git a/cpdfmanual.pdf b/cpdfmanual.pdf index ee8bad4..0077da9 100644 Binary files a/cpdfmanual.pdf and b/cpdfmanual.pdf differ diff --git a/cpdfmanual.tex b/cpdfmanual.tex index 99f5f61..7867eb6 100644 --- a/cpdfmanual.tex +++ b/cpdfmanual.tex @@ -1,6 +1,10 @@ \documentclass{book} -% Edit here to produce cpdfmanual.pdf, cpdflibmanual.pdf, pycpdfmanual.pdf etc. -\usepackage{comment}\excludecomment{cpdflib}\excludecomment{pycpdflib}\excludecomment{dotnetcpdflib} +% Edit here to produce cpdfmanual.pdf, cpdflibmanual.pdf, pycpdfmanual.pdf, dotnetcpdflibmanual.pdf, jcpdflibmanual.pdf etc. +\usepackage{comment} +\excludecomment{cpdflib} +\excludecomment{pycpdflib} +\excludecomment{dotnetcpdflib} +\excludecomment{jcpdflib} \usepackage{palatino} \usepackage{listings} \usepackage{microtype} @@ -42,6 +46,9 @@ Python API and \begin{dotnetcpdflib} .NET API and \end{dotnetcpdflib} +\begin{jcpdflib} +Java API and +\end{jcpdflib} Command Line Tools} \vspace{12mm} @@ -470,6 +477,43 @@ End Using \end{dotnetcpdflib} +\begin{jcpdflib} +\chapter*{Example Program in Java} + +This program loads a file \texttt{hello.pdf} from disk and writes out a +document with the original included three times. + +\begin{small} +\begin{verbatim} +//Merge example +using System; +using System.Collections.Generic; +using CoherentGraphics; + +// Initialise cpdf +Cpdf.startup(); + +// We will take the input hello.pdf and repeat it three times +using (Cpdf.Pdf mergepdf = Cpdf.fromFile("hello.pdf", "")) +{ + // The list of PDFs to merge + List pdfs = new List {mergepdf, mergepdf, mergepdf}; + + // Merge them + Cpdf.Pdf merged = Cpdf.mergeSimple(pdfs); + + // Write output + Cpdf.toFile(merged, "merged.pdf", false, false); + + // Dispose of merged PDF + merged.Dispose(); +} +\end{verbatim} +\end{small} + +\noindent Note the use of \texttt{using} and \texttt{Dispose()} to ensure the PDFs are thrown away when no longer required. +\end{jcpdflib} + \pagestyle{plain} \tableofcontents\clearpage\pagestyle{empty} @@ -1013,6 +1057,16 @@ Use the \texttt{-no-embed-font} to avoid embedding the Standard 14 Font metrics \end{small} \end{dotnetcpdflib} +\begin{jcpdflib} +\clearpage +\section*{.NET Interface} +\begin{small}\tt +\lstinputlisting{javasplits/cm1} +\lstinputlisting{javasplits/c01} +\lstinputlisting{javasplits/c02} +\end{small} +\end{jcpdflib} + \chapter{Merging and Splitting}\label{chap:2} \begin{framed} \small @@ -1172,6 +1226,14 @@ The encryption parameters described in Chapter \ref{encryption} may be added to \end{small} \end{dotnetcpdflib} +\begin{jcpdflib} +\clearpage +\section*{Java Interface} +\begin{small}\tt +\lstinputlisting{javasplits/c03} +\end{small} +\end{jcpdflib} + \chapter{Pages}\label{chap:3} \pagestyle{fancy} \label{pages} @@ -1502,6 +1564,14 @@ Bleed box & Pink \end{small} \end{dotnetcpdflib} +\begin{jcpdflib} +\clearpage +\section*{Java Interface} +\begin{small}\tt +\lstinputlisting{javasplits/c04} +\end{small} +\end{jcpdflib} + \chapter{Encryption and Decryption}\label{chap:4} \pagestyle{fancy} \label{encryption} @@ -1620,6 +1690,14 @@ When appropriate passwords are not available, the option \texttt{-decrypt-force} \end{small} \end{dotnetcpdflib} +\begin{jcpdflib} +\clearpage +\section*{Java Interface} +\begin{small}\tt +\lstinputlisting{javasplits/c05} +\end{small} +\end{jcpdflib} + \chapter{Compression}\label{chap:5} \begin{framed} \small\noindent\verb!cpdf -decompress in.pdf -o out.pdf! @@ -1691,13 +1769,13 @@ There are two options which turn off parts of the squeezer. They are \texttt{-sq \end{small} \end{pycpdflib} -\begin{dotnetcpdflib} +\begin{jcpdflib} \clearpage -\section*{.NET Interface} +\section*{Java Interface} \begin{small}\tt -\lstinputlisting{dotnetsplits/c06} +\lstinputlisting{javasplits/c06} \end{small} -\end{dotnetcpdflib} +\end{jcpdflib} \chapter{Bookmarks}\label{chap:6} \begin{framed} @@ -1897,6 +1975,13 @@ By default, an entry for the new table of contents will be added to the document \end{small} \end{dotnetcpdflib} +\begin{jcpdflib} +\clearpage +\section*{Java Interface} +\begin{small}\tt +\lstinputlisting{javasplits/c07} +\end{small} +\end{jcpdflib} \chapter{Presentations}\label{chap:7}\pagestyle{fancy} \begin{framed} @@ -1995,6 +2080,14 @@ the file using a different page range each time. \end{small} \end{dotnetcpdflib} +\begin{jcpdflib} +\clearpage +\section*{Java Interface} +\begin{small}\tt +\lstinputlisting{javasplits/c08} +\end{small} +\end{jcpdflib} + \chapter{Watermarks and Stamps}\label{chap:8} \label{stamps} \index{watermarks} @@ -2379,6 +2472,14 @@ These two operations add content directly to the beginning or end of the page da \end{small} \end{dotnetcpdflib} +\begin{jcpdflib} +\clearpage +\section*{Java Interface} +\begin{small}\tt +\lstinputlisting{javasplits/c09} +\end{small} +\end{jcpdflib} + \chapter{Multipage Facilities}\pagestyle{fancy}\label{multipage}\label{chap:9} \begin{framed} \small\noindent\verb!cpdf -pad-before in.pdf [] [-pad-with pad.pdf] -o out.pdf! @@ -2538,6 +2639,14 @@ NB: For all imposition options, see also discussion of \texttt{-fast} in Section \end{small} \end{dotnetcpdflib} +\begin{jcpdflib} +\clearpage +\section*{Java Interface} +\begin{small}\tt +\lstinputlisting{javasplits/c10} +\end{small} +\end{jcpdflib} + \chapter{Annotations}\label{chap:10} \begin{framed} \small\noindent\verb!cpdf -list-annotations in.pdf []! @@ -2643,6 +2752,14 @@ given page range. \end{small} \end{dotnetcpdflib} +\begin{jcpdflib} +\clearpage +\section*{Java Interface} +\begin{small}\tt +\lstinputlisting{javasplits/c11} +\end{small} +\end{jcpdflib} + \chapter{Document Information and Metadata}\label{chap:11} \index{document information} \index{metadata} @@ -2975,6 +3092,14 @@ startvalue: 1 \end{small} \end{dotnetcpdflib} +\begin{jcpdflib} +\clearpage +\section*{Java Interface} +\begin{small}\tt +\lstinputlisting{javasplits/c12} +\end{small} +\end{jcpdflib} + \chapter{File Attachments}\label{chap:12}\pagestyle{fancy} \index{attachments} \begin{framed} @@ -3061,6 +3186,13 @@ The \texttt{-dump-attachments} operation, when given a PDF file and a directory \end{small} \end{dotnetcpdflib} +\begin{jcpdflib} +\clearpage +\section*{Java Interface} +\begin{small}\tt +\lstinputlisting{javasplits/c13} +\end{small} +\end{jcpdflib} \chapter{Working with Images}\label{chap:13} \begin{framed} @@ -3134,6 +3266,14 @@ To remove a particular image, find its name using \texttt{-image-resolution} wit \end{small} \end{dotnetcpdflib} +\begin{jcpdflib} +\clearpage +\section*{Java Interface} +\begin{small}\tt +\lstinputlisting{javasplits/c14} +\end{small} +\end{jcpdflib} + \chapter{Fonts}\pagestyle{fancy}\label{chap:14} {\small \begin{framed} @@ -3310,6 +3450,14 @@ recommended when file size is the sole consideration. \end{small} \end{dotnetcpdflib} +\begin{jcpdflib} +\clearpage +\section*{Java Interface} +\begin{small}\tt +\lstinputlisting{javasplits/c15} +\end{small} +\end{jcpdflib} + \chapter{PDF and JSON}\label{chap:15}\pagestyle{fancy}\index{JSON}\index{JSON!output to}\index{JSON!input from} {\small\begin{framed} \noindent\verb!cpdf in.pdf -output-json -o out.json!\\ @@ -3465,6 +3613,14 @@ It is not required that \texttt{/Length} entries in CPDFJSON stream dictionaries \end{small} \end{dotnetcpdflib} +\begin{jcpdflib} +\clearpage +\section*{Java Interface} +\begin{small}\tt +\lstinputlisting{javasplits/c16} +\end{small} +\end{jcpdflib} + \clearpage\pagestyle{empty} \chapter{Optional Content Groups}\label{chap:16}\pagestyle{fancy}\index{optional content group} @@ -3536,6 +3692,14 @@ In a PDF file, optional content groups are used to group graphical elements toge \end{small} \end{dotnetcpdflib} +\begin{jcpdflib} +\clearpage +\section*{Java Interface} +\begin{small}\tt +\lstinputlisting{javasplits/c17} +\end{small} +\end{jcpdflib} + \clearpage\pagestyle{empty} \chapter{Creating New PDFs}\label{chap:17}\pagestyle{fancy}\index{Create} @@ -3596,6 +3760,14 @@ A basic text to PDF convertor is included in \texttt{cpdf}. It takes a UTF8 text \end{small} \end{dotnetcpdflib} +\begin{jcpdflib} +\clearpage +\section*{Java Interface} +\begin{small}\tt +\lstinputlisting{javasplits/c18} +\end{small} +\end{jcpdflib} + \clearpage\pagestyle{empty} %We wanted to call this "Chapter M", but the following commands messed up the PDF bookmarks, so this chapter will simply have to float for now, until we can return to this problem. %\setcounter{chapter}{12} @@ -3865,6 +4037,14 @@ The \texttt{-remove-clipping} operation removes any clipping paths on given page \end{small} \end{dotnetcpdflib} +\begin{jcpdflib} +\clearpage +\section*{Java Interface} +\begin{small}\tt +\lstinputlisting{javasplits/c19} +\end{small} +\end{jcpdflib} + \appendix \chapter{Dates}\pagestyle{empty} \label{dates} diff --git a/javasplits/c00.tex b/javasplits/c00.tex new file mode 100644 index 0000000..c3d5c8f --- /dev/null +++ b/javasplits/c00.tex @@ -0,0 +1,24 @@ +Cpdf + +The Coherent PDF Library for .NET + +Cpdf.Pdf + +PDF document. Use the 'using' keyword, or call Dispose to make sure PDFs are +deallocated. + +Cpdf.Pdf.Dispose + +Force disposal of the PDF. + +Cpdf.Pdf.Finalize + +Class destructor + +Cpdf.CPDFError + +Any function in this library may raise the CPDFError exception. + +Cpdf.CPDFError.#ctor(String) + +Construct a CPDFError which carries a string. diff --git a/javasplits/c01.tex b/javasplits/c01.tex new file mode 100644 index 0000000..be10f5a --- /dev/null +++ b/javasplits/c01.tex @@ -0,0 +1,39 @@ +CHAPTER 0. Preliminaries + +Cpdf.startup + +Initialises the library. Must be called before any other function. + +Cpdf.version + +Returns a string giving the version number of the CPDF library. + +Cpdf.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. +This function sets the mode to fast globally. + +Cpdf.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. +This functions sets the mode to slow globally. + +Cpdf.lastError + +Not to be called directly. Errors in .NET cpdf are raised by exceptions. + +Cpdf.lastErrorString + +Not to be called directly. Errors in .NET cpdf are raised by exceptions. + +Cpdf.clearError + +Not to be called directly. Errors in .NET cpdf are raised by exceptions. + +Cpdf.onExit + +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. diff --git a/javasplits/c02.tex b/javasplits/c02.tex new file mode 100644 index 0000000..05b0224 --- /dev/null +++ b/javasplits/c02.tex @@ -0,0 +1,266 @@ +CHAPTER 1. Basics + +Cpdf.fromFile(String, String) + +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. + +Cpdf.fromFileLazy(String, String) + +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. + +Cpdf.fromMemory(Byte[], String) + +Loads a file from memory given any user password. + +Cpdf.fromMemoryLazy(IntPtr, Int32, String) + +Loads a file from memory, given a pointer and a length, and the user password, +but lazily like fromFileLazy. The caller must use AllocHGlobal / Marshal.Copy / +FreeHGlobal itself. It must not free the memory until the PDF is also gone. + +Cpdf.startEnumeratePDFs + +Cpdf.enumeratePDFsKey(Int32) + +Cpdf.enumeratePDFsInfo(Int32) + +Cpdf.endEnumeratePDFs + +To enumerate the list of currently allocated PDFs, call startEnumeratePDFs +which gives the number, n, of PDFs allocated, then enumeratePDFsInfo and +enumeratePDFsKey with index numbers from 0...(n - 1). Call endEnumeratePDFs to +clean up. + +Cpdf.ptOfCm(Double) + +Converts a figure in centimetres to points (72 points to 1 inch) + +Cpdf.ptOfMm(Double) + +Converts a figure in millimetres to points (72 points to 1 inch) + +Cpdf.ptOfIn(Double) + +Converts a figure in inches to points (72 points to 1 inch) + +Cpdf.cmOfPt(Double) + +Converts a figure in points to centimetres (72 points to 1 inch) + +Cpdf.mmOfPt(Double) + +Converts a figure in points to millimetres (72 points to 1 inch) + +Cpdf.inOfPt(Double) + +Converts a figure in points to inches (72 points to 1 inch) + +Cpdf.parsePagespec(Cpdf.Pdf, String) + +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). + +Cpdf.validatePagespec(String) + +Validates a page specification so far as is possible in the absence of the +actual document. Result is true if valid. + +Cpdf.stringOfPagespec(Cpdf.Pdf, List{Int32}) + +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" + +Cpdf.blankRange + +Creates a range with no pages in. + +Cpdf.range(Int32, Int32) + +Builds a range from one page to another inclusive. For example, range(3, 7) +gives the range 3, 4, 5, 6, 7 + +Cpdf.all(Cpdf.Pdf) + +The range containing all the pages in a given document. + +Cpdf.even(List{Int32}) + +Makes a range which contains just the even pages of another range. + +Cpdf.odd(List{Int32}) + +Makes a range which contains just the odd pages of another range. + +Cpdf.rangeUnion(List{Int32}, List{Int32}) + +Makes the union of two ranges giving a range containing the pages in range a +and range b. + +Cpdf.difference(List{Int32}, List{Int32}) + +Makes the difference of two ranges, giving a range containing all the pages in +a except for those which are also in b. + +Cpdf.removeDuplicates(List{Int32}) + +Deduplicates a range, making a new one. + +Cpdf.rangeLength(List{Int32}) + +Gives the number of pages in a range. + +Cpdf.rangeGet(List{Int32}, Int32) + +Gets the page number at position n in a range, +where n runs from 0 to rangeLength - 1. + +Cpdf.rangeAdd(List{Int32}, Int32) + +Adds the page to a range, if it is not already +there. + +Cpdf.isInRange(List{Int32}, Int32) + +Returns true if the page is in the range, +false otherwise. + +Cpdf.pages(Cpdf.Pdf) + +Returns the number of pages in a PDF. + +Cpdf.pagesFast(String, String) + +Returns the number of pages in a given PDF, with given user password. It tries +to do this as fast as possible, without loading the whole file. + +Cpdf.toFile(Cpdf.Pdf, String, Boolean, Boolean) + +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. + +Cpdf.toFileExt(Cpdf.Pdf, String, Boolean, Boolean, Boolean, Boolean, Boolean) + +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 not be used again. + +Cpdf.toMemory(Cpdf.Pdf, Boolean, Boolean) + +Writes a PDF file and returns as an array of bytes. + +Cpdf.isEncrypted(Cpdf.Pdf) + +Returns true if a documented is encrypted, false otherwise. + +Cpdf.decryptPdf(Cpdf.Pdf, String) + +Attempts to decrypt a PDF using the given user password. An exception is raised +if the decryption fails. + +Cpdf.decryptPdfOwner(Cpdf.Pdf, String) + +Attempts to decrypt a PDF using the given owner password. Raises an exception +if the decryption fails. + +Cpdf.Permission + +Permissions + +Cpdf.Permission.NoEdit + +Cannot edit the document + +Cpdf.Permission.NoPrint + +Cannot print the document + +Cpdf.Permission.NoCopy + +Cannot copy the document + +Cpdf.Permission.NoAnnot + +Cannot annotate the document + +Cpdf.Permission.NoForms + +Cannot edit forms in the document + +Cpdf.Permission.NoExtract + +Cannot extract information + +Cpdf.Permission.NoAssemble + +Cannot assemble into a bigger document + +Cpdf.Permission.NoHqPrint + +Cannot print high quality + +Cpdf.EncryptionMethod + +Encryption methods + +Cpdf.EncryptionMethod.Pdf40bit + +40 bit RC4 encryption + +Cpdf.EncryptionMethod.Pdf128bit + +128 bit RC4 encryption + +Cpdf.EncryptionMethod.Aes128bitfalse + +128 bit AES encryption, do not encrypt metadata + +Cpdf.EncryptionMethod.Aes128bittrue + +128 bit AES encryption, encrypt metadata + +Cpdf.EncryptionMethod.Aes256bitfalse + +Deprecated. Do not use for new files + +Cpdf.EncryptionMethod.Aes256bittrue + +Deprecated. Do not use for new files + +Cpdf.EncryptionMethod.Aes256bitisofalse + +256 bit AES encryption, do not encrypt metadata + +Cpdf.EncryptionMethod.Aes256bitiosotrue + +256 bit AES encryption, encrypt metadata + +Cpdf.toFileEncrypted(Cpdf.Pdf, Cpdf.EncryptionMethod, List{Cpdf.Permission}, +String, String, Boolean, Boolean, String) + +Writes a file as encrypted. + +Cpdf.toFileEncryptedExt(Cpdf.Pdf, Cpdf.EncryptionMethod, List{Cpdf.Permission}, +String, String, Boolean, Boolean, Boolean, Boolean, Boolean, String) + +Writes a file as encrypted with extra parameters. WARNING: the pdf argument +will be invalid after this call, and should not be used again. + +Cpdf.hasPermission(Cpdf.Pdf, Cpdf.Permission) + +Returns true if the given permission +(restriction) is present. + +Cpdf.encryptionKind(Cpdf.Pdf) + +Returns the encryption method currently in use on +a document. diff --git a/javasplits/c03.tex b/javasplits/c03.tex new file mode 100644 index 0000000..b730467 --- /dev/null +++ b/javasplits/c03.tex @@ -0,0 +1,22 @@ +CHAPTER 2. Merging and Splitting + +Cpdf.mergeSimple(List{Cpdf.Pdf}) + +Given a list of PDFs, merges the files into a new one, which is returned. + +Cpdf.merge(List{Cpdf.Pdf}, Boolean, Boolean) + +Merges the PDFs. If retain_numbering is true page labels are not rewritten. If +remove_duplicate_fonts is true, duplicate fonts are merged. This is useful when +the source documents for merging originate from the same source. + +Cpdf.mergeSame(List{Cpdf.Pdf}, Boolean, Boolean, List{List{Int32}}) + +The same as merge, except that it has an additional argument - a list of page +ranges. This is used to select the pages to pick from each PDF. This avoids +duplication of information when multiple discrete parts of a source PDF are +included. + +Cpdf.selectPages(Cpdf.Pdf, List{Int32}) + +Returns a new document which just those pages in the page range. diff --git a/javasplits/c04.tex b/javasplits/c04.tex new file mode 100644 index 0000000..765c883 --- /dev/null +++ b/javasplits/c04.tex @@ -0,0 +1,235 @@ +CHAPTER 3. Pages + +Cpdf.scalePages(Cpdf.Pdf, List{Int32}, Double, Double) + +Scales the page dimensions and content by the given scale, about (0, 0). Other +boxes (crop etc. are altered as appropriate) + +Cpdf.scaleToFit(Cpdf.Pdf, List{Int32}, Double, Double, Double) + +Scales the content to fit new page dimensions (width x height) multiplied by +scale (typically 1.0). Other boxes (crop etc. are altered as appropriate) + +Cpdf.Papersize + +Built-in paper sizes + +Cpdf.Papersize.A0portrait + +A0 Portrait paper + +Cpdf.Papersize.A1portrait + +A1 Portrait paper + +Cpdf.Papersize.A2portrait + +A2 Portrait paper + +Cpdf.Papersize.A3portrait + +A3 Portrait paper + +Cpdf.Papersize.A4portrait + +A4 Portrait paper + +Cpdf.Papersize.A5portrait + +A5 Portrait paper + +Cpdf.Papersize.A0landscape + +A0 Landscape paper + +Cpdf.Papersize.A1landscape + +A1 Landscape paper + +Cpdf.Papersize.A2landscape + +A2 Landscape paper + +Cpdf.Papersize.A3landscape + +A3 Landscape paper + +Cpdf.Papersize.A4landscape + +A4 Landscape paper + +Cpdf.Papersize.A5landscape + +A5 Landscape paper + +Cpdf.Papersize.Usletterportrait + +US Letter Portrait paper + +Cpdf.Papersize.Usletterlandscape + +US Letter Landscape paper + +Cpdf.Papersize.Uslegalportrait + +US Legal Portrait paper + +Cpdf.Papersize.Uslegallandscape + +US Legal Landscape paper + +Cpdf.scaleToFitPaper(Cpdf.Pdf, List{Int32}, Cpdf.Papersize, Double) + +Scales the page content to fit the given page size, possibly multiplied by +scale (typically 1.0) + +Cpdf.Anchor + +Position anchors + +Cpdf.Anchor.PosCentre + +Absolute centre + +Cpdf.Anchor.PosLeft + +Absolute left + +Cpdf.Anchor.PosRight + +Absolute right + +Cpdf.Anchor.Top + +The top centre of the page + +Cpdf.Anchor.TopLeft + +The top left of the page + +Cpdf.Anchor.TopRight + +The top right of the page + +Cpdf.Anchor.Left + +The left hand side of the page, halfway down + +Cpdf.Anchor.BottomLeft + +The bottom left of the page + +Cpdf.Anchor.Bottom + +The bottom middle of the page + +Cpdf.Anchor.BottomRight + +The bottom right of the page + +Cpdf.Anchor.Right + +The right hand side of the page, halfway down + +Cpdf.Anchor.Diagonal + +Diagonal, bottom left to top right + +Cpdf.Anchor.ReverseDiagonal + +Diagonal, top left to bottom right + +Cpdf.Position + +Cpdf.Position.anchor + +Position anchor + +Cpdf.Position.coord1 + +Parameter one + +Cpdf.Position.coord2 + +Parameter two + +Cpdf.Position.#ctor(Cpdf.Anchor) + +Build a position with zero parameters + +Cpdf.Position.#ctor(Cpdf.Anchor, Double) + +Build a position with one parameter + +Cpdf.Position.#ctor(Cpdf.Anchor, Double, Double) + +Build a position with two parameters + +Cpdf.scaleContents(Cpdf.Pdf, List{Int32}, Cpdf.Position, Double) + +Scales the contents of the pages in the range about the point given by the +position, by the scale given. + +Cpdf.shiftContents(Cpdf.Pdf, List{Int32}, Double, Double) + +Shifts the content of the pages in the range. + +Cpdf.rotate(Cpdf.Pdf, List{Int32}, Int32) + +Changes the viewing rotation to an absolute value. Appropriate rotations are 0, +90, 180, 270. + +Cpdf.rotateBy(Cpdf.Pdf, List{Int32}, Int32) + +Rotates the content about the centre of the page by the given number of +degrees, in a clockwise direction. + +Cpdf.rotateContents(Cpdf.Pdf, List{Int32}, Double) + +Rotates the content about the centre of the page by the given number of +degrees, in a clockwise direction. + +Cpdf.upright(Cpdf.Pdf, List{Int32}) + +Changes the viewing rotation of the pages in the range, counter-rotating the +dimensions and content such that there is no visual change. + +Cpdf.hFlip(Cpdf.Pdf, List{Int32}) + +Flips horizontally the pages in the range. + +Cpdf.vFlip(Cpdf.Pdf, List{Int32}) + +Flips vertically the pages in the range. + +Cpdf.crop(Cpdf.Pdf, List{Int32}, Double, Double, Double, Double) + +Crops a page, replacing any existing crop box. The dimensions are in points. + +Cpdf.removeCrop(Cpdf.Pdf, List{Int32}) + +Removes any crop box from pages in the range. + +Cpdf.removeTrim(Cpdf.Pdf, List{Int32}) + +Removes any trim box from pages in the range. + +Cpdf.removeArt(Cpdf.Pdf, List{Int32}) + +Removes any art box from pages in the range. + +Cpdf.removeBleed(Cpdf.Pdf, List{Int32}) + +Removes any bleed box from pages in the range. + +Cpdf.trimMarks(Cpdf.Pdf, List{Int32}) + +Adds trim marks to the given pages, if the trimbox exists. + +Cpdf.showBoxes(Cpdf.Pdf, List{Int32}) + +Shows the boxes on the given pages, for debug. + +Cpdf.hardBox(Cpdf.Pdf, List{Int32}, String) + +Makes a given box a 'hard box' i.e clips it explicitly. diff --git a/javasplits/c05.tex b/javasplits/c05.tex new file mode 100644 index 0000000..72fb05e --- /dev/null +++ b/javasplits/c05.tex @@ -0,0 +1,3 @@ +CHAPTER 4. Encryption + +Encryption covered in Chapter 1. diff --git a/javasplits/c06.tex b/javasplits/c06.tex new file mode 100644 index 0000000..27d0a0f --- /dev/null +++ b/javasplits/c06.tex @@ -0,0 +1,14 @@ +CHAPTER 5. Compression + +Cpdf.compress(Cpdf.Pdf) + +Compresses any uncompressed streams in the given PDF using the Flate algorithm. + +Cpdf.decompress(Cpdf.Pdf) + +Decompresses any streams in the given PDF, so long as the compression method is +supported. + +Cpdf.squeezeInMemory(Cpdf.Pdf) + +Squeezes a pdf in memory. diff --git a/javasplits/c07.tex b/javasplits/c07.tex new file mode 100644 index 0000000..d3549f6 --- /dev/null +++ b/javasplits/c07.tex @@ -0,0 +1,68 @@ +CHAPTER 6. Bookmarks + +Cpdf.startGetBookmarkInfo(Cpdf.Pdf) + +Starts the bookmark retrieval process for a given PDF. + +Cpdf.numberBookmarks + +Gets the number of bookmarks for the PDF given to startGetBookmarkInfo. + +Cpdf.getBookmarkLevel(Int32) + +Gets the bookmark level for the given bookmark (0...(n - 1)). + +Cpdf.getBookmarkPage(Cpdf.Pdf, Int32) + +Gets the bookmark target page for the given PDF (which must be the same as the +PDF passed to startSetBookmarkInfo) and bookmark (0...(n - 1)). + +Cpdf.getBookmarkText(Int32) + +Returns the text of bookmark (0...(n - 1)). + +Cpdf.getBookmarkOpenStatus(Int32) + +True if the bookmark is open. + +Cpdf.endGetBookmarkInfo + +Ends the bookmark retrieval process, cleaning up. + +Cpdf.startSetBookmarkInfo(Int32) + +Starts the bookmark setting process for n bookmarks. + +Cpdf.setBookmarkLevel(Int32, Int32) + +Set bookmark level for the given bookmark (0...(n - 1)). + +Cpdf.setBookmarkPage(Cpdf.Pdf, Int32, Int32) + +Sets the bookmark target page for the given PDF (which must be the same as the +PDF to be passed to endSetBookmarkInfo) and bookmark (0...(n - 1)). + +Cpdf.setBookmarkOpenStatus(Int32, Boolean) + +Sets the open status of bookmark (0...(n - 1)). + +Cpdf.setBookmarkText(Int32, String) + +Sets the text of bookmark (0...(n - 1)). + +Cpdf.endSetBookmarkInfo(Cpdf.Pdf) + +Ends the bookmark setting process, writing the bookmarks to the given PDF. + +Cpdf.getBookmarksJSON(Cpdf.Pdf) + +Returns the bookmark data in JSON format. + +Cpdf.setBookmarksJSON(Cpdf.Pdf, Byte[]) + +Sets the bookmarks from JSON bookmark data. + +Cpdf.tableOfContents(Cpdf.Pdf, Cpdf.Font, Double, String, Boolean) + +Typesets a table of contents from existing bookmarks and prepends it to the +document. If bookmark is set, the table of contents gets its own bookmark. diff --git a/javasplits/c08.tex b/javasplits/c08.tex new file mode 100644 index 0000000..9b5c52e --- /dev/null +++ b/javasplits/c08.tex @@ -0,0 +1,3 @@ +CHAPTER 7. Presentations + +Not included in the library version of cpdf. diff --git a/javasplits/c09.tex b/javasplits/c09.tex new file mode 100644 index 0000000..d1c6dbe --- /dev/null +++ b/javasplits/c09.tex @@ -0,0 +1,123 @@ +CHAPTER 8. Logos, Watermarks and Stamps + +Cpdf.stampOn(Cpdf.Pdf, Cpdf.Pdf, List{Int32}) + +Stamps stamp_pdf on top of all the pages in the document which are in the +range. The stamp is placed with its origin at the origin of the target +document. + +Cpdf.stampUnder(Cpdf.Pdf, Cpdf.Pdf, List{Int32}) + +Stamps stamp_pdf under all the pages in the document which are in the range. +The stamp is placed with its origin at the origin of the target document. + +Cpdf.stampExtended(Cpdf.Pdf, Cpdf.Pdf, List{Int32}, Boolean, Boolean, +Cpdf.Position, Boolean) + +A stamping function with extra features. - isover true, pdf goes over pdf2, +isover false, pdf goes under pdf2 - scale_stamp_to_fit scales the stamp to fit +the page - pos gives the position to put the stamp - relative_to_cropbox: if +true, pos is relative to cropbox not mediabox. + +Cpdf.combinePages(Cpdf.Pdf, Cpdf.Pdf) + +Combines the PDFs page-by-page, putting each page of 'over' over each page of +'under'. + +Cpdf.Font + +Standard fonts + +Cpdf.Font.TimesRoman + +Times Roman + +Cpdf.Font.TimesBold + +Times Bold + +Cpdf.Font.TimesItalic + +Times Italic + +Cpdf.Font.TimesBoldItalic + +Times Bold Italic + +Cpdf.Font.Helvetica + +Helvetica + +Cpdf.Font.HelveticaBold + +Helvetica Bold + +Cpdf.Font.HelveticaOblique + +Helvetica Oblique + +Cpdf.Font.HelveticaBoldOblique + +Helvetica Bold Oblique + +Cpdf.Font.Courier + +Courier + +Cpdf.Font.CourierBold + +Courier Bold + +Cpdf.Font.CourierOblique + +Courier Oblique + +Cpdf.Font.CourierBoldOblique + +Courier Bold Oblique + +Cpdf.Justification + +Justifications + +Cpdf.Justification.LeftJustify + +Left justify + +Cpdf.Justification.CentreJustify + +Centre justify + +Cpdf.Justification.RightJustify + +Right justify + +Cpdf.addText(Boolean, Cpdf.Pdf, List{Int32}, String, Cpdf.Position, Double, +Int32, Cpdf.Font, Double, Double, Double, Double, Boolean, Boolean, Boolean, +Double, Cpdf.Justification, Boolean, Boolean, String, Double, Boolean) + +Adds text to the pages in the given range. + +Cpdf.addTextSimple(Cpdf.Pdf, List{Int32}, String, Cpdf.Position, Cpdf.Font, +Double) + +Adds text with most parameters default. + +Cpdf.removeText(Cpdf.Pdf, List{Int32}) + +Removes any text added by cpdf from the given pages. + +Cpdf.textWidth(Cpdf.Font, String) + +Returns the width of a given string in the given font in thousandths of a +point. + +Cpdf.addContent(String, Boolean, Cpdf.Pdf, List{Int32}) + +Adds page content before (if true) or after (if false) the existing content to +pages in the given range in the given PDF. + +Cpdf.stampAsXObject(Cpdf.Pdf, List{Int32}, Cpdf.Pdf) + +Stamps stamp_pdf onto the pages in the given range in pdf as a shared Form +XObject. The name of the newly-created XObject is returned. diff --git a/javasplits/c10.tex b/javasplits/c10.tex new file mode 100644 index 0000000..99b601a --- /dev/null +++ b/javasplits/c10.tex @@ -0,0 +1,40 @@ +CHAPTER 9. Multipage facilities + +Cpdf.impose(Cpdf.Pdf, Double, Double, Boolean, Boolean, Boolean, Boolean, +Boolean, Double, Double, Double) + +Imposes a PDF. There are two modes: imposing x * y, or imposing to fit a page +of size x * y. This is controlled by fit. Columns imposes by columns rather +than rows. rtl is right-to-left, btt bottom-to-top. Center is unused for now. +Margin is the margin around the output, spacing the spacing between imposed +inputs. + +Cpdf.twoUp(Cpdf.Pdf) + +Imposes a document two up. twoUpStack does so by doubling the page size, to fit +two pages on one. + +Cpdf.twoUpStack(Cpdf.Pdf) + +Impose a document two up. twoUpStack does so by doubling the page size, to fit +two pages on one. + +Cpdf.padBefore(Cpdf.Pdf, List{Int32}) + +Adds a blank page before each page in the given range. + +Cpdf.padAfter(Cpdf.Pdf, List{Int32}) + +Adds a blank page after each page in the given range. + +Cpdf.padEvery(Cpdf.Pdf, Int32) + +Adds a blank page after every n pages. + +Cpdf.padMultiple(Cpdf.Pdf, Int32) + +Adds pages at the end to pad the file to a multiple of n pages in length. + +Cpdf.padMultipleBefore(Cpdf.Pdf, Int32) + +Adds pages at the beginning to pad the file to a multiple of n pages in length. diff --git a/javasplits/c11.tex b/javasplits/c11.tex new file mode 100644 index 0000000..bf10106 --- /dev/null +++ b/javasplits/c11.tex @@ -0,0 +1,5 @@ +CHAPTER 10. Annotations + +Cpdf.annotationsJSON(Cpdf.Pdf) + +Returns the annotations from a PDF in JSON format diff --git a/javasplits/c12.tex b/javasplits/c12.tex new file mode 100644 index 0000000..be343b1 --- /dev/null +++ b/javasplits/c12.tex @@ -0,0 +1,368 @@ +CHAPTER 11. Document Information and Metadata + +Cpdf.isLinearized(String) + +Finds out if a document is linearized as quickly as possible without loading +it. + +Cpdf.getVersion(Cpdf.Pdf) + +Returns the minor version number of a document. + +Cpdf.getMajorVersion(Cpdf.Pdf) + +Returns the minor version number of a document. + +Cpdf.getTitle(Cpdf.Pdf) + +Returns the title of a document. + +Cpdf.getAuthor(Cpdf.Pdf) + +Returns the author of a document. + +Cpdf.getSubject(Cpdf.Pdf) + +Returns the subject of a document. + +Cpdf.getKeywords(Cpdf.Pdf) + +Returns the keywords of a document. + +Cpdf.getCreator(Cpdf.Pdf) + +Returns the creator of a document. + +Cpdf.getProducer(Cpdf.Pdf) + +Returns the producer of a document. + +Cpdf.getCreationDate(Cpdf.Pdf) + +Returns the creation date of a document. + +Cpdf.getModificationDate(Cpdf.Pdf) + +Returns the modification date of a document. + +Cpdf.getTitleXMP(Cpdf.Pdf) + +Returns the XMP title of a document. + +Cpdf.getAuthorXMP(Cpdf.Pdf) + +Returns the XMP author of a document. + +Cpdf.getSubjectXMP(Cpdf.Pdf) + +Returns the XMP subject of a document. + +Cpdf.getKeywordsXMP(Cpdf.Pdf) + +Returns the XMP keywords of a document. + +Cpdf.getCreatorXMP(Cpdf.Pdf) + +Returns the XMP creator of a document. + +Cpdf.getProducerXMP(Cpdf.Pdf) + +Returns the XMP producer of a document. + +Cpdf.getCreationDateXMP(Cpdf.Pdf) + +Returns the XMP creation date of a document. + +Cpdf.getModificationDateXMP(Cpdf.Pdf) + +Returns the XMP modification date of a document. + +Cpdf.setTitle(Cpdf.Pdf, String) + +Sets the title of a document. + +Cpdf.setAuthor(Cpdf.Pdf, String) + +Sets the author of a document. + +Cpdf.setSubject(Cpdf.Pdf, String) + +Sets the subject of a document. + +Cpdf.setKeywords(Cpdf.Pdf, String) + +Sets the keywords of a document. + +Cpdf.setCreator(Cpdf.Pdf, String) + +Sets the creator of a document. + +Cpdf.setProducer(Cpdf.Pdf, String) + +Sets the producer of a document. + +Cpdf.setCreationDate(Cpdf.Pdf, String) + +Sets the creation date of a document. + +Cpdf.setModificationDate(Cpdf.Pdf, String) + +Sets the modification date of a document. + +Cpdf.setTitleXMP(Cpdf.Pdf, String) + +Sets the XMP title of a document. + +Cpdf.setAuthorXMP(Cpdf.Pdf, String) + +Sets the XMP author of a document. + +Cpdf.setSubjectXMP(Cpdf.Pdf, String) + +Sets the XMP subject of a document. + +Cpdf.setKeywordsXMP(Cpdf.Pdf, String) + +Sets the XMP keywords of a document. + +Cpdf.setCreatorXMP(Cpdf.Pdf, String) + +Sets the XMP creator of a document. + +Cpdf.setProducerXMP(Cpdf.Pdf, String) + +Sets the XMP producer of a document. + +Cpdf.setCreationDateXMP(Cpdf.Pdf, String) + +Sets the XMP creation date of a document. + +Cpdf.setModificationDateXMP(Cpdf.Pdf, String) + +Sets the XMP modification date of a document. + +Cpdf.getDateComponents(String, Int32@, Int32@, Int32@, Int32@, Int32@, Int32@, +Int32@, Int32@) + +Returns the components from a PDF date string. + +Cpdf.dateStringOfComponents(Int32, Int32, Int32, Int32, Int32, Int32, Int32, +Int32) + +Builds a PDF date string from individual components. + +Cpdf.getPageRotation(Cpdf.Pdf, Int32) + +Gets the viewing rotation for a given page. + +Cpdf.hasBox(Cpdf.Pdf, Int32, String) + +Returns true, if that page has the given box. E.g "/CropBox". + +Cpdf.getMediaBox(Cpdf.Pdf, Int32, Double@, Double@, Double@, Double@) + +Cpdf.getCropBox(Cpdf.Pdf, Int32, Double@, Double@, Double@, Double@) + +Cpdf.getTrimBox(Cpdf.Pdf, Int32, Double@, Double@, Double@, Double@) + +Cpdf.getArtBox(Cpdf.Pdf, Int32, Double@, Double@, Double@, Double@) + +Cpdf.getBleedBox(Cpdf.Pdf, Int32, Double@, Double@, Double@, Double@) + +These functions get a box given the document, page number, min x, max x, +min y, max y in points. Only succeeds if such a box exists, as checked by +hasBox. + +Cpdf.setMediabox(Cpdf.Pdf, List{Int32}, Double, Double, Double, Double) + +Cpdf.setCropBox(Cpdf.Pdf, List{Int32}, Double, Double, Double, Double) + +Cpdf.setTrimBox(Cpdf.Pdf, List{Int32}, Double, Double, Double, Double) + +Cpdf.setArtBox(Cpdf.Pdf, List{Int32}, Double, Double, Double, Double) + +Cpdf.setBleedBox(Cpdf.Pdf, List{Int32}, Double, Double, Double, Double) + +These functions set a box given the document, page range, min x, max x, +min y, max y in points. + +Cpdf.markTrapped(Cpdf.Pdf) + +Marks a document as trapped. + +Cpdf.markUntrapped(Cpdf.Pdf) + +Marks a document as untrapped. + +Cpdf.markTrappedXMP(Cpdf.Pdf) + +Marks a document as trapped in XMP metadata. + +Cpdf.markUntrappedXMP(Cpdf.Pdf) + +Marks a document as untrapped in XMP metadata. + +Cpdf.Layout + +Layouts + +Cpdf.Layout.SinglePage + +Single page + +Cpdf.Layout.OneColumn + +One column + +Cpdf.Layout.TwoColumnLeft + +Two column left + +Cpdf.Layout.TwoColumnRight + +Two column right + +Cpdf.Layout.TwoPageLeft + +Two page left + +Cpdf.Layout.TwoPageRight + +Two page right + +Cpdf.setPageLayout(Cpdf.Pdf, Cpdf.Layout) + +Sets the page layout for a document. + +Cpdf.PageMode + +Page modes + +Cpdf.PageMode.UseNone + +Use none + +Cpdf.PageMode.UseOutlines + +Use outlines + +Cpdf.PageMode.UseThumbs + +Use thumbs + +Cpdf.PageMode.UseOC + +Use OC + +Cpdf.PageMode.UseAttachments + +Use attachments + +Cpdf.setPageMode(Cpdf.Pdf, Cpdf.PageMode) + +Sets the page mode for a document. + +Cpdf.hideToolbar(Cpdf.Pdf, Boolean) + +Sets the hide toolbar flag. + +Cpdf.hideMenubar(Cpdf.Pdf, Boolean) + +Sets the hide menubar flag. + +Cpdf.hideWindowUi(Cpdf.Pdf, Boolean) + +Sets the hide window UI flag. + +Cpdf.fitWindow(Cpdf.Pdf, Boolean) + +Sets the fit window flag. + +Cpdf.centerWindow(Cpdf.Pdf, Boolean) + +Sets the center window flag. + +Cpdf.displayDocTitle(Cpdf.Pdf, Boolean) + +Sets the display doc title flag. + +Cpdf.openAtPage(Cpdf.Pdf, Boolean, Int32) + +Sets the PDF to open, possibly with zoom-to-fit, at the given page number. + +Cpdf.setMetadataFromFile(Cpdf.Pdf, String) + +Sets the XMP metadata of a document, given a file name. + +Cpdf.setMetadataFromByteArray(Cpdf.Pdf, Byte[]) + +Sets the XMP metadata from an array of bytes. + +Cpdf.removeMetadata(Cpdf.Pdf) + +Removes the XMP metadata from a document. + +Cpdf.getMetadata(Cpdf.Pdf) + +Returns the XMP metadata from a document. + +Cpdf.createMetadata(Cpdf.Pdf) + +Builds fresh metadata as best it can from +existing metadata in the document. + +Cpdf.setMetadataDate(Cpdf.Pdf, String) + +Sets the metadata date for a PDF. The date is given in PDF date format -- cpdf +will convert it to XMP format. The date 'now' means now. + +Cpdf.PageLabelStyle + +Page label styles + +Cpdf.PageLabelStyle.DecimalArabic + +1, 2, 3... + +Cpdf.PageLabelStyle.UppercaseRoman + +I, II, III... + +Cpdf.PageLabelStyle.LowercaseRoman + +i, ii, iii... + +Cpdf.PageLabelStyle.UppercaseLetters + +A, B, C... + +Cpdf.PageLabelStyle.LowercaseLetters + +a, b, c... + +Cpdf.addPageLabels(Cpdf.Pdf, Cpdf.PageLabelStyle, String, Int32, List{Int32}, +Boolean) + +Adds page labels. The prefix is prefix text for each label. The range is the +page range the labels apply to. Offset can be used to shift the numbering up or +down. + +Cpdf.removePageLabels(Cpdf.Pdf) + +Removes the page labels from the document. + +Cpdf.getPageLabelStringForPage(Cpdf.Pdf, Int32) + +Calculates the full label string for a given page, and returns it. + +Cpdf.startGetPageLabels(Cpdf.Pdf) + +Cpdf.getPageLabelStyle(Int32) + +Cpdf.getPageLabelPrefix(Int32) + +Cpdf.getPageLabelOffset(Int32) + +Cpdf.getPageLabelRange(Int32) + +Cpdf.endGetPageLabels diff --git a/javasplits/c13.tex b/javasplits/c13.tex new file mode 100644 index 0000000..487cd7a --- /dev/null +++ b/javasplits/c13.tex @@ -0,0 +1,47 @@ +CHAPTER 12. File Attachments + +Cpdf.attachFile(String, Cpdf.Pdf) + +Attaches a file to the pdf. It is attached at document level. + +Cpdf.attachFileToPage(String, Cpdf.Pdf, Int32) + +Attaches a file, given its file name, pdf, and the page number to which it +should be attached. + +Cpdf.attachFileFromMemory(Byte[], String, Cpdf.Pdf) + +Attaches data from memory, just like attachFile. + +Cpdf.attachFileToPageFromMemory(Byte[], String, Cpdf.Pdf, Int32) + +Attaches to a page from memory, just like attachFileToPage. + +Cpdf.removeAttachedFiles(Cpdf.Pdf) + +Removes all page- and document-level attachments from a document. + +Cpdf.startGetAttachments(Cpdf.Pdf) + +Cpdf.numberGetAttachments + +Lists information about attachments. Call startGetAttachments(pdf) first, then +numberGetAttachments to find out how many there are. Then getAttachmentName +etc. to return each one 0...(n - 1). Finally, call endGetAttachments to clean +up. + +Cpdf.getAttachmentName(Int32) + +Gets the name of an attachment. + +Cpdf.getAttachmentPage(Int32) + +Gets the page number. 0 = document level. + +Cpdf.getAttachmentData(Int32) + +Gets the attachment data itself. + +Cpdf.endGetAttachments + +Cleans up after getting attachments. diff --git a/javasplits/c14.tex b/javasplits/c14.tex new file mode 100644 index 0000000..f81eb99 --- /dev/null +++ b/javasplits/c14.tex @@ -0,0 +1,25 @@ +CHAPTER 13. Images. + +Cpdf.startGetImageResolution(Cpdf.Pdf, Double) + +Cpdf.getImageResolutionPageNumber(Int32) + +Cpdf.getImageResolutionImageName(Int32) + +Cpdf.getImageResolutionXPixels(Int32) + +Cpdf.getImageResolutionYPixels(Int32) + +Cpdf.getImageResolutionXRes(Int32) + +Cpdf.getImageResolutionYRes(Int32) + +Cpdf.endGetImageResolution + +Gets image data, including resolution at all points of use. Call +startGetImageResolution(pdf, min_required_resolution) will begin the +process of obtaining data on all image uses below min_required_resolution, +returning the total number. So, to return all image uses, specify a very +high min_required_resolution. Then, call the other functions giving a +serial number 0..n - 1, to retrieve the data. Finally, call +endGetImageResolution to clean up. diff --git a/javasplits/c15.tex b/javasplits/c15.tex new file mode 100644 index 0000000..66073b8 --- /dev/null +++ b/javasplits/c15.tex @@ -0,0 +1,30 @@ +CHAPTER 14. Fonts. + +Cpdf.startGetFontInfo(Cpdf.Pdf) + +Cpdf.numberFonts + +Cpdf.getFontPage(Int32) + +Cpdf.getFontName(Int32) + +Cpdf.getFontType(Int32) + +Cpdf.getFontEncoding(Int32) + +Cpdf.endGetFontInfo + +Retrieves font information. First, call startGetFontInfo(pdf). Now call +numberFonts to return the number of fonts. For each font, call one or more of +getFontPage, getFontName, getFontType, and getFontEncoding giving a serial +number 0..n - 1 to return information. Finally, call endGetFontInfo to clean +up. + +Cpdf.removeFonts(Cpdf.Pdf) + +Removes all font data from a file. + +Cpdf.copyFont(Cpdf.Pdf, Cpdf.Pdf, List{Int32}, Int32, String) + +Copies the given font from the given page in the 'from' PDF to every page in +the 'to' PDF. The new font is stored under its font name. diff --git a/javasplits/c16.tex b/javasplits/c16.tex new file mode 100644 index 0000000..7129ff2 --- /dev/null +++ b/javasplits/c16.tex @@ -0,0 +1,19 @@ +CHAPTER 15. PDF and JSON + +Cpdf.outputJSON(String, Boolean, Boolean, Boolean, Cpdf.Pdf) + +Outputs a PDF in JSON format to the given filename. If parse_content is true, +page content is parsed. If no_stream_data is true, all stream data is +suppressed entirely. + +Cpdf.outputJSONMemory(Cpdf.Pdf, Boolean, Boolean, Boolean) + +Like outputJSON, but it writes to a byte array in memory. + +Cpdf.fromJSON(String) + +Loads a PDF from a JSON file given its filename. + +Cpdf.fromJSONMemory(Byte[]) + +Loads a PDF from a JSON file in memory diff --git a/javasplits/c17.tex b/javasplits/c17.tex new file mode 100644 index 0000000..9e5be3c --- /dev/null +++ b/javasplits/c17.tex @@ -0,0 +1,28 @@ +CHAPTER 16. Optional Content Groups + +Cpdf.startGetOCGList(Cpdf.Pdf) + +Begins retrieving optional content group names. The serial number 0..n - 1 is +returned. + +Cpdf.OCGListEntry(Int32) + +Retrieves an OCG name, given its serial number 0..n - 1. + +Cpdf.endGetOCGList + +Ends retrieval of optional content group names. + +Cpdf.OCGRename(Cpdf.Pdf, String, String) + +Renames an optional content group. + +Cpdf.OCGOrderAll(Cpdf.Pdf) + +Ensures that every optional content group appears in the OCG order list. + +Cpdf.OCGCoalesce(Cpdf.Pdf) + +Coalesces optional content groups. For example, if we merge or stamp two files +both with an OCG called "Layer 1", we will have two different optional content +groups. This function will merge the two into a single optional content group. diff --git a/javasplits/c18.tex b/javasplits/c18.tex new file mode 100644 index 0000000..043b0ec --- /dev/null +++ b/javasplits/c18.tex @@ -0,0 +1,20 @@ +CHAPTER 17. Creating New PDFs + +Cpdf.blankDocument(Double, Double, Int32) + +Creates a blank document with pages of the given width (in points), height (in +points), and number of pages. + +Cpdf.blankDocumentPaper(Cpdf.Papersize, Int32) + +Makes a blank document given a page size and number of pages. + +Cpdf.textToPDF(Double, Double, Cpdf.Font, Double, String) + +Typesets a UTF8 text file ragged right on a page of size w * h in points in the +given font and font size. + +Cpdf.textToPDFPaper(Cpdf.Papersize, Cpdf.Font, Double, String) + +Typesets a UTF8 text file ragged right on a page of the given size in the given +font and font size. diff --git a/javasplits/c19.tex b/javasplits/c19.tex new file mode 100644 index 0000000..a7d58f9 --- /dev/null +++ b/javasplits/c19.tex @@ -0,0 +1,70 @@ +CHAPTER 18. Miscellaneous + +Cpdf.draft(Cpdf.Pdf, List{Int32}, Boolean) + +Removes images on the given pages, replacing them with crossed boxes if 'boxes' +is true. + +Cpdf.removeAllText(Cpdf.Pdf, List{Int32}) + +Removes all text from the given pages in a given document. + +Cpdf.blackText(Cpdf.Pdf, List{Int32}) + +Blackens all text on the given pages. + +Cpdf.blackLines(Cpdf.Pdf, List{Int32}) + +Blackens all lines on the given pages. + +Cpdf.blackFills(Cpdf.Pdf, List{Int32}) + +Blackens all fills on the given pages. + +Cpdf.thinLines(Cpdf.Pdf, List{Int32}, Double) + +Thickens every line less than min_thickness to min_thickness. Thickness given +in points. + +Cpdf.copyId(Cpdf.Pdf, Cpdf.Pdf) + +Copies the /ID from one document to another. + +Cpdf.removeId(Cpdf.Pdf) + +Removes a document's /ID. + +Cpdf.setVersion(Cpdf.Pdf, Int32) + +Sets the minor version number of a document. + +Cpdf.setFullVersion(Cpdf.Pdf, Int32, Int32) + +Sets the full version number of a document. + +Cpdf.removeDictEntry(Cpdf.Pdf, String) + +Removes any dictionary entry with the given key anywhere in the document. + +Cpdf.removeDictEntrySearch(Cpdf.Pdf, String, String) + +Removes any dictionary entry with the given key whose value matches the given +search term. + +Cpdf.replaceDictEntry(Cpdf.Pdf, String, String) + +Replaces the value associated with the given key. + +Cpdf.replaceDictEntrySearch(Cpdf.Pdf, String, String, String) + +Replaces the value associated with the given key if the existing value matches +the search term. + +Cpdf.removeClipping(Cpdf.Pdf, List{Int32}) + +Removes all clipping from pages in the given range. + +Cpdf.getDictEntries(Cpdf.Pdf, String) + +Returns a JSON array containing any and all values associated with the given +key, and fills in its length. diff --git a/javasplits/cm1.tex b/javasplits/cm1.tex new file mode 100644 index 0000000..805adc2 --- /dev/null +++ b/javasplits/cm1.tex @@ -0,0 +1,28 @@ +CPDF .NET Library +================= + +Before using the library, you must make sure your project or build environment +has access to the cpdf DLL, which is not part of the .NET assembly. You can add +it to a Visual Studio project as a file, set to copy-to-output-folder. Or, you +can install it in a standard location. The DLL must be named as follows, for +.NET to be able to find it: + +Windows: cpdf.dll +MacOS: libcpdf.dylib +Linux: libcpdf.so + +The following documentation is automatically extracted from the XML comments +present in the assembly. You can use Intellisense to view them within Visual +Studio - the documentation here is for completeness. + +A 'range' is a list of integers specifying page numbers. + +Text arguments and results are in UTF8. Data is of type bytes[]. + +Any function may raise the exception CPDFError, carrying a string describing +the error. + +There is no automatic garbage collection of PDFs. Use the Using keyword and/or +the Dispose method on objects of type Cpdf.Pdf to explicitly deallocate PDFs. + +