2

データベースに保存されているポイントからインク注釈を描画しています。これらのポイントは、pdf を介して以前に描画された形状から抽出された場所です。PDFTron によって提供されたこの例を参照しましたが、ページに適切に描画された注釈を確認できません。実際の画像実際の図面

プログラムプログラムで描画 による描画 注釈の描画に使用したコードを次に示します。

for (Integer integer : uniqueShapeIds) {
                        Config.debug("Shape Id's unique "+integer);
                        pdftron.PDF.Annots.Ink ink = pdftron.PDF.Annots.Ink.create(
                                mPDFViewCtrl.getDoc(),
                                getAnnotationRect(pointsArray, integer));
                        for (SaveAnnotationState annot : pointsArray) {
                            Config.debug("Draw "+annot.getxCord()+" "+annot.getyCord()+" "+annot.getPathIndex()+" "+annot.getPointIndex());
                            Point pt = new Point(annot.getxCord(), annot.getyCord());

                            ink.setPoint(annot.getPathIndex(), annot.getPointIndex(),pt);
                            ink.setColor(
                                    new ColorPt(annot.getR()/255, annot.getG()/255, annot
                                            .getB()/255), 3);
                            ink.setOpacity(annot.getOpacity());
                            BorderStyle border=ink.getBorderStyle();
                            border.setWidth(annot.getThickness());
                            ink.setBorderStyle(border);

                        }
                        ink.refreshAppearance();
                        Page page = mPDFViewCtrl.getDoc().getPage(mPDFViewCtrl.getCurrentPage());
                        Annot mAnnot=ink;
                        page.annotPushBack(mAnnot);
                        mPDFViewCtrl.update(mAnnot, mPDFViewCtrl.getCurrentPage());


                    }

ここで何がうまくいかないのか誰にも教えてもらえますか?

4

1 に答える 1

0

一般的な PDF ページでは、ページの左下隅が座標 0,0 です。ただし、注釈の場合、原点は BBox エントリで指定された長方形の左下隅です。BBox エントリは、残念ながら pos と呼ばれる Ink.Create への呼び出しの 3 番目のパラメーターです。

これは、Ink.Create に渡された Rect が、Ink Annot を構成するすべてのポイントの最小の軸に沿った境界ボックスであることを意味します。

getAnnotationRect への呼び出しでは、Rect() で開始すると思われますが、これは実際には Rect(0,0,0,0) であるため、他のすべてのポイントを結合すると、膨張した Rect になります。

Annot.getRect() を呼び出して、BBox をデータベースに保存する必要があります。

これが不可能な場合、または遅すぎる場合は、データベースの最初のポイントで Rect を初期化します。

Rect rect = new Rect(pt.x, pt.y, pt.x, pt.y);

API: http://www.pdftron.com/pdfnet/mobile/docs/Android/pdftron http://www.pdftron.com/pdfnet/mobile/docs/Android/pdftron/PDF/Annot.html#getRect%28 %29/PDF/Annot.html#create%28pdftron.SDF.Doc,%20int,%20pdftron.PDF.Rect%29

于 2015-03-09T16:56:50.840 に答える