亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? overlay.java

?? 非常有用的操作pdf文件的java源碼
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
            PDPage page = (PDPage)pagesIter.next();
            COSBase contents = page.getCOSDictionary().getDictionaryObject( COSName.CONTENTS );
            PDResources resources = page.findResources();
            if( resources == null )
            {
                resources = new PDResources();
                page.setResources( resources );
            }
            COSDictionary res = resources.getCOSDictionary();

            if( contents instanceof COSStream )
            {
                COSStream stream = (COSStream) contents;
                Map objectNameMap = new TreeMap();
                stream = makeUniqObjectNames(objectNameMap, stream);

                layoutPages.add(new LayoutPage(stream, res, objectNameMap));
            }
            else if( contents instanceof COSArray )
            {
                throw new UnsupportedOperationException("Layout pages with COSArray currently not supported.");
                // layoutPages.add(new LayoutPage(contents, res));
            }
            else
            {
                throw new IOException( "Contents are unknown type:" + contents.getClass().getName() );
            }
        }
    }

    private COSStream makeUniqObjectNames(Map objectNameMap, COSStream stream) throws IOException
    {
        ByteArrayOutputStream baos = new ByteArrayOutputStream(10240);

        byte[] buf = new byte[10240];
        int read;
        InputStream is = stream.getUnfilteredStream();
        while ((read = is.read(buf)) > -1)
        {
            baos.write(buf, 0, read);
        }

        buf = baos.toByteArray();
        baos = new ByteArrayOutputStream(buf.length + 100);
        StringBuffer sbObjectName = new StringBuffer(10);
        boolean bInObjectIdent = false;
        boolean bInText = false;
        boolean bInEscape = false;
        for (int i = 0; i<buf.length; i++)
        {
            byte b = buf[i];

            if (!bInEscape)
            {
                if (!bInText && b == '(')
                {
                    bInText = true;
                }
                if (bInText && b == ')')
                {
                    bInText = false;
                }
                if (b == '\\')
                {
                    bInEscape = true;
                }

                if (!bInText && !bInEscape)
                {
                    if (b == '/')
                    {
                        bInObjectIdent = true;
                    }
                    else if (bInObjectIdent && Character.isWhitespace((char) b))
                    {
                        bInObjectIdent = false;

                        // System.err.println(sbObjectName);
                        // String object = sbObjectName.toString();

                        String objectName = sbObjectName.toString().substring(1);
                        String newObjectName = objectName + "overlay";
                        baos.write('/');
                        baos.write(newObjectName.getBytes());

                        objectNameMap.put(objectName, COSName.getPDFName(newObjectName));

                        sbObjectName.delete(0, sbObjectName.length());
                    }
                }

                if (bInObjectIdent)
                {
                    sbObjectName.append((char) b);
                    continue;
                }
            }
            else
            {
                bInEscape = false;
            }

            baos.write(b);
        }

        COSDictionary streamDict = new COSDictionary();
        streamDict.setItem(COSName.LENGTH, new COSInteger(baos.size()));
        COSStream output = new COSStream(streamDict, pdfDocument.getDocument().getScratchFile());
        output.setFilters(stream.getFilters());
        OutputStream os = output.createUnfilteredStream();
        baos.writeTo(os);
        os.close();

        return output;
    }

    private void processPages( List pages ) throws IOException
    {
        Iterator pageIter = pages.iterator();
        while( pageIter.hasNext() )
        {
            PDPage page = (PDPage)pageIter.next();
            COSDictionary pageDictionary = page.getCOSDictionary();
            COSBase contents = pageDictionary.getDictionaryObject( COSName.CONTENTS );
            if( contents instanceof COSStream )
            {
                COSStream contentsStream = (COSStream)contents;
                // System.err.println("stream");
                pageCount++;

                COSArray array = new COSArray();

                array.add(contentsStream);

                mergePage( array, page );

                pageDictionary.setItem(COSName.CONTENTS, array);
            }
            else if( contents instanceof COSArray )
            {
                COSArray contentsArray = (COSArray)contents;

                mergePage( contentsArray, page );
            }
            else
            {
                throw new IOException( "Contents are unknown type:" + contents.getClass().getName() );
            }
        }
    }

    private void mergePage(COSArray array, PDPage page )
    {
        int layoutPageNum = pageCount % layoutPages.size();
        LayoutPage layoutPage = (LayoutPage) layoutPages.get(layoutPageNum);
        PDResources resources = page.findResources();
        if( resources == null )
        {
            resources = new PDResources();
            page.setResources( resources );
        }
        COSDictionary docResDict = resources.getCOSDictionary();
        COSDictionary layoutResDict = layoutPage.res;
        mergeArray(PROC_SET, docResDict, layoutResDict);
        mergeDictionary(COSName.FONT, docResDict, layoutResDict, layoutPage.objectNameMap);
        mergeDictionary(XOBJECT, docResDict, layoutResDict, layoutPage.objectNameMap);
        mergeDictionary(EXT_G_STATE, docResDict, layoutResDict, layoutPage.objectNameMap);

        //we are going to wrap the existing content around some save/restore
        //graphics state, so the result is
        //
        //<save graphics state>
        //<all existing content streams>
        //<restore graphics state>
        //<overlay content>
        array.add(0, saveGraphicsStateStream );
        array.add( restoreGraphicsStateStream );
        array.add(layoutPage.contents);
    }

    /**
     * merges two dictionaries.
     *
     * @param dest
     * @param source
     */
    private void mergeDictionary(COSName name, COSDictionary dest, COSDictionary source, Map objectNameMap)
    {
        COSDictionary destDict = (COSDictionary) dest.getDictionaryObject(name);
        COSDictionary sourceDict = (COSDictionary) source.getDictionaryObject(name);

        if (destDict == null)
        {
            destDict = new COSDictionary();
            dest.setItem(name, destDict);
        }
        if( sourceDict != null )
        {

            Iterator iterKeys = sourceDict.keyList().iterator();
            while (iterKeys.hasNext())
            {
                COSName key = (COSName) iterKeys.next();
                COSName mappedKey = (COSName) objectNameMap.get(key.getName());
                if (mappedKey == null)
                {
                    // object not needet
                    continue;
                }

                destDict.setItem(mappedKey, sourceDict.getItem(key));
            }
        }
    }

    /**
     * merges two arrays.
     *
     * @param dest
     * @param source
     */
    private void mergeArray(COSName name, COSDictionary dest, COSDictionary source)
    {
        COSArray destDict = (COSArray) dest.getDictionaryObject(name);
        COSArray sourceDict = (COSArray) source.getDictionaryObject(name);

        if (destDict == null)
        {
            destDict = new COSArray();
            dest.setItem(name, destDict);
        }

        for (int sourceDictIdx = 0; sourceDict != null && sourceDictIdx<sourceDict.size(); sourceDictIdx++)
        {
            COSBase key = sourceDict.get(sourceDictIdx);
            if (key instanceof COSName)
            {
                COSName keyname = (COSName) key;

                boolean bFound = false;
                for (int destDictIdx = 0; destDictIdx<destDict.size(); destDictIdx++)
                {
                    COSBase destkey = destDict.get(destDictIdx);
                    if (destkey instanceof COSName)
                    {
                        COSName destkeyname = (COSName) destkey;
                        if (destkeyname.equals(keyname))
                        {
                            bFound = true;
                            break;
                        }
                    }
                }
                if (!bFound)
                {
                    destDict.add(keyname);
                }
            }
        }
    }
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区欧美在线观看| 久久九九影视网| 午夜视频在线观看一区| 97精品国产露脸对白| 亚洲丝袜制服诱惑| 91传媒视频在线播放| 亚洲国产精品天堂| 91麻豆精品国产91久久久| 另类小说图片综合网| 久久久精品天堂| 91丨porny丨国产入口| 一区二区三区在线视频观看| 欧美三级电影精品| 另类的小说在线视频另类成人小视频在线| 精品国产一区二区三区四区四| 国产精品香蕉一区二区三区| 亚洲免费色视频| 91精品婷婷国产综合久久性色| 国内精品视频666| 亚洲日本电影在线| 欧美日韩1234| 粉嫩嫩av羞羞动漫久久久| 亚洲精品美国一| 日韩欧美高清在线| 一本色道久久综合狠狠躁的推荐| 午夜精品国产更新| 国产精品全国免费观看高清| 欧美日韩国产首页在线观看| 国产精品一二三四区| 一区二区在线观看免费视频播放| 日韩欧美的一区| 91免费国产在线观看| 精品一区二区三区在线播放| 亚洲丝袜美腿综合| 精品国产欧美一区二区| 在线亚洲欧美专区二区| 国产一区二区成人久久免费影院| 一区二区三区在线看| 久久久亚洲精品石原莉奈| 欧美午夜理伦三级在线观看| 国产成人精品亚洲日本在线桃色| 亚洲第一av色| 亚洲精品视频在线| 国产欧美一区二区精品性色| 91精品欧美综合在线观看最新 | 欧美日本在线一区| 成人福利视频在线看| 美女一区二区视频| 一区二区三区四区蜜桃| 欧美国产精品v| 日韩美女一区二区三区四区| 欧美日韩久久一区二区| 91污片在线观看| 国产成人啪午夜精品网站男同| 免费在线欧美视频| 亚洲网友自拍偷拍| 综合亚洲深深色噜噜狠狠网站| 久久久久国产一区二区三区四区| 欧美一级高清片| 制服视频三区第一页精品| 欧美中文一区二区三区| 91免费精品国自产拍在线不卡| 成人免费av在线| k8久久久一区二区三区| 国产福利视频一区二区三区| 九九九精品视频| 久久国内精品自在自线400部| 亚洲高清在线视频| 午夜亚洲国产au精品一区二区| 一区二区三区中文在线| 伊人性伊人情综合网| 亚洲美女免费视频| 亚洲欧美视频在线观看视频| 亚洲免费色视频| 一区二区三区在线观看动漫| 一区二区高清免费观看影视大全 | 久久午夜电影网| 精品日产卡一卡二卡麻豆| 日韩一级片在线观看| 欧美mv日韩mv国产| 精品第一国产综合精品aⅴ| 欧美一卡2卡3卡4卡| 欧美一级专区免费大片| 欧美精品一区二区三区很污很色的| 欧美岛国在线观看| 久久久久一区二区三区四区| 中文乱码免费一区二区| 综合久久久久久| 亚洲一二三专区| 日本美女视频一区二区| 韩日欧美一区二区三区| 国产成a人无v码亚洲福利| 成人午夜免费视频| 一本大道综合伊人精品热热| 欧美日韩三级一区| 日韩欧美一区二区视频| 国产亚洲人成网站| 亚洲人成网站精品片在线观看| 亚洲最快最全在线视频| 蜜臀av一级做a爰片久久| 国产一区二区影院| 一本大道久久a久久综合婷婷| 欧美三级午夜理伦三级中视频| 欧美一三区三区四区免费在线看| 精品日本一线二线三线不卡| 中文字幕不卡在线播放| 亚洲精品成人在线| 青青草91视频| 成人网男人的天堂| 欧美日韩国产a| 国产日本欧美一区二区| 一区二区三区在线看| 精品一区二区三区香蕉蜜桃| 91亚洲男人天堂| 91精品国产综合久久婷婷香蕉| 亚洲国产精品黑人久久久| 亚洲第一激情av| 国产白丝精品91爽爽久久| 欧美中文一区二区三区| 国产日产欧美精品一区二区三区| 亚洲午夜免费视频| 成人午夜激情视频| 欧美一级免费大片| 亚洲三级久久久| 国产风韵犹存在线视精品| 欧美亚洲综合另类| 欧美国产一区二区| 人人超碰91尤物精品国产| av中文一区二区三区| 精品久久久久久久久久久久包黑料| 成人欧美一区二区三区小说| 裸体健美xxxx欧美裸体表演| 色哟哟在线观看一区二区三区| 26uuu精品一区二区三区四区在线| 中文字幕综合网| 国产精品白丝av| 欧美成人一级视频| 亚洲第一狼人社区| 色婷婷精品大视频在线蜜桃视频| 26uuu久久天堂性欧美| 日本不卡一二三| 欧美日韩国产一二三| 国产精品毛片久久久久久| 国产一区二区美女诱惑| 3d成人动漫网站| 亚洲一区二区三区三| 94-欧美-setu| 亚洲视频一区在线| 国产不卡一区视频| 久久色视频免费观看| 久久狠狠亚洲综合| 日韩欧美一卡二卡| 美腿丝袜一区二区三区| 亚洲激情五月婷婷| 91在线视频网址| 国产精品久久久久三级| 国产一区二区久久| 国产视频一区在线观看| 国产乱码精品一品二品| 久久久久久久久久久久久夜| 国产揄拍国内精品对白| 精品黑人一区二区三区久久| 激情亚洲综合在线| 精品sm在线观看| 精品亚洲porn| 久久丝袜美腿综合| 国产白丝精品91爽爽久久| 亚洲国产精品精华液2区45| 成人一二三区视频| 综合电影一区二区三区| 欧美中文一区二区三区| 亚洲国产精品一区二区尤物区| 欧美精品黑人性xxxx| 奇米四色…亚洲| 2017欧美狠狠色| 国产二区国产一区在线观看| 亚洲欧美一区二区视频| 91福利区一区二区三区| 日韩电影在线一区| 精品国产91久久久久久久妲己| 国产在线乱码一区二区三区| 国产亚洲成av人在线观看导航| 成人av网址在线观看| 一区二区三区在线免费视频| 欧美精品久久天天躁| 国产在线国偷精品产拍免费yy| 亚洲国产高清不卡| 欧美在线免费观看亚洲| 奇米精品一区二区三区在线观看一| www国产亚洲精品久久麻豆| 成人高清视频在线观看| 亚洲成av人片一区二区| 精品欧美乱码久久久久久1区2区| 国产精品性做久久久久久| 亚洲精品日韩综合观看成人91| 欧美精品在线一区二区| 国产夫妻精品视频| 亚洲成a人v欧美综合天堂| 精品久久久久一区| 色婷婷综合久久久中文一区二区|