When creating a new PDF Document adding new layers can be done very easily. There are several examples of how to do that on the Internet and in the iText book. This is definitely supported by the current iText API and there is no need for low level objects. I am trying in a similar way to read the different PDF layers from a PDF document. You may have a point that the current API does not support it. So far nobody said that. Does it?
------------------- Eli Segev -----Original Message----- From: Leonard Rosenthol [mailto:[email protected]] Sent: Monday, July 19, 2010 4:40 PM To: 'Post all your questions about iText here' Subject: Re: [iText-questions] Showing Invisible Layrers I think you are trying to mix the high level objects used during creation with the low level objects used in the actual PDF file. You can't do that - they don't relate to each other. To do the work you want, you will need to work ENTIRELY at the low level. And that requires a detailed understanding of the objects described in ISO 32000-1 and how they all work together. Leonard -----Original Message----- From: Segev, Eli [mailto:[email protected]] Sent: Monday, July 19, 2010 4:24 PM To: Post all your questions about iText here Subject: Re: [iText-questions] Showing Invisible Layrers I could not find in any of the dictionaries in the 'Catalog' any object of type PDFOCG (I know that it is an interface). This is what I am looking for. How do I do that? BTW, with PdfName.D instead of PdfName.OCG I can get to the ON array and OFF array, but they also don't lead to any graphics information. ------------------- Eli Segev 781-370-6096 -----Original Message----- From: Mark Storer [mailto:[email protected]] Sent: Monday, July 19, 2010 4:01 PM To: Post all your questions about iText here Subject: Re: [iText-questions] Showing Invisible Layrers If you pass any PDF object into PdfReader.getObject(...) you can be sure that the return value is a "direct" object, not a reference. However, I strongly prefer the getAs* functions for various reasons, automatic indirect object lookup is just one of them: PdfDictionary root = reader.getCatalog(); PdfDictionary ocProps = root.getAsDict(PdfName.OCGPROPERTIES); PdfArray ocgs = ocProps.getAsArray(PdfName.OCGS); for (int i = 0; i < ocgs.size(); ++i) { PdfDictionary curOCG = ocgs.getAsDict(i); System.out.println(curOCG); } Compare that to: PdfDictionary root = reader.getCatalog(); PdfDictionary ocProps = (PdfDictionary)PdfReader.getObject( root.get(PdfName.OCGPROPERTIES)); PdfArray ocgs = (PdfArray)PdfReader.getObject(ocProps.get(PdfName.OCGS)); for (int i = 0; i < ocgs.size(); ++i) { PdfDictionary curOCG = (PdfDictionary)PdfReader.getObject(ocgs.getPdfObject(i)); System.out.println(curOCG); } Type safety, cleaner code, AND you don't have to worry about indirect references. Good stuff. --Mark Storer Senior Software Engineer Cardiff.com import legalese.Disclaimer; Disclaimer<Cardiff> DisCard = null; > -----Original Message----- > From: Segev, Eli [mailto:[email protected]] > Sent: Monday, July 19, 2010 9:09 AM > To: Post all your questions about iText here > Subject: Re: [iText-questions] Showing Invisible Layrers > > I don't see any PdfReader.getObject( myRef ) in the API. There is > PdfReader.getObject( PdfObject ), though. > > I still have not found any PdfLayer (or PDFOCG) objects in the catalog. > There are dictionaries and arrays that do not contain these objects. > > ------------------- > Eli Segev > 781-370-6096 > -----Original Message----- > From: Mark Storer [mailto:[email protected]] > Sent: Thursday, July 15, 2010 6:15 PM > To: Post all your questions about iText here > Subject: Re: [iText-questions] Showing Invisible Layrers > > PRIndirectReference and it's parent, PdfIndirectReference, are > references to another object. To look up that object, you call > PdfReader.getObject( myRef ). > > THAT object will be of the required type (or at least should be). > > You can let dict.getAs* or array.getAt* do the indirect lookups and type > checking for you. I sure do. > > --Mark Storer > Senior Software Engineer > Cardiff.com > > import legalese.Disclaimer; > Disclaimer<Cardiff> DisCard = null; > > > > -----Original Message----- > > From: Segev, Eli [mailto:[email protected]] > > Sent: Thursday, July 15, 2010 12:46 PM > > To: Post all your questions about iText here > > Subject: Re: [iText-questions] Showing Invisible Layrers > > > > I have read section 8.11.2 in the ISO 32000-1 and it says that there > are > > 4 entries in optional content group and they are Type, Name, Intent > and > > Usage. I see all these entries. Type and Name are fine. But Intent > > should be a name array and it is a PRIndirectReference. Usage should > be > > a dictionary, but it is PRIndirectReference. Does anyone understand > > this? > > > > ------------------- > > Eli Segev > > > > > > -----Original Message----- > > From: Leonard Rosenthol [mailto:[email protected]] > > Sent: Thursday, July 15, 2010 9:42 AM > > To: Post all your questions about iText here > > Subject: Re: [iText-questions] Showing Invisible Layrers > > > > Have you read ISO 32000-1? You NEED to read the spec. Doing this w/o > > reading and understanding the spec is just trouble! > > > > -----Original Message----- > > From: Segev, Eli [mailto:[email protected]] > > Sent: Thursday, July 15, 2010 3:23 PM > > To: Post all your questions about iText here > > Subject: Re: [iText-questions] Showing Invisible Layrers > > > > Mark, > > > > Thanks. > > > > In the dictionary "OCProperties" I see a dictionary "OCGs" and in > "OCGs" > > there is an array, which seems to have 6 dictionaries. There are 6 > > layers in the original PDF. I assume that the 6 dictionary items are > > related to the 6 llayers. Each dictionary item has two > > PRIndirectReference objects, a PdfString and a PdfName. The PdfName > is > > 'OCG'. The PdfString holds the name of the layer. > > > > My question is how do I get from a PRIndirectReference object to a > > PDFOCG object? > > Can I see in the PRIndirectReference object that it is an invisible > > layer? > > Is the visibility information in the PdfName object? I don't see it. > > > > ------------------- > > Eli Segev > > > > -----Original Message----- > > From: Mark Storer [mailto:[email protected]] > > Sent: Wednesday, July 14, 2010 12:26 PM > > To: Post all your questions about iText here > > Subject: Re: [iText-questions] Showing Invisible Layrers > > > > First of all, let me introduce you to your new best friend, the Pdf > > Specification: > > > > http://www.adobe.com/devnet/acrobat/pdfs/PDF32000_2008.pdf > > > > It's an ISO spec, and you normally have to pay for it. However, Adobe > > hosts a publicly available copy that is fairly well buried on their > web > > site. That's why I keep a copy of the URL handy for folks like > > yourself. > > > > You'll need to learn about the basic PDF object types (name, string, > > number, boolean, dictionary, array, stream, and indirect reference). > > It's all in chapter 7.3. Nothing terribly complicated. You don't > need > > to know the exact syntax (which the spec goes into at length), iText > > takes care of that for you. It will be Very Useful however to know > how > > to read it, because the spec has quite a few examples listed in that > > syntax. > > > > Then you'll need to know what a layer looks like. The PDF Spec calls > > them Optional Content Groups. > > > > As it turns out, optional content is stored at the document level. > > > > PdfDictionary root = myPdfReader.getCatalog(); > > > > "Root" and "catalog" are used interchangeably as the term for the top > > level object of a PDF, from which all other objects are referenced. > > > > The option content information is stored in the OCProperties key of > the > > root dictionary: > > > > PdfDictionary ocProps = root.getAsDict(new PdfName("OCProperties")); > > > > According to 8.11.4.2, that dictionary will have two required keys, > OCGs > > and D. OCGs is an array of optional content groups, and D is a > > dictionary specifying the default OC configuration. > > > > I'll leave the rest to you... but feel free to ask more questions if > you > > get stuck. > > > > --Mark Storer > > Senior Software Engineer > > Cardiff.com > > > > import legalese.Disclaimer; > > Disclaimer<Cardiff> DisCard = null; > > > > > > > -----Original Message----- > > > From: Segev, Eli [mailto:[email protected]] > > > Sent: Wednesday, July 14, 2010 8:44 AM > > > To: Post all your questions about iText here > > > Subject: Re: [iText-questions] Showing Invisible Layrers > > > > > > > > > >The visibility of the layers is defined in the OC groups. This > > > structure is present in the root > > > >object of the PDF. > > > >So you need at least copy that structure to the root of the new > PDF. > > > >(And maybe copy some more stuff, but that is a minimum > requirement.) > > > > > > How do you copy the structure of the PDF? Do you use the PdfReader > > > object or the PdfImportedObject object? > > > How do you know that the file being read has invisible layers? > > > > > > ------------------- > > > Eli Segev > > > > > > -----Original Message----- > > > From: Segev, Eli [mailto:[email protected]] > > > Sent: Tuesday, July 13, 2010 4:38 PM > > > To: Post all your questions about iText here > > > Subject: [iText-questions] Showing Invisible Layrers > > > > > > I use the following code to add PDF images to a PDF page: > > > > > > import com.itextpdf.text.*; > > > import com.itextpdf.text.pdf.*; > > > > > > String file = ... > > > PdfReader reader = new PdfReader(file); > > > PdfImportedPage page = > writer.getImportedPage(reader, > > > 1); > > > Image img = Image.getInstance(page); > > > > > > When I use a particular multi-layer PDF file, the invisible layers > > > become visible in the result image. Is there any trick to keep the > > > invisible layers invisible? > > > > > > ------------------- > > > Eli Segev > > > > > > > > > ------------------------------------------------------------------------ > > > ------ > > > This SF.net email is sponsored by Sprint > > > What will you do first with EVO, the first 4G phone? > > > Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first > > > _______________________________________________ > > > iText-questions mailing list > > > [email protected] > > > https://lists.sourceforge.net/lists/listinfo/itext-questions > > > > > > Buy the iText book: http://www.itextpdf.com/book/ > > > Check the site with examples before you ask questions: > > > http://www.1t3xt.info/examples/ > > > You can also search the keywords list: > > > http://1t3xt.info/tutorials/keywords/ > > > > > > > > > ------------------------------------------------------------------------ > > > ------ > > > This SF.net email is sponsored by Sprint > > > What will you do first with EVO, the first 4G phone? > > > Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first > > > _______________________________________________ > > > iText-questions mailing list > > > [email protected] > > > https://lists.sourceforge.net/lists/listinfo/itext-questions > > > > > > Buy the iText book: http://www.itextpdf.com/book/ > > > Check the site with examples before you ask questions: > > > http://www.1t3xt.info/examples/ > > > You can also search the keywords list: > > > http://1t3xt.info/tutorials/keywords/ > > > > > > > > > ------------------------------------------------------------------------ > > -- > > > ---- > > > This SF.net email is sponsored by Sprint > > > What will you do first with EVO, the first 4G phone? > > > Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first > > > _______________________________________________ > > > iText-questions mailing list > > > [email protected] > > > https://lists.sourceforge.net/lists/listinfo/itext-questions > > > > > > Buy the iText book: http://www.itextpdf.com/book/ > > > Check the site with examples before you ask questions: > > > http://www.1t3xt.info/examples/ > > > You can also search the keywords list: > > > http://1t3xt.info/tutorials/keywords/ > > > > > > > > > No virus found in this incoming message. > > > Checked by AVG - www.avg.com > > > Version: 9.0.830 / Virus Database: 271.1.1/3003 - Release Date: > > 07/13/10 > > > 11:36:00 > > > > > ------------------------------------------------------------------------ > > ------ > > This SF.net email is sponsored by Sprint > > What will you do first with EVO, the first 4G phone? > > Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first > > _______________________________________________ > > iText-questions mailing list > > [email protected] > > https://lists.sourceforge.net/lists/listinfo/itext-questions > > > > Buy the iText book: http://www.itextpdf.com/book/ > > Check the site with examples before you ask questions: > > http://www.1t3xt.info/examples/ > > You can also search the keywords list: > > http://1t3xt.info/tutorials/keywords/ > > > > > ------------------------------------------------------------------------ > > ------ > > This SF.net email is sponsored by Sprint > > What will you do first with EVO, the first 4G phone? > > Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first > > _______________________________________________ > > iText-questions mailing list > > [email protected] > > https://lists.sourceforge.net/lists/listinfo/itext-questions > > > > Buy the iText book: http://www.itextpdf.com/book/ > > Check the site with examples before you ask questions: > > http://www.1t3xt.info/examples/ > > You can also search the keywords list: > > http://1t3xt.info/tutorials/keywords/ > > > > > ------------------------------------------------------------------------ > > ------ > > This SF.net email is sponsored by Sprint > > What will you do first with EVO, the first 4G phone? > > Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first > > _______________________________________________ > > iText-questions mailing list > > [email protected] > > https://lists.sourceforge.net/lists/listinfo/itext-questions > > > > Buy the iText book: http://www.itextpdf.com/book/ > > Check the site with examples before you ask questions: > > http://www.1t3xt.info/examples/ > > You can also search the keywords list: > > http://1t3xt.info/tutorials/keywords/ > > > > > ------------------------------------------------------------------------ > -- > > ---- > > This SF.net email is sponsored by Sprint > > What will you do first with EVO, the first 4G phone? > > Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first > > _______________________________________________ > > iText-questions mailing list > > [email protected] > > https://lists.sourceforge.net/lists/listinfo/itext-questions > > > > Buy the iText book: http://www.itextpdf.com/book/ > > Check the site with examples before you ask questions: > > http://www.1t3xt.info/examples/ > > You can also search the keywords list: > > http://1t3xt.info/tutorials/keywords/ > > > ------------------------------------------------------------------------ > ------ > This SF.net email is sponsored by Sprint > What will you do first with EVO, the first 4G phone? > Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first > _______________________________________________ > iText-questions mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/itext-questions > > Buy the iText book: http://www.itextpdf.com/book/ > Check the site with examples before you ask questions: > http://www.1t3xt.info/examples/ > You can also search the keywords list: > http://1t3xt.info/tutorials/keywords/ > > ------------------------------------------------------------------------ -- > ---- > This SF.net email is sponsored by Sprint > What will you do first with EVO, the first 4G phone? > Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first > _______________________________________________ > iText-questions mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/itext-questions > > Buy the iText book: http://www.itextpdf.com/book/ > Check the site with examples before you ask questions: > http://www.1t3xt.info/examples/ > You can also search the keywords list: > http://1t3xt.info/tutorials/keywords/ ------------------------------------------------------------------------ ------ This SF.net email is sponsored by Sprint What will you do first with EVO, the first 4G phone? Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first _______________________________________________ iText-questions mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/itext-questions Buy the iText book: http://www.itextpdf.com/book/ Check the site with examples before you ask questions: http://www.1t3xt.info/examples/ You can also search the keywords list: http://1t3xt.info/tutorials/keywords/ ------------------------------------------------------------------------ ------ This SF.net email is sponsored by Sprint What will you do first with EVO, the first 4G phone? Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first _______________________________________________ iText-questions mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/itext-questions Buy the iText book: http://www.itextpdf.com/book/ Check the site with examples before you ask questions: http://www.1t3xt.info/examples/ You can also search the keywords list: http://1t3xt.info/tutorials/keywords/ ------------------------------------------------------------------------ ------ This SF.net email is sponsored by Sprint What will you do first with EVO, the first 4G phone? Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first _______________________________________________ iText-questions mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/itext-questions Buy the iText book: http://www.itextpdf.com/book/ Check the site with examples before you ask questions: http://www.1t3xt.info/examples/ You can also search the keywords list: http://1t3xt.info/tutorials/keywords/ ------------------------------------------------------------------------------ This SF.net email is sponsored by Sprint What will you do first with EVO, the first 4G phone? Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first _______________________________________________ iText-questions mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/itext-questions Buy the iText book: http://www.itextpdf.com/book/ Check the site with examples before you ask questions: http://www.1t3xt.info/examples/ You can also search the keywords list: http://1t3xt.info/tutorials/keywords/
