Dear support team,
to reproduce:
- add a text annotation with page.AddAnnotEditbox
- Pdf A4 page is in landscape orientation
- text becomes rotated 90 degrees
When adding the annotation to a A4 page in regular portrait orientation I don't have any rotation issues.
When I call page.AddAnnotBitmap or page.AddAnnotInk on the same page I don't have any rotation issues. In all cases I use vpage.CreateInvertMatrix and mat.TransformRect or mat.TransformInk to calculate the position.
It seems that the library deals differently with text annotations. Could you please point me in the right direction?
I am pretty stuck here.
My code for the funtion is here:
case MotionEvent.ACTION_UP: {
if( m_rects != null ) {
PDFVPageSet pset = new PDFVPageSet(len);
for( cur = 0; cur < len; cur += 4 ) {
PDFPos pos = m_layout.vGetPos((int)m_rects[cur], (int)m_rects[cur + 1]);
VPage vpage = m_layout.vGetPage(pos.pageno);
Page page = m_doc.GetPage(vpage.GetPageNo());
if( page != null ) {
Matrix mat = vpage.CreateInvertMatrix(m_layout.vGetX(), m_layout.vGetY());
float rect[] = new float[4];
if( m_rects[cur] > m_rects[cur + 2] ) {
rect[0] = m_rects[cur + 2];
rect[2] = m_rects[cur];
} else {
rect[0] = m_rects[cur];
rect[2] = m_rects[cur + 2];
}
if( m_rects[cur + 1] > m_rects[cur + 3] ) {
rect[1] = m_rects[cur + 3];
rect[3] = m_rects[cur + 1];
} else {
rect[1] = m_rects[cur + 1];
rect[3] = m_rects[cur + 3];
}
mat.TransformRect(rect);
float textSize = 12.0f;
float width = Math.abs(rect[0] - rect[2]);
float height = Math.abs(rect[1] - rect[3]);
if (width > (textSize * 2.0f) && height > (textSize * 1.0f)) {
page.ObjsStart();
if (page.AddAnnotEditbox(rect, Color.BLACK, 0, Color.BLACK, textSize, Color.BLACK)) {
Page.Annotation newAnnot = page.GetAnnot(page.GetAnnotCount() - 1);
editBoxDrawRect = false;
invalidate();
showEditText(newAnnot, vpage, page);
} else { // Adding annotation failed for some reason
editBoxDrawRect = false;
invalidate();
page.Close();
}
} else { // Box is too small to add text
editBoxDrawRect = false;
invalidate();
page.Close();
}
mat.Destroy();
}
}
}
break;
}