gpt4 book ai didi

android - PDFTron for android - 绘制注释错误

转载 作者:行者123 更新时间:2023-11-29 19:14:26 24 4
gpt4 key购买 nike

我正在尝试绘制注释,在 80% 的情况下,注释可以正确绘制,但有时注释会在中间被切断,在我放大和缩小后,注释会完全绘制。

这是我绘制注释的代码:

public void createNoteIconOnPage(AnnotationData annotationData, Point noteIconPoint) {
try {
mPDFView.docLock(true);
PDFDoc pdfDoc = mPDFView.getDoc();
double[] pts = mPDFView.convScreenPtToPagePt(noteIconPoint.x, noteIconPoint.y, annotationData.getPage());
Point p = new Point(pts[0], pts[1]);
com.pdftron.pdf.annots.Text text = com.pdftron.pdf.annots.Text.create(pdfDoc, p);
text.setUniqueID(annotationData.getUniqueId());
//creating the annotation appearance - icon

// Let's create an appearance for the annotation using an image
ElementBuilder builder = new ElementBuilder();
ElementWriter writer = new ElementWriter();
writer.begin(pdfDoc);

Bitmap imageBitmap = Bitmap.createBitmap(150, 150, Bitmap.Config.ARGB_8888);
imageBitmap.eraseColor(Color.RED);
Image image = Image.create(mPDFView.getDoc(), imageBitmap);

// Image image = Image.create(pdfDoc, annotationData.getDrawable());

int w = image.getImageWidth(), h = image.getImageHeight();

Element element = builder.createImage(image, 0, 0, w, h);

writer.writePlacedElement(element);

writer.writeElement(builder.createTextBegin(Font.create(pdfDoc, Font.e_times_roman), 12));
writer.writeElement(element);
writer.writeElement(builder.createTextEnd());

Obj appearance = writer.end();
appearance.putRect("BBox", 0.1, 0.1, w, h);
text.setAppearance(appearance);

/*
The left icons spouse to be bigger the the regular icons
*/
if(annotationData.getType() == AnnotationData.AnnotationType.LINK && (annotationData.getShard() == AnnotationData.LEFT_LINK_A || annotationData.getShard() == AnnotationData.LEFT_LINK_B)){
text.setRect(new Rect(pts[0],pts[1],pts[0] + 30,pts[1] + 30));
}

if (annotationData.getType() == AnnotationData.AnnotationType.NOTE) {
text.setContents(AnnotationData.NOTE_TYPE_CONTENTS);
} else if (annotationData.getType() == AnnotationData.AnnotationType.LINK) {
text.setContents(AnnotationData.LINK_TYPE_CONTENTS);
}

Page page = pdfDoc.getPage(annotationData.getPage());
if (page != null) {
page.annotPushBack(text);
}


mAnnotPushedBack = true;
mAnnot = text;
mAnnotPageNum = mDownPageNum;
buildAnnotBBox();

mPDFView.update(mAnnot, mAnnotPageNum);
raiseAnnotationAddedEvent(mAnnot, mAnnotPageNum);

} catch (Exception ex) {
Log.e(PDFTronReader.TAG, ex.toString());
mNextToolMode = ToolManager.e_pan;

} finally {
mPDFView.docUnlock();
}
mPDFView.waitForRendering();
}

它是这样的:enter image description here

如你所见,我们在左侧尺寸(3 个红色方 block )中有 3 个注释,第一个在中间被切掉

有人知道为什么会这样吗?谢谢大家。

最佳答案

我认为 annotationData.getPage() 返回的内容与 mAnnotPageNum 返回的内容之间存在差异。

我将围绕这两个变量之一合并此代码。也就是说,使用一个或另一个。我怀疑 20% 的时间它们不是同一个数字。

此外,文本注释只有一个位置,因为它们的大小是固定的。它们的缩放比例与普通注释不同。所以我会注释掉对 buildAnnotBBox 的调用。

我会改变的其他事情。

  1. 如上所述,大小是固定的。所以删除以下行text.setRect(new Rect(pts[0],pts[1],pts[0] + 30,pts[1] + 30));

  2. 您将 BBox 原点设置为 0.1,而根据您的自定义外观,这应该为 0。

关于android - PDFTron for android - 绘制注释错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44107924/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com