Archive for the 'iText in Action' Category

using nup_pdf to convert PDF to booklet

from planetpdf forum, some body asked a question about ” Print PDf like book”

Suppose i have 12 pages in my pdf, I would like to print pdf on front and back sides (with 2 pages on front and 2 pages on back):
Here is the result I would like to have :
Front page 1 : 12p-1p
Back page 1 : 2p-11p
Front page 2 : 10p-3p
Back page 2 : 4p-9p
Front page 3 : 8p-5p
Back page 3 : 6p-7p

So I think maybe nup_pdf can do this job, after tested, we can do it in this way
nup_pdf in.pdf out.pdf 2 -k 1

reference:
how to make N-up PDF with free software
http://forum.planetpdf.com/webboard/wbpx.dll/read?163955,7

Share and Enjoy:
  • Digg
  • del.icio.us
  • Netvouz
  • DZone
  • ThisNext
  • MisterWong
  • Wists
  • BlinkList
  • blogmarks
  • blogtercimlap
  • connotea
  • DotNetKicks
  • Fark
  • Fleck
  • Gwar
  • Haohao
  • IndianPad
  • Internetmedia
  • LinkaGoGo
  • MyShare
  • Netscape
  • NewsVine
  • Rec6
  • Reddit
  • Scoopeo
  • Slashdot
  • StumbleUpon
  • Technorati
  • Webride

Why do I get the exception ‘PdfReader not opened with owner password’

When I tried to decrypt a owner password protected PDF(version 1.6) with the last version of itext yesterday, I got the exception, “PdfReader not opened with owner password”, then I tried to use my native version pdfdecrypt.exe(base on iText 1.46) and pdftk , it said the PDF version does not supports. so I had to google the result, then I got the answer,

Paulo Soares said,
From iText version 2.0.3 and iTextSharp 4.0.4 the password restrictions are enforced by the library instead of passing that responsability to the developer. Using PdfStamper or importing pages in PdfStamper, PdfCopy and PdfWriter will throw an exception if the PDF was not opened with the owner password.

then I tried iText 2.0.2, it works.

btw, I also find another solution from PDFSharp, and I notice a very interesting comment,

PDFsharp doesn’t try to protect the document because this make little sence for an open source library.

so why PdfReader try to protect the PDF?

Share and Enjoy:
  • Digg
  • del.icio.us
  • Netvouz
  • DZone
  • ThisNext
  • MisterWong
  • Wists
  • BlinkList
  • blogmarks
  • blogtercimlap
  • connotea
  • DotNetKicks
  • Fark
  • Fleck
  • Gwar
  • Haohao
  • IndianPad
  • Internetmedia
  • LinkaGoGo
  • MyShare
  • Netscape
  • NewsVine
  • Rec6
  • Reddit
  • Scoopeo
  • Slashdot
  • StumbleUpon
  • Technorati
  • Webride

How to replace images in a PDF?

Here’s the code to replace images in PDFs, in Java and C#. It will replace the first image in the first page.

PdfReader pdf = new PdfReader("in.pdf");
PdfStamper stp = new PdfStamper(pdf, new FileOutputStream("c:\\out.pdf"));
PdfWriter writer = stp.getWriter();
Image img = Image.getInstance("image.png");
PdfDictionary pg = pdf.getPageN(1);
PdfDictionary res =
  (PdfDictionary)PdfReader.getPdfObject(pg.get(PdfName.RESOURCES));
PdfDictionary xobj =
  (PdfDictionary)PdfReader.getPdfObject(res.get(PdfName.XOBJECT));
if (xobj != null) {
  for (Iterator it = xobj.getKeys().iterator(); it.hasNext(); ) {
    PdfObject obj = xobj.get((PdfName)it.next());
    if (obj.isIndirect()) {
      PdfDictionary tg = (PdfDictionary)PdfReader.getPdfObject(obj);
      PdfName type =
        (PdfName)PdfReader.getPdfObject(tg.get(PdfName.SUBTYPE));
      if (PdfName.IMAGE.equals(type)) {
        PdfReader.killIndirect(obj);
        Image maskImage = img.getImageMask();
        if (maskImage != null)
          writer.addDirectImageSimple(maskImage);
        writer.addDirectImageSimple(img, (PRIndirectReference)obj);
        break;
      }
    }
  }
}
stp.close();
PdfReader pdf = new PdfReader("in.pdf");
PdfStamper stp = new PdfStamper(pdf, new FileStream("out.pdf",
FileMode.Create));
PdfWriter writer = stp.Writer;
Image img = Image.GetInstance("image.png");
PdfDictionary pg = pdf.GetPageN(1);
PdfDictionary res =
  (PdfDictionary)PdfReader.GetPdfObject(pg.Get(PdfName.RESOURCES));
PdfDictionary xobj =
  (PdfDictionary)PdfReader.GetPdfObject(res.Get(PdfName.XOBJECT));
if (xobj != null) {
  foreach (PdfName name in xobj.Keys) {
    PdfObject obj = xobj.Get(name);
    if (obj.IsIndirect()) {
      PdfDictionary tg = (PdfDictionary)PdfReader.GetPdfObject(obj);
      PdfName type =
        (PdfName)PdfReader.GetPdfObject(tg.Get(PdfName.SUBTYPE));
      if (PdfName.IMAGE.Equals(type)) {
      PdfReader.KillIndirect(obj);
      Image maskImage = img.ImageMask;
      if (maskImage != null)
        writer.AddDirectImageSimple(maskImage);
        writer.AddDirectImageSimple(img, PRIndirectReference)obj);
        break;
      }
    }
  }
}
stp.Close();

From:http://itext.ugent.be/library/question.php?id=66

Share and Enjoy:
  • Digg
  • del.icio.us
  • Netvouz
  • DZone
  • ThisNext
  • MisterWong
  • Wists
  • BlinkList
  • blogmarks
  • blogtercimlap
  • connotea
  • DotNetKicks
  • Fark
  • Fleck
  • Gwar
  • Haohao
  • IndianPad
  • Internetmedia
  • LinkaGoGo
  • MyShare
  • Netscape
  • NewsVine
  • Rec6
  • Reddit
  • Scoopeo
  • Slashdot
  • StumbleUpon
  • Technorati
  • Webride