سؤال

أنا أستخدم itext لكتابة PDF. في بعض الحالات، أحتاج إلى توقيع PDF مع SetVisibleSignature وظيفة. مع هذه الوظيفة، نحتاج إلى تعيين المستطيل الذي سنكتب المحتوى فيه.

ولكن من الصعب علي حساب مدى وصول السلسلة، حتى أتمكن من ضبط المستطيل قبل تعيين توقيع على PDF.

كيف يمكنني حساب عرض السلسلة في السياحة؟

هل كانت مفيدة؟

المحلول

يمكنك استخدام BaseFont.getWidthPoint(String text, float fontSize) للحصول على عرض السلسلة في PT.

أو ضع السلسلة في قطعة وتفعل chunk.getWidthPoint()

نصائح أخرى

الإجابة المقبولة BaseFont.getWidthPoint, ، لن تعمل في IText 5.5.4 منذ الطريقة ليست ثابتة بعد الآن. حتى لو كان لا يزال موجودا، فإنه لا يأخذ في الاعتبار الخط الحقيقي المستخدم (عائلته أو مائلها جريئة) لأنه ثابت ويتلقى معايير محدودة.

chunk.getWidthPoint() هل يعمل مع الخط الحقيقي كما هو مذكور لاحقا، ولكن بالنسبة لبعض الاستخدامات، فهو نفايات لإنشاء جزء فقط من أجل العرض، خاصة إذا لم يتم التخطيط للقطع المستخدمة لاحقا.

هذا هو الكود الأساسي ل chunk.getWidthPoint() لاستخدام كبديل مستقل، على افتراض أنك لا تفعل أي تحجيم أفقي:

font.getCalculatedBaseFont(true).getWidthPoint(text, font.getCalculatedSize());

انتهى بي الأمر في القيام بذلك مع ColumnText.getWidth( Phrase phrase ) لحجم ما عرض Phrase سيكون قبل إظهار ذلك ColumnText.showTextAligned.

في هذا القصاص، استخدمت ColumnText.getWidth لحجم طول السلسلة لوضعها أعلى الحق في الصفحة. وهي تعمل في صورة A4، لم تختبرها كذلك.

Phrase phrase = new Phrase( "Bla bla bla!", new Font( FontFamily.HELVETICA, 9 ) );
float width = ColumnText.getWidth( phrase );

ColumnText.showTextAligned (
    canvas,
    Element.ALIGN_LEFT,
    phrase,
    canvas.getPdfDocument( ).right( ) - width,
    canvas.getPdfDocument( ).top( ) + 9,
    0
);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top