[reportlab-users] How can I edit PDF metadatas
Patrick Maupin
pmaupin at gmail.com
Tue Dec 1 15:02:18 EST 2009
Glad to hear it! It's fairly new software, so the more users, the
quicker they will help me find all the bugs :-)
Best regards,
Pat
On Tue, Dec 1, 2009 at 8:06 AM, Dani Reguera <dreguera at tagzania.com> wrote:
> 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
>
> _______________________________________________
> reportlab-users mailing list
> reportlab-users at lists2.reportlab.com
> http://two.pairlist.net/mailman/listinfo/reportlab-users
>
>
More information about the reportlab-users
mailing list