pdfbox-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Vorpahl,Lucinda" <vorpahl.luci...@heb.com>
Subject RE: Overlay PDF Docs
Date Thu, 12 Feb 2015 13:51:47 GMT
What I'm doing is cropping a list of PDDocuments down to small rectangles.

Then I want to combine all the new cropped PDDocuments into one new PDDocument but I want
them in specific locations.

Here’s an example of what I’m trying to do.



[cid:image001.png@01D04695.96917190]





I am currently doing something similar but I'm only using the original PDDocument.



private void drawSixUp(PDDocument document, PDPage page) throws IOException {

        final float rectangle_width = 2.25f * PDFx;

        final float rectangle_x_separation = 9.0f / 16.0f * PDFx;



        LayerUtility layerUtility = new LayerUtility(document);

        PDXObjectForm mountable = layerUtility.importPageAsForm(document, 0);

        mountable.getPDStream().addCompression();

        PDPageContentStream contentStream = new PDPageContentStream(document, page, true,
true);

        contentStream.appendRawCommands("q\n".getBytes("ISO-8859-1"));



  //draw additional rectangles

        AffineTransform transform = new AffineTransform();

        transform.translate(rectangle_width + rectangle_x_separation, 0);

        contentStream.drawXObject(mountable, transform);



        transform = new AffineTransform();

        transform.translate(rectangle_width * 2 + rectangle_x_separation * 2, 0);

        contentStream.drawXObject(mountable, transform);



        contentStream.appendRawCommands("Q\n".getBytes("ISO-8859-1"));

        contentStream.close();



    }



I’ve tried doing the same thing but for some reason it’s not working.

Here is what I’m trying:
public void drawMealDealStore(List<PDDocument> pdfImagesList) throws IOException {

    PDDocument document = new PDDocument();
    PDPage page = new PDPage();
    document.addPage(page);
    PDPageContentStream contentStream;
    AffineTransform transform;

    float couponGap = 0;
    int i = 1;
    for (PDDocument pdDocument : pdfImagesList) {
        LayerUtility layerUtility = new LayerUtility(document);
        PDXObjectForm mountable = layerUtility.importPageAsForm(pdDocument, 0);
        mountable.getPDStream().addCompression();
        contentStream = new PDPageContentStream(document, page, true, true);
        contentStream.appendRawCommands("q\n".getBytes("ISO-8859-1"));
        boolean topRow;
        if (i != 1 && i % SIX == 1) {
            page = new PDPage();
            document.addPage(page);
            contentStream = newPDPageContentStream(document, page);
            couponGap = 0;
            topRow = true;
        } else if (i == 1) {
            couponGap = 0;
            topRow = true;
        } else if (i % SIX == TWO || i % SIX == THREE) {
            couponGap += COUPONGAP;
            topRow = true;
        } else if (i % SIX == FOUR) {
            couponGap = 0;
            topRow = false;
        } else {
            couponGap += COUPONGAP;
            topRow = false;
        }
        transform = new AffineTransform();

        if (topRow) {
            transform.translate((X_INDENT*2) + couponGap, BOTTM_OF_TOP_REC);
        } else {
            transform.translate((X_INDENT * 2) + couponGap, BOTTM_OF_TOP_REC - (REC_Y_GAP
+ REC_HEIGHT));
        }
        contentStream.drawXObject(mountable, transform);

        // restore former graphics state
        contentStream.appendRawCommands("Q\n".getBytes("ISO-8859-1"));
        contentStream.close();
        pdDocument.close();
        i++;
    }

    try {
        document.save("mealDealStore.pdf");
    } catch (COSVisitorException e) {
        e.printStackTrace();
    }
    document.close();
}



This should work but all I’m getting is an empty page and the following error:

[cid:image002.png@01D04698.C052A780]



Any ideas of what I’m doing wrong?



Thanks,

Lucy

-----Original Message-----
From: Gilad Denneboom [mailto:gilad.denneboom@gmail.com]
Sent: Thursday, February 12, 2015 5:28 AM
To: users@pdfbox.apache.org
Subject: Re: Overlay PDF Docs



Are you basically trying to combine multiple PDF files into a single one?

If so, use the PDFMergerUtility

<https://urldefense.proofpoint.com/v2/url?u=https-3A__pdfbox.apache.org_apidocs_org_apache_pdfbox_util_PDFMergerUtility.html&d=AwIBaQ&c=RI9dKKMRNVHr9NFa7OQiQw&r=46g1Q9l2ygNJoVl15Feuc2oj-eK5kwz0sL2OtXB9UQA&m=jftZpb6dXxgFhrFo9NoLhae2NQ6p3wKsyO5XQ6E2aS4&s=bmtD8HX65vDYwnzDBlDS_QCzRD6dNpgNnvrvgS3dvNU&e=
<https://urldefense.proofpoint.com/v2/url?u=https-3A__pdfbox.apache.org_apidocs_org_apache_pdfbox_util_PDFMergerUtility.html&d=AwIBaQ&c=RI9dKKMRNVHr9NFa7OQiQw&r=46g1Q9l2ygNJoVl15Feuc2oj-eK5kwz0sL2OtXB9UQA&m=jftZpb6dXxgFhrFo9NoLhae2NQ6p3wKsyO5XQ6E2aS4&s=bmtD8HX65vDYwnzDBlDS_QCzRD6dNpgNnvrvgS3dvNU&e=%20>
> class.



On Thu, Feb 12, 2015 at 12:11 AM, Vorpahl,Lucinda <vorpahl.lucinda@heb.com<mailto:vorpahl.lucinda@heb.com>>

wrote:



> I am hoping someone can help me.

>

> I have a list of PDDocuments that I want to combine and draw onto 1

> PDDocument.

> I was able to do this by converting the individual documents to images

> then drawing the image on the new document but I lost image quality.

> I was looking at the Overlay option but I'm getting the following error:

>         "java.lang.UnsupportedOperationException: Layout pages with

> COSArray currently not supported."

>

> I also tried this but nothing was happening.

>

>         PDPageContentStream contentStream;

>          PDDocument document = new PDDocument();

>          PDPage page = new PDPage();

>          document.addPage(page);

>          AffineTransform transform;

> for (PDDocument pdDocument : pdfDocList) {

>             LayerUtility layerUtility = new LayerUtility(document);

>             PDXObjectForm mountable =

> layerUtility.importPageAsForm(pdDocument, 0);

>             mountable.getPDStream().addCompression();

>             contentStream = new PDPageContentStream(document, page);

>

> contentStream.appendRawCommands("q\n".getBytes("ISO-8859-1"));

>

>             transform = new AffineTransform();

>             transform.translate(18.0f, 18.0f);

>             contentStream.drawXObject(mountable, transform);

>

>             contentStream.appendRawCommands("Q\n".getBytes("ISO-8859-1"));

>             contentStream.close();

>         pdDocument.close();

> }

>

> Any help would be appreciated.

>

>

> Thanks,

> Lucy

>
Mime
  • Unnamed multipart/related (inline, None, 0 bytes)
View raw message