Package org.apache.pdfbox.pdfwriter

Examples of org.apache.pdfbox.pdfwriter.ContentStreamWriter


                    ByteArrayOutputStream output = new ByteArrayOutputStream();

                    //BJL 9/25/2004 Must prepend existing stream
                    //because it might have operators to draw things like
                    //rectangles and such
                    ContentStreamWriter writer = new ContentStreamWriter( output );
                    writer.writeTokens( tokens );

                    output.write( " /Tx BMC\n".getBytes("ISO-8859-1") );
                    insertGeneratedAppearance( widget, output, pdFont, tokens, appearanceStream );
                    output.write( " EMC".getBytes("ISO-8859-1") );
                    writeToStream( output.toByteArray(), appearanceStream );
                }
                else
                {
                    if( tokens != null )
                    {
                        if( daTokens != null )
                        {
                            int bmcIndex = tokens.indexOf( PDFOperator.getOperator( "BMC" ));
                            int emcIndex = tokens.indexOf( PDFOperator.getOperator( "EMC" ));
                            if( bmcIndex != -1 && emcIndex != -1 &&
                                emcIndex == bmcIndex+1 )
                            {
                                //if the EMC immediately follows the BMC index then should
                                //insert the daTokens inbetween the two markers.
                                tokens.addAll( emcIndex, daTokens );
                            }
                        }
                        ByteArrayOutputStream output = new ByteArrayOutputStream();
                        ContentStreamWriter writer = new ContentStreamWriter( output );
                        float fontSize = calculateFontSize( pdFont, appearanceStream.getBoundingBox(), tokens, null );
                        boolean foundString = false;
                        for( int i=0; i<tokens.size(); i++ )
                        {
                            if( tokens.get( i ) instanceof COSString )
                            {
                                foundString = true;
                                COSString drawnString =((COSString)tokens.get(i));
                                drawnString.reset();
                                drawnString.append( apValue.getBytes("ISO-8859-1") );
                            }
                        }
                        int setFontIndex = tokens.indexOf( PDFOperator.getOperator( "Tf" ));
                        tokens.set( setFontIndex-1, new COSFloat( fontSize ) );
                        if( foundString )
                        {
                            writer.writeTokens( tokens );
                        }
                        else
                        {
                            int bmcIndex = tokens.indexOf( PDFOperator.getOperator( "BMC" ) );
                            int emcIndex = tokens.indexOf( PDFOperator.getOperator( "EMC" ) );

                            if( bmcIndex != -1 )
                            {
                                writer.writeTokens( tokens, 0, bmcIndex+1 );
                            }
                            else
                            {
                                writer.writeTokens( tokens );
                            }
                            output.write( "\n".getBytes("ISO-8859-1") );
                            insertGeneratedAppearance( widget, output,
                                pdFont, tokens, appearanceStream );
                            if( emcIndex != -1 )
                            {
                                writer.writeTokens( tokens, emcIndex, tokens.size() );
                            }
                        }
                        writeToStream( output.toByteArray(), appearanceStream );
                    }
                    else
View Full Code Here


            int fontIndex = daTokens.indexOf( PDFOperator.getOperator( "Tf" ) );
            if(fontIndex != -1 )
            {
                daTokens.set( fontIndex-1, new COSFloat( fontSize ) );
            }
            ContentStreamWriter daWriter = new ContentStreamWriter(output);
            daWriter.writeTokens( daTokens );
        }
        printWriter.println( getTextPosition( boundingBox, pdFont, fontSize, tokens ) );
        int q = getQ();
        if( q == PDTextbox.QUADDING_LEFT )
        {
View Full Code Here

                    ByteArrayOutputStream output = new ByteArrayOutputStream();

                    //BJL 9/25/2004 Must prepend existing stream
                    //because it might have operators to draw things like
                    //rectangles and such
                    ContentStreamWriter writer = new ContentStreamWriter( output );
                    writer.writeTokens( tokens );

                    output.write( " /Tx BMC\n".getBytes("ISO-8859-1") );
                    insertGeneratedAppearance( widget, output, pdFont, tokens, appearanceStream );
                    output.write( " EMC".getBytes("ISO-8859-1") );
                    writeToStream( output.toByteArray(), appearanceStream );
                }
                else
                {
                    if( tokens != null )
                    {
                        if( daTokens != null )
                        {
                            int bmcIndex = tokens.indexOf( PDFOperator.getOperator( "BMC" ));
                            int emcIndex = tokens.indexOf( PDFOperator.getOperator( "EMC" ));
                            if( bmcIndex != -1 && emcIndex != -1 &&
                                emcIndex == bmcIndex+1 )
                            {
                                //if the EMC immediately follows the BMC index then should
                                //insert the daTokens inbetween the two markers.
                                tokens.addAll( emcIndex, daTokens );
                            }
                        }
                        ByteArrayOutputStream output = new ByteArrayOutputStream();
                        ContentStreamWriter writer = new ContentStreamWriter( output );
                        float fontSize = calculateFontSize( pdFont, appearanceStream.getBoundingBox(), tokens, null );
                        boolean foundString = false;
                        for( int i=0; i<tokens.size(); i++ )
                        {
                            if( tokens.get( i ) instanceof COSString )
                            {
                                foundString = true;
                                COSString drawnString =((COSString)tokens.get(i));
                                drawnString.reset();
                                drawnString.append( apValue.getBytes("ISO-8859-1") );
                            }
                        }
                        int setFontIndex = tokens.indexOf( PDFOperator.getOperator( "Tf" ));
                        tokens.set( setFontIndex-1, new COSFloat( fontSize ) );
                        if( foundString )
                        {
                            writer.writeTokens( tokens );
                        }
                        else
                        {
                            int bmcIndex = tokens.indexOf( PDFOperator.getOperator( "BMC" ) );
                            int emcIndex = tokens.indexOf( PDFOperator.getOperator( "EMC" ) );

                            if( bmcIndex != -1 )
                            {
                                writer.writeTokens( tokens, 0, bmcIndex+1 );
                            }
                            else
                            {
                                writer.writeTokens( tokens );
                            }
                            output.write( "\n".getBytes("ISO-8859-1") );
                            insertGeneratedAppearance( widget, output,
                                pdFont, tokens, appearanceStream );
                            if( emcIndex != -1 )
                            {
                                writer.writeTokens( tokens, emcIndex, tokens.size() );
                            }
                        }
                        writeToStream( output.toByteArray(), appearanceStream );
                    }
                    else
View Full Code Here

            int fontIndex = daTokens.indexOf( PDFOperator.getOperator( "Tf" ) );
            if(fontIndex != -1 )
            {
                daTokens.set( fontIndex-1, new COSFloat( fontSize ) );
            }
            ContentStreamWriter daWriter = new ContentStreamWriter(output);
            daWriter.writeTokens( daTokens );
        }
        printWriter.println( getTextPosition( boundingBox, pdFont, fontSize, tokens ) );
        int q = getQ();
        if( q == PDTextbox.QUADDING_LEFT )
        {
View Full Code Here

                }
            } // For each page token

            // We replace original page content by the edited one.
            PDStream updatedPageContents = new PDStream(inputFile);
            ContentStreamWriter contentWriter = new ContentStreamWriter( updatedPageContents.createOutputStream() );
            contentWriter.writeTokens( editedPageTokens );
            currentPage.setContents( updatedPageContents );

        } // For each document page
    }
View Full Code Here

                        ByteArrayOutputStream output = new ByteArrayOutputStream();

                        // BJL 9/25/2004 Must prepend existing stream
                        // because it might have operators to draw things like
                        // rectangles and such
                        ContentStreamWriter writer = new ContentStreamWriter(output);
                        writer.writeTokens(tokens);

                        output.write(" /Tx BMC\n".getBytes("ISO-8859-1"));
                        insertGeneratedAppearance(widget, output, pdFont, tokens, appearanceStream);
                        output.write(" EMC".getBytes("ISO-8859-1"));
                        writeToStream(output.toByteArray(), appearanceStream);
                    }
                    else
                    {
                        if (tokens != null)
                        {
                            if (daTokens != null)
                            {
                                int bmcIndex = tokens.indexOf(PDFOperator.getOperator("BMC"));
                                int emcIndex = tokens.indexOf(PDFOperator.getOperator("EMC"));
                                if (bmcIndex != -1 && emcIndex != -1 && emcIndex == bmcIndex + 1)
                                {
                                    // if the EMC immediately follows the BMC index then should
                                    // insert the daTokens inbetween the two markers.
                                    tokens.addAll(emcIndex, daTokens);
                                }
                            }
                            ByteArrayOutputStream output = new ByteArrayOutputStream();
                            ContentStreamWriter writer = new ContentStreamWriter(output);
                            float fontSize = calculateFontSize(pdFont, appearanceStream.getBoundingBox(), tokens, null);
                            boolean foundString = false;
                           
                            // Don't replace the string content of the
                            // current appearance stream value for a choice list PDFBOX-2249
                            // and if the comb flag is set PDFBOX-91
                            // TODO: Shall be addressed properly in a future release
                            if (parent instanceof PDChoiceField || parent.shouldComb())
                            {
                                // Nothing to do here
                                // enforces
                            }
                            else
                            {
                                // This part works only in certain circumstances
                                // retained for the moment for compatibility
                                // TODO: handle properly in a future release
                                //
                                for (int i = 0; i < tokens.size(); i++)
                                {
                                    if (tokens.get(i) instanceof COSString)
                                    {
                                        foundString = true;
                                        COSString drawnString = ((COSString) tokens.get(i));
                                        drawnString.reset();
                                        drawnString.append(apValue.getBytes("ISO-8859-1"));
                                    }
                                }
                            }
                           
                            int setFontIndex = tokens.indexOf(PDFOperator.getOperator("Tf"));
                            tokens.set(setFontIndex - 1, new COSFloat(fontSize));
                            if (foundString)
                            {
                                writer.writeTokens(tokens);
                            }
                            else
                            {
                                int bmcIndex = tokens.indexOf(PDFOperator.getOperator("BMC"));
                                int emcIndex = tokens.indexOf(PDFOperator.getOperator("EMC"));

                                if (bmcIndex != -1)
                                {
                                    writer.writeTokens(tokens, 0, bmcIndex + 1);
                                }
                                else
                                {
                                    writer.writeTokens(tokens);
                                }
                                output.write("\n".getBytes("ISO-8859-1"));
                                insertGeneratedAppearance(widget, output, pdFont, tokens, appearanceStream);
                                if (emcIndex != -1)
                                {
                                    writer.writeTokens(tokens, emcIndex, tokens.size());
                                }
                            }
                            writeToStream(output.toByteArray(), appearanceStream);
                        }
                        else
View Full Code Here

            ByteArrayOutputStream output = new ByteArrayOutputStream();

            // BJL 9/25/2004 Must prepend existing stream
            // because it might have operators to draw things like
            // rectangles and such
            ContentStreamWriter writer = new ContentStreamWriter(output);
            writer.writeTokens(tokens);

            output.write(" /Tx BMC\n".getBytes("ISO-8859-1"));
            insertGeneratedListboxAppearance(fieldWidget, output, pdFont, tokens, appearanceStream);
            output.write(" EMC".getBytes("ISO-8859-1"));
            writeToStream(output.toByteArray(), appearanceStream);
        }
        else
        {
            if (tokens != null)
            {
                if (daTokens != null)
                {
                    int bmcIndex = tokens.indexOf(PDFOperator.getOperator("BMC"));
                    int emcIndex = tokens.indexOf(PDFOperator.getOperator("EMC"));
                    if (bmcIndex != -1 && emcIndex != -1 && emcIndex == bmcIndex + 1)
                    {
                        // if the EMC immediately follows the BMC index then should
                        // insert the daTokens inbetween the two markers.
                        tokens.addAll(emcIndex, daTokens);
                    }
                }

                ByteArrayOutputStream output = new ByteArrayOutputStream();
                ContentStreamWriter writer = new ContentStreamWriter(output);
                float fontSize = calculateListboxFontSize(pdFont, appearanceStream.getBoundingBox(), tokens, daTokens);
                boolean foundString = false;

                int setFontIndex = tokens.indexOf(PDFOperator.getOperator("Tf"));
                tokens.set(setFontIndex - 1, new COSFloat(fontSize));

                int bmcIndex = tokens.indexOf(PDFOperator.getOperator("BMC"));
                /*
                 * Get the contentArea.
                 *
                 * There might be an inner box defined which defines the area where the text is printed. This typically
                 * looks like ... q 1 1 98 70 re W ...
                 */

                {
                    int beginTextIndex = tokens.indexOf(PDFOperator.getOperator("BT"));
                    if (beginTextIndex != -1)
                    {

                        ListIterator innerTokens = tokens.listIterator(bmcIndex);

                        while (innerTokens.hasNext())
                        {
                            if (innerTokens.next() == PDFOperator.getOperator("re")
                                    && innerTokens.next() == PDFOperator.getOperator("W"))
                            {

                                COSArray array = new COSArray();
                                array.add((COSNumber) tokens.get(innerTokens.previousIndex() - 5));
                                array.add((COSNumber) tokens.get(innerTokens.previousIndex() - 4));
                                array.add((COSNumber) tokens.get(innerTokens.previousIndex() - 3));
                                array.add((COSNumber) tokens.get(innerTokens.previousIndex() - 2));

                                paddingEdge = new PDRectangle(array);

                                // as the re operator is using start and width/height adjust the generated
                                // dimensions
                                paddingEdge.setUpperRightX(paddingEdge.getLowerLeftX() + paddingEdge.getUpperRightX());
                                paddingEdge.setUpperRightY(paddingEdge.getLowerLeftY() + paddingEdge.getUpperRightY());

                                contentArea = applyPadding(paddingEdge, paddingEdge.getLowerLeftX()
                                        - appearanceStream.getBoundingBox().getLowerLeftX());

                                break;
                            }
                        }
                    }
                }

                int emcIndex = tokens.indexOf(PDFOperator.getOperator("EMC"));

                if (bmcIndex != -1)
                {
                    writer.writeTokens(tokens, 0, bmcIndex + 1);
                }
                else
                {
                    writer.writeTokens(tokens);
                }
                output.write("\n".getBytes("ISO-8859-1"));
                insertGeneratedListboxAppearance(fieldWidget, output, pdFont, tokens, appearanceStream);
                if (emcIndex != -1)
                {
                    writer.writeTokens(tokens, emcIndex, tokens.size());
                }

                writeToStream(output.toByteArray(), appearanceStream);
            }
            else
View Full Code Here

            int fontIndex = daTokens.indexOf(PDFOperator.getOperator("Tf"));
            if (fontIndex != -1)
            {
                daTokens.set(fontIndex - 1, new COSFloat(fontSize));
            }
            ContentStreamWriter daWriter = new ContentStreamWriter(output);
            daWriter.writeTokens(daTokens);
        }
       
        // Handle a field with the comb flag being set differently to
        // address PDFBOX-91
        // TODO: Shall be addressed properly in a future release
View Full Code Here

        // start of text output
        printWriter.println("BT");

        if (defaultAppearance != null)
        {
            ContentStreamWriter daWriter = new ContentStreamWriter(output);
            daWriter.writeTokens(daTokens);
        }

        int q = getQ();
        if (q == PDTextbox.QUADDING_LEFT)
        {
View Full Code Here

                }
            } // For each page token

            // We replace original page content by the edited one.
            PDStream updatedPageContents = new PDStream(inputFile);
            ContentStreamWriter contentWriter = new ContentStreamWriter( updatedPageContents.createOutputStream() );
            contentWriter.writeTokens( editedPageTokens );
            currentPage.setContents( updatedPageContents );

        } // For each document page
    }
View Full Code Here

TOP

Related Classes of org.apache.pdfbox.pdfwriter.ContentStreamWriter

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.