Discussion:
[iText-questions] Extract PDF embedded images using iText
java.geek
2009-11-29 14:11:36 UTC
Permalink
Hi All, I am trying to extract images from pdf document using iText library.

I am able to create the instance of only JPEG format(*.jpg, *.jpeg, *.jpe).
**** Image imageObject = Image.getInstance(image); ****
Not other format images are embedded in PDF document.


public void extractImagesInfo(){
try{
PdfReader chartReader = new PdfReader("MyPdf.pdf");
for (int i = 0; i < chartReader.getXrefSize(); i++) {
PdfObject pdfobj = chartReader.getPdfObject(i);
if (pdfobj != null && pdfobj.isStream()) {
PdfStream stream = (PdfStream) pdfobj;
PdfObject pdfsubtype = stream.get(PdfName.SUBTYPE);
//System.out.println("Stream subType: " + pdfsubtype);
if (pdfsubtype != null &&
pdfsubtype.toString().equals(PdfName.IMAGE.toString())) {
byte[] image = PdfReader.getStreamBytesRaw((PRStream)
stream);
Image imageObject = Image.getInstance(image);
System.out.println("Resolution" + imageObject.getDpiX());
System.out.println("Height" + imageObject.getHeight());
System.out.println("Width" + imageObject.getWidth());

}
}
}
}catch(Exception e){
e.printStackTrace();
}

}
--
View this message in context: http://old.nabble.com/Extract-PDF-embedded-images-using-iText-tp26562385p26562385.html
Sent from the iText - General mailing list archive at Nabble.com.
Leonard Rosenthol
2009-11-29 20:21:52 UTC
Permalink
PDF images are NOT in a standard format - they are "arrays of color values" in a specific colorspace with a certain number of bits per component and potentially processed with one or more "filters". Details are described in ISO 32000-1.

As such, you will need to extract the image stream into some "image processing library" that knows what to do with the various structures and then can also, possibly, save them out to various image formats. JAI is probably a good place to look.

-----Original Message-----
From: java.geek [mailto:***@rediffmail.com]
Sent: Sunday, November 29, 2009 9:12 AM
To: itext-***@lists.sourceforge.net
Subject: [iText-questions] Extract PDF embedded images using iText


Hi All, I am trying to extract images from pdf document using iText library.

I am able to create the instance of only JPEG format(*.jpg, *.jpeg, *.jpe).
**** Image imageObject = Image.getInstance(image); ****
Not other format images are embedded in PDF document.


public void extractImagesInfo(){
try{
PdfReader chartReader = new PdfReader("MyPdf.pdf");
for (int i = 0; i < chartReader.getXrefSize(); i++) {
PdfObject pdfobj = chartReader.getPdfObject(i);
if (pdfobj != null && pdfobj.isStream()) {
PdfStream stream = (PdfStream) pdfobj;
PdfObject pdfsubtype = stream.get(PdfName.SUBTYPE);
//System.out.println("Stream subType: " + pdfsubtype);
if (pdfsubtype != null &&
pdfsubtype.toString().equals(PdfName.IMAGE.toString())) {
byte[] image = PdfReader.getStreamBytesRaw((PRStream)
stream);
Image imageObject = Image.getInstance(image);
System.out.println("Resolution" + imageObject.getDpiX());
System.out.println("Height" + imageObject.getHeight());
System.out.println("Width" + imageObject.getWidth());

}
}
}
}catch(Exception e){
e.printStackTrace();
}

}
--
View this message in context: http://old.nabble.com/Extract-PDF-embedded-images-using-iText-tp26562385p26562385.html
Sent from the iText - General mailing list archive at Nabble.com.


------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now. http://p.sf.net/sfu/bobj-july
_______________________________________________
iText-questions mailing list
iText-***@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/itext-questions

Buy the iText book: http://www.1t3xt.com/docs/book.php
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/
java.geek
2009-11-30 07:04:53 UTC
Permalink
The way I am extracting images input stream is wrong.
byte[] im = PdfReader.getStreamBytesRaw((PRStream)(stream));
InputStream inputStream = new ByteArrayInputStream(im);
BufferedImage bufferedImage= ImageIO.read(inputStream);

even I used the above code to create the image instance of image input
stream,
Its working fine with the jpeg images are embedded in pdf document not with
other images.
java.io.IOException: The byte array is not a recognized imageformat.


Getting error message
Post by Leonard Rosenthol
PDF images are NOT in a standard format - they are "arrays of color
values" in a specific colorspace with a certain number of bits per
component and potentially processed with one or more "filters". Details
are described in ISO 32000-1.
As such, you will need to extract the image stream into some "image
processing library" that knows what to do with the various structures and
then can also, possibly, save them out to various image formats. JAI is
probably a good place to look.
-----Original Message-----
Sent: Sunday, November 29, 2009 9:12 AM
Subject: [iText-questions] Extract PDF embedded images using iText
Hi All, I am trying to extract images from pdf document using iText library.
I am able to create the instance of only JPEG format(*.jpg, *.jpeg, *.jpe).
**** Image imageObject = Image.getInstance(image); ****
Not other format images are embedded in PDF document.
public void extractImagesInfo(){
try{
PdfReader chartReader = new
PdfReader("MyPdf.pdf");
for (int i = 0; i < chartReader.getXrefSize(); i++) {
PdfObject pdfobj = chartReader.getPdfObject(i);
if (pdfobj != null && pdfobj.isStream()) {
PdfStream stream = (PdfStream) pdfobj;
PdfObject pdfsubtype = stream.get(PdfName.SUBTYPE);
//System.out.println("Stream subType: " + pdfsubtype);
if (pdfsubtype != null &&
pdfsubtype.toString().equals(PdfName.IMAGE.toString())) {
byte[] image = PdfReader.getStreamBytesRaw((PRStream)
stream);
Image imageObject = Image.getInstance(image);
System.out.println("Resolution" + imageObject.getDpiX());
System.out.println("Height" + imageObject.getHeight());
System.out.println("Width" + imageObject.getWidth());
}
}
}
}catch(Exception e){
e.printStackTrace();
}
}
--
http://old.nabble.com/Extract-PDF-embedded-images-using-iText-tp26562385p26562385.html
Sent from the iText - General mailing list archive at Nabble.com.
------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now. http://p.sf.net/sfu/bobj-july
_______________________________________________
iText-questions mailing list
https://lists.sourceforge.net/lists/listinfo/itext-questions
Buy the iText book: http://www.1t3xt.com/docs/book.php
http://www.1t3xt.info/examples/
http://1t3xt.info/tutorials/keywords/
------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now. http://p.sf.net/sfu/bobj-july
_______________________________________________
iText-questions mailing list
https://lists.sourceforge.net/lists/listinfo/itext-questions
Buy the iText book: http://www.1t3xt.com/docs/book.php
http://www.1t3xt.info/examples/
http://1t3xt.info/tutorials/keywords/
--
View this message in context: http://old.nabble.com/Extract-PDF-embedded-images-using-iText-tp26562385p26570329.html
Sent from the iText - General mailing list archive at Nabble.com.
i***@1t3xt.info
2009-11-30 03:59:46 UTC
Permalink
Post by java.geek
The way I am extracting images input stream is wrong.
That's correct.
Post by java.geek
byte[] im = PdfReader.getStreamBytesRaw((PRStream)(stream));
InputStream inputStream = new ByteArrayInputStream(im);
With the above two lines, you get the bits and bytes
from the image, but you're completely ignoring the
stream dictionary. Also: some types of images need more
than one stream (e.g. JBIG).
Post by java.geek
BufferedImage bufferedImage= ImageIO.read(inputStream);
The above line will only work if the stream bytes are
self-contained and do not involve any other data to know
what the image looks like.
Post by java.geek
java.io.IOException: The byte array is not a recognized imageformat.
That's normal: the bits and bytes can't be interpreted
because you're ignoring plenty of other information about
the image that is present in the PDF.

And that's as far as free support on this list goes.
java.geek
2009-11-30 10:34:56 UTC
Permalink
Could you please explain me more ?
It will be good if you will provide some code snippet here of your
suggestions below.

Thanks in advance :)
Post by i***@1t3xt.info
Post by java.geek
The way I am extracting images input stream is wrong.
That's correct.
Post by java.geek
byte[] im = PdfReader.getStreamBytesRaw((PRStream)(stream));
InputStream inputStream = new ByteArrayInputStream(im);
With the above two lines, you get the bits and bytes
from the image, but you're completely ignoring the
stream dictionary. Also: some types of images need more
than one stream (e.g. JBIG).
Post by java.geek
BufferedImage bufferedImage= ImageIO.read(inputStream);
The above line will only work if the stream bytes are
self-contained and do not involve any other data to know
what the image looks like.
Post by java.geek
java.io.IOException: The byte array is not a recognized imageformat.
That's normal: the bits and bytes can't be interpreted
because you're ignoring plenty of other information about
the image that is present in the PDF.
And that's as far as free support on this list goes.
------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now. http://p.sf.net/sfu/bobj-july
_______________________________________________
iText-questions mailing list
https://lists.sourceforge.net/lists/listinfo/itext-questions
Buy the iText book: http://www.1t3xt.com/docs/book.php
http://www.1t3xt.info/examples/
http://1t3xt.info/tutorials/keywords/
--
View this message in context: http://old.nabble.com/Extract-PDF-embedded-images-using-iText-tp26562385p26572463.html
Sent from the iText - General mailing list archive at Nabble.com.
Leonard Rosenthol
2009-11-30 12:40:21 UTC
Permalink
I gave you a VERY complete answer earlier on the list, but you ignored it :(.

Perhaps if you re-read my answer and then asked some questions about it, that might help...

-----Original Message-----
From: java.geek [mailto:***@rediffmail.com]
Sent: Monday, November 30, 2009 5:35 AM
To: itext-***@lists.sourceforge.net
Subject: Re: [iText-questions] Extract PDF embedded images using iText


Could you please explain me more ?
It will be good if you will provide some code snippet here of your
suggestions below.

Thanks in advance :)
Post by i***@1t3xt.info
Post by java.geek
The way I am extracting images input stream is wrong.
That's correct.
Post by java.geek
byte[] im = PdfReader.getStreamBytesRaw((PRStream)(stream));
InputStream inputStream = new ByteArrayInputStream(im);
With the above two lines, you get the bits and bytes
from the image, but you're completely ignoring the
stream dictionary. Also: some types of images need more
than one stream (e.g. JBIG).
Post by java.geek
BufferedImage bufferedImage= ImageIO.read(inputStream);
The above line will only work if the stream bytes are
self-contained and do not involve any other data to know
what the image looks like.
Post by java.geek
java.io.IOException: The byte array is not a recognized imageformat.
That's normal: the bits and bytes can't be interpreted
because you're ignoring plenty of other information about
the image that is present in the PDF.
And that's as far as free support on this list goes.
------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now. http://p.sf.net/sfu/bobj-july
_______________________________________________
iText-questions mailing list
https://lists.sourceforge.net/lists/listinfo/itext-questions
Buy the iText book: http://www.1t3xt.com/docs/book.php
http://www.1t3xt.info/examples/
http://1t3xt.info/tutorials/keywords/
--
View this message in context: http://old.nabble.com/Extract-PDF-embedded-images-using-iText-tp26562385p26572463.html
Sent from the iText - General mailing list archive at Nabble.com.


------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now. http://p.sf.net/sfu/bobj-july
_______________________________________________
iText-questions mailing list
iText-***@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/itext-questions

Buy the iText book: http://www.1t3xt.com/docs/book.php
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/
ChristinaD
2009-12-03 09:49:07 UTC
Permalink
Hi Leo,

below is my pdfstream{/Filter=/DCTDecode, /Type=/XObject, /Length=52803,
/BitsPerComponent=8, /Height=375, /ColorSpace=/DeviceRGB, /Subtype=/Image,
/Width=500}

byte[] imagedata= PdfReader.getStreamBytesRaw((PRStream) stream);
int width = Integer.parseInt((stream.get(PdfName.WIDTH)).toString());
int height = Integer.parseInt((stream.get(PdfName.HEIGHT)).toString());
int bpc =
Integer.parseInt((stream.get(PdfName.BITSPERCOMPONENT)).toString());
int components = 3;
Image img = Image.getInstance(width, height, components, bpc, imagedata);

Facing proble:
* Getting 0 dpi : img.getDpiX()
* Tried to write this image in document then not getting the proper image
like original.

img.scalePercent(20.0f);
document.add(img);

* Below code is working fine with the jpeg images embedded in pdf document.
Image img = Image.getInstance(imagedata);
Post by Leonard Rosenthol
PDF images are NOT in a standard format - they are "arrays of color
values" in a specific colorspace with a certain number of bits per
component and potentially processed with one or more "filters". Details
are described in ISO 32000-1.
As such, you will need to extract the image stream into some "image
processing library" that knows what to do with the various structures and
then can also, possibly, save them out to various image formats. JAI is
probably a good place to look.
-----Original Message-----
Sent: Sunday, November 29, 2009 9:12 AM
Subject: [iText-questions] Extract PDF embedded images using iText
Hi All, I am trying to extract images from pdf document using iText library.
I am able to create the instance of only JPEG format(*.jpg, *.jpeg, *.jpe).
**** Image imageObject = Image.getInstance(image); ****
Not other format images are embedded in PDF document.
public void extractImagesInfo(){
try{
PdfReader chartReader = new
PdfReader("MyPdf.pdf");
for (int i = 0; i < chartReader.getXrefSize(); i++) {
PdfObject pdfobj = chartReader.getPdfObject(i);
if (pdfobj != null && pdfobj.isStream()) {
PdfStream stream = (PdfStream) pdfobj;
PdfObject pdfsubtype = stream.get(PdfName.SUBTYPE);
//System.out.println("Stream subType: " + pdfsubtype);
if (pdfsubtype != null &&
pdfsubtype.toString().equals(PdfName.IMAGE.toString())) {
byte[] image = PdfReader.getStreamBytesRaw((PRStream)
stream);
Image imageObject = Image.getInstance(image);
System.out.println("Resolution" + imageObject.getDpiX());
System.out.println("Height" + imageObject.getHeight());
System.out.println("Width" + imageObject.getWidth());
}
}
}
}catch(Exception e){
e.printStackTrace();
}
}
--
http://old.nabble.com/Extract-PDF-embedded-images-using-iText-tp26562385p26562385.html
Sent from the iText - General mailing list archive at Nabble.com.
------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now. http://p.sf.net/sfu/bobj-july
_______________________________________________
iText-questions mailing list
https://lists.sourceforge.net/lists/listinfo/itext-questions
Buy the iText book: http://www.1t3xt.com/docs/book.php
http://www.1t3xt.info/examples/
http://1t3xt.info/tutorials/keywords/
------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now. http://p.sf.net/sfu/bobj-july
_______________________________________________
iText-questions mailing list
https://lists.sourceforge.net/lists/listinfo/itext-questions
Buy the iText book: http://www.1t3xt.com/docs/book.php
http://www.1t3xt.info/examples/
http://1t3xt.info/tutorials/keywords/
--
View this message in context: http://old.nabble.com/Extract-PDF-embedded-images-using-iText-tp26562385p26623379.html
Sent from the iText - General mailing list archive at Nabble.com.
Leonard Rosenthol
2009-12-03 10:50:18 UTC
Permalink
You're making progress!

What you are still missing the processing of /Filter. When /Filter == /DCTDecode then you can leave the data "unfiltered" and treat it as a JPEG, due to a special case in PDF. However, for all other values of /Filter, you need to DECODE the data and then treat that as the image data. You may need to use something such as JAI to then convert that information into a usable image format.

Leonard

-----Original Message-----
From: ChristinaD [mailto:***@rediffmail.com]
Sent: Thursday, December 03, 2009 4:49 AM
To: itext-***@lists.sourceforge.net
Subject: Re: [iText-questions] Extract PDF embedded images using iText


Hi Leo,

below is my pdfstream{/Filter=/DCTDecode, /Type=/XObject, /Length=52803,
/BitsPerComponent=8, /Height=375, /ColorSpace=/DeviceRGB, /Subtype=/Image,
/Width=500}

byte[] imagedata= PdfReader.getStreamBytesRaw((PRStream) stream);
int width = Integer.parseInt((stream.get(PdfName.WIDTH)).toString());
int height = Integer.parseInt((stream.get(PdfName.HEIGHT)).toString());
int bpc =
Integer.parseInt((stream.get(PdfName.BITSPERCOMPONENT)).toString());
int components = 3;
Image img = Image.getInstance(width, height, components, bpc, imagedata);

Facing proble:
* Getting 0 dpi : img.getDpiX()
* Tried to write this image in document then not getting the proper image
like original.

img.scalePercent(20.0f);
document.add(img);

* Below code is working fine with the jpeg images embedded in pdf document.
Image img = Image.getInstance(imagedata);
Post by Leonard Rosenthol
PDF images are NOT in a standard format - they are "arrays of color
values" in a specific colorspace with a certain number of bits per
component and potentially processed with one or more "filters". Details
are described in ISO 32000-1.
As such, you will need to extract the image stream into some "image
processing library" that knows what to do with the various structures and
then can also, possibly, save them out to various image formats. JAI is
probably a good place to look.
-----Original Message-----
Sent: Sunday, November 29, 2009 9:12 AM
Subject: [iText-questions] Extract PDF embedded images using iText
Hi All, I am trying to extract images from pdf document using iText library.
I am able to create the instance of only JPEG format(*.jpg, *.jpeg, *.jpe).
**** Image imageObject = Image.getInstance(image); ****
Not other format images are embedded in PDF document.
public void extractImagesInfo(){
try{
PdfReader chartReader = new
PdfReader("MyPdf.pdf");
for (int i = 0; i < chartReader.getXrefSize(); i++) {
PdfObject pdfobj = chartReader.getPdfObject(i);
if (pdfobj != null && pdfobj.isStream()) {
PdfStream stream = (PdfStream) pdfobj;
PdfObject pdfsubtype = stream.get(PdfName.SUBTYPE);
//System.out.println("Stream subType: " + pdfsubtype);
if (pdfsubtype != null &&
pdfsubtype.toString().equals(PdfName.IMAGE.toString())) {
byte[] image = PdfReader.getStreamBytesRaw((PRStream)
stream);
Image imageObject = Image.getInstance(image);
System.out.println("Resolution" + imageObject.getDpiX());
System.out.println("Height" + imageObject.getHeight());
System.out.println("Width" + imageObject.getWidth());
}
}
}
}catch(Exception e){
e.printStackTrace();
}
}
--
http://old.nabble.com/Extract-PDF-embedded-images-using-iText-tp26562385p26562385.html
Sent from the iText - General mailing list archive at Nabble.com.
------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now. http://p.sf.net/sfu/bobj-july
_______________________________________________
iText-questions mailing list
https://lists.sourceforge.net/lists/listinfo/itext-questions
Buy the iText book: http://www.1t3xt.com/docs/book.php
http://www.1t3xt.info/examples/
http://1t3xt.info/tutorials/keywords/
------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now. http://p.sf.net/sfu/bobj-july
_______________________________________________
iText-questions mailing list
https://lists.sourceforge.net/lists/listinfo/itext-questions
Buy the iText book: http://www.1t3xt.com/docs/book.php
http://www.1t3xt.info/examples/
http://1t3xt.info/tutorials/keywords/
--
View this message in context: http://old.nabble.com/Extract-PDF-embedded-images-using-iText-tp26562385p26623379.html
Sent from the iText - General mailing list archive at Nabble.com.


------------------------------------------------------------------------------
Join us December 9, 2009 for the Red Hat Virtual Experience,
a free event focused on virtualization and cloud computing.
Attend in-depth sessions from your desk. Your couch. Anywhere.
http://p.sf.net/sfu/redhat-sfdev2dev
_______________________________________________
iText-questions mailing list
iText-***@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/itext-questions

Buy the iText book: http://www.1t3xt.com/docs/book.php
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/
Narek_88
2016-07-01 11:07:13 UTC
Permalink
Can you please advise how I can decode monochrome TIFF image data from PDF to
get image data?

Thanks,
Narek



--
View this message in context: http://itext.2136553.n4.nabble.com/Extract-PDF-embedded-images-using-iText-tp2172216p4661057.html
Sent from the iText mailing list archive at Nabble.com.

------------------------------------------------------------------------------
Attend Shape: An AT&T Tech Expo July 15-16. Meet us at AT&T Park in San
Francisco, CA to explore cutting-edge tech and listen to tech luminaries
present their vision of the future. This family event has something for
everyone, including kids. Get more information and register today.
http://sdm.link/attshape
_______________________________________________
iText-questions mailing list
iText-***@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/itext-questions

iText(R) is a registered trademark of 1T3XT BVBA.
Many questions posted to this list can (and will) be answered with a reference to the iText book: http://www.itextpdf.com/book/
Please check the keywords list before you ask for examples: http://itextpdf.com/themes/keywords.php
blowagie
2016-07-01 11:38:09 UTC
Permalink
1. We're 2016 and you're replying to a thread dating from 2009. Seriously? DO
NOT HIJACK AN OLD QUESTION.
2. Nabble is not an official forum for iText. Please read
http://itextpdf.com/support and post your question on StackOverflow.



--
View this message in context: http://itext.2136553.n4.nabble.com/Extract-PDF-embedded-images-using-iText-tp2172216p4661058.html
Sent from the iText mailing list archive at Nabble.com.

------------------------------------------------------------------------------
Attend Shape: An AT&T Tech Expo July 15-16. Meet us at AT&T Park in San
Francisco, CA to explore cutting-edge tech and listen to tech luminaries
present their vision of the future. This family event has something for
everyone, including kids. Get more information and register today.
http://sdm.link/attshape
_______________________________________________
iText-questions mailing list
iText-***@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/itext-questions

iText(R) is a registered trademark of 1T3XT BVBA.
Many questions posted to this list can (and will) be answered with a reference to the iText book: http://www.itextpdf.com/book/
Please check the keywords list before you ask for examples: http://itextpdf.com/themes/keywords.php
Loading...