[reportlab-users] How can I edit PDF metadatas
Dani Reguera
dreguera at tagzania.com
Tue Dec 1 09:06:22 EST 2009
Thanks a lot Patrick!
I have done with your example and works great!
2009/11/30 Patrick Maupin <pmaupin at gmail.com>
> I've added some new functionality, and an example that is more in line
> with the original request (to alter the title metadata in a
> preexisting PDF). The required code is basically:
>
> trailer = PdfReader(inpfn)
> trailer.Info.Title = 'My New Title Goes Here'
> writer = PdfWriter()
> writer.trailer = trailer
> writer.write(outfn)
>
> The full example is at:
>
> http://code.google.com/p/pdfrw/source/browse/trunk/examples/alter.py
>
> Regards,
> Pat
>
> On Mon, Nov 30, 2009 at 11:33 AM, Patrick Maupin <pmaupin at gmail.com>
> wrote:
> > I second the thought that pdftk is easy to use (I use it all the
> > time), but if your source files are not encrypted and don't have PDF
> > 1.5 compressed object streams, my new pdfrw library might be easier to
> > use than pypdf. For example, the way you can add metadata to the PDF
> > trailer dictionary is:
> >
> > writer.trailer.Info = IndirectPdfDict(
> > Title = 'your title goes here',
> > Author = 'your name goes here',
> > Subject = 'what is it all about?',
> > Creator = 'some script goes here',
> > )
> >
> > I have posted a complete working example:
> >
> > http://code.google.com/p/pdfrw/source/browse/trunk/examples/metadata.py
> >
> > Best regards,
> > Pat
> >
> >
> > On Mon, Nov 30, 2009 at 5:49 AM, Christian Jacobsen
> > <cljacobsen at gmail.com> wrote:
> >> You can also use pypdf. http://pybrary.net/pyPdf/
> >>
> >> This won't let you edit the metadata per se, but will let you read one
> >> or more pdf file(s) and spit them back out, possibly with new
> >> metadata. It is somewhat low level though. I find it useful for
> >> automatically putting PDFs together for various things. I have
> >> included an example below. I often also generate pages with replortlab
> >> (ie separators between the PDFs that I am concatenating) which I
> >> insert into the stream. I use the stringio module to capture the page
> >> from reportlab and then feed it to pypdf's PdfFileReader. I have also
> >> been known to stamp a running page number onto the pages by merging a
> >> reportlab generated page with just a pagenumber with the input page.
> >>
> >> pdftk does all of this of course and is probably easier to use.
> >>
> >> Christian
> >>
> >>
> >> import pyPdf
> >> from pyPdf import PdfFileWriter, PdfFileReader
> >>
> >> OUTPUT = 'output.pdf'
> >> INPUTS = ['test1.pdf', 'test2.pdf', 'test3.pdf']
> >>
> >> # There is no interface through pyPDF with which to set this other then
> getting
> >> # your hands dirty like so:
> >> infoDict = output._info.getObject()
> >> infoDict.update({
> >> NameObject('/Title'): createStringObject(u'title'),
> >> NameObject('/Author'): createStringObject(u'author'),
> >> NameObject('/Subject'): createStringObject(u'subject'),
> >> NameObject('/Creator'): createStringObject(u'a script')
> >> })
> >>
> >> inputs = [PdfFileReader(i) for i in INPUTS]
> >> for input in inputs:
> >> for page in range(input.getNumPages()):
> >> output.addPage(input.getPage(page))
> >>
> >> outputStream = file(OUTPUT, 'wb')
> >> output.write(outputStream)
> >> outputStream.close()
> >>
> >>
> >> 2009/11/26 Andy Robinson <andy at reportlab.com>:
> >>> 2009/11/26 Dani Reguera <drbakhache at gmail.com>:
> >>>> Can I open the file with reportlab and then set its title?
> >>>
> >>> reportlab creates files, but doesn't edit them.
> >>>
> >>> pdftk is writing the final file. I just googled it, and it has options
> >>> to set the metadata on the command line. See 'update_info' on this
> >>> page...
> >>> http://www.accesspdf.com/pdftk/
> >>>
> >>> --
> >>> Andy Robinson
> >>> CEO/Chief Architect
> >>> ReportLab Europe Ltd.
> >>> _______________________________________________
> >>> reportlab-users mailing list
> >>> reportlab-users at lists2.reportlab.com
> >>> http://two.pairlist.net/mailman/listinfo/reportlab-users
> >>>
> >> _______________________________________________
> >> reportlab-users mailing list
> >> reportlab-users at lists2.reportlab.com
> >> http://two.pairlist.net/mailman/listinfo/reportlab-users
> >>
> >
> _______________________________________________
> reportlab-users mailing list
> reportlab-users at lists2.reportlab.com
> http://two.pairlist.net/mailman/listinfo/reportlab-users
>
--
Dani Reguera
dreguera at tagzania.com
Tagzania Services [www.tagzania-services.com]
Azitaingo Industrialdea 3 K
E-20600 Eibar
Tel: (+34) 943 82 17 80
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://two.pairlist.net/pipermail/reportlab-users/attachments/20091201/ae1883e1/attachment.htm>
More information about the reportlab-users
mailing list