Some Observations and Suggestions

  • Rudy Gireyev

    Rudy Gireyev - 2011-01-10

    Hi Stefano.

    Here are a few things I ran into, and thought I'd share with you. You can decide whether they are worth addressing or not. :)
    1. ISample object used in the examples cannot be found anywhere.
    2. Would you consider renaming Document, File, Page etc as PDFDocument, PDFFile, PDFPage to differentiate them from the ones that are in the JavaSDK. Especially since you are changing the namespace prefix. :)
    3. There is a tiny error in your sample code for the first HelloWorld. The StandardType1Font.FamilyNameEnum should be StandardType1Font.FamilyEnum
    4. There appear to be multiple XObject objects in your jar. One in objects and one in XObjects. I actually noticed this with a few other objects.


  • Stefano Chizzolini

    Hi Rudy,

    thank you for your considerations - below are my clarifications.

    I noticed that some of your observations derive from the use of obsolete code samples, probably downloaded from the project's website : I'm really sorry, but those samples are currently out-of-date (I was too much busy to republish them - I'll publish their updates on next 0.1.0 release, in some weeks); anyway, you do NOT need them, as ALL the up-to-date code samples are available inside the PDF Clown's distribution you can download here on SourceForge.

    Another note: PDF Clown levels cited below (object, document, content levels etc.) are described in the PDF Clown's User Guide (see inside the downloadable distribution) - you can get a quick grasp looking at the online overview .

    1. ISample is an obsolete interface used by PDF Clown samples till version 0.0.7 - since version 0.0.8 code samples extend Sample class (no more ISample!);
    2. PDF Clown's naming policy establishes that only primitive PDF objects (see it.stefanochizzolini.clown.objects ) are prefixed by "Pdf"; extending this naming convention to only some higher-level objects such as File, Document, etc. would be ugly and semantically confusing (why other higher-level objects should not be prefixed with 'Pdf"?); extending this naming convention to all the higher-level objects would be a terribly old-fashion c-style annoying clutter (after all, haven't packages/namespaces been introduced just to cope with name clashing?).
    3. Like case 1 (see above), FamilyNameEnum is an obsolete name for current StandardType1Font.FamilyEnum;
    4. XObject is referenced with the same name in different application contexts (as both an external object  and a content-stream object referencing a corresponding external object ) because this is the way the PDF specification names them: one of the PDF Clown's goals is to keep a rigorous adherence to the official spec (see § 4.7 for meaning 1 and Figure 4.1 (§ 4.1) for meaning 2 in PDF Reference 1.7). Just keep this in mind: an XObject at document level  is a resource outside content-streams; an XObject at content level  is a resource referenced (but NOT a reference!) inside a content-stream.

    Next 0.1.0 (due late January) will introduce lots of improvements - keep on posting your suggestions, I really appreciate them as it's an opportunity to explain my reasons and correct my mistakes! (Any user is invited to take part in the discussion)

    Thank you!
    Stefano *<:o)

  • pszatori

    pszatori - 2011-02-24

    Hi Stefano!

    I was trying out your pdf library which looks great.
    One problem I found in the C# implementation is that it.stefanochizzolini.clown.documents.Page.Size is of type System.Drawing.Size which only holds integer values instead of System.Drawing.SizeF.
    And because of this the .NET version of PageFormatSample.cs doesn't produce the same result as the Java one.

    And a feature I would like to see is the ability to get/set the size of the CropBox, TrimBox and BleedBox of pages.

    Thank You

  • Stefano Chizzolini

    Hi Peter,

    0.1.0 version of Page class features SizeF type for Size property.

    CropBox, TrimBox and BleedBox are among the many things to add in the next releases…


    PS: 0.1.0 version is complete - I'm currently in the final update of its documentation before releasing it.


Log in to post a comment.