Itext5生成含波斯语内容的PDF时段落间存在过大空白的问题求助
Itext5生成含波斯语内容的PDF时段落间存在过大空白的问题求助
你好!我看了你的代码和问题描述,段落间的过大空白大概率是由几个小细节问题导致的,咱们一步步来调整解决:
移除第一个单元格的底部内边距:你给承载第一个段落的
cell设置了cell.setPaddingBottom(20);,这会直接在第一个段落下方添加20单位的空白,删掉这行代码就能立刻减少一部分不必要的间距。清理第二个段落末尾的多余换行符:你的
p1文本最后有一串"\n\n\n ",这些连续的换行符会被iText解析成额外的空白行,把这些多余的换行删掉就能避免这部分空白。修正段落行高的设置:你给
cell2设置了cell2.setLeading(20f, 0f);,第二个参数是行高的比例乘数,设为0会导致行间距逻辑异常。建议改成cell2.setLeading(0f, 1.5f);,这样行间距会是字体大小的1.5倍,既保证波斯语文本的可读性,又不会产生突兀的大空白。可选:调整表格的默认间距:如果上面的调整后还有细微的间距问题,可以给表格添加这两行代码,确保表格本身不会额外增加间距:
table.setSpacingBefore(0); table.setSpacingAfter(0);
下面是修改后的核心代码片段,你可以参考替换:
// ... 其他代码保持不变 ... Paragraph p = new Paragraph(); // ... p的字体设置不变 ... p.add("سعید بیات پریدری "); p.add(Html.fromHtml("<b> محسن بیات </b> ", 0).toString()); p.add("حسین بیات پریدری"); Paragraph p1 = new Paragraph(); p1.setFont(paraFont1); // 移除末尾的多余换行符 p1.add("صورتجلسه مجمع عمومی عادی بطور فوق العاده برای انتخاب مدیران و بازرسین ،روزنامه و تصویب تراز در شرکتهای سهامی خاص\n" + "نام شرکت : …………...............………………\n" + "شماره ثبت شرکت : ………………………… \n" + "سرمایه ثبت شده : …………………………\n" + "شناسه ملی : ......................................\n" + "صورتجلسه مجمع عمومی عادی بطور فوق العاه شرکت ………… سهامی خاص ثبت شده به شماره …....…… در تاریخ …………… ساعت……… با حضور کلیه / اکثریت سهامداران در محل قانونی شرکت (اگر جلسه در محل دیگری غیر از محل قانونی شرکت تشکیل شده آدرس آن محل نوشته شود) تشکیل گردید. \n" + "الف: در اجرای ماده 101 لایحه اصلاحی قانون تجارت: \n" + "1ـ خانم/ آقای ………………………… به سمت رئیس جلسه \n" + "2ـ خانم/ آقای ………………………… به سمت ناظر جلسه \n" + "3ـ خانم/ آقای ………………………… به سمت ناظر جلسه \n" + "4ـ خانم/ آقای………………………… به سمت منشی جلسه انتخاب شدند. \n" + "ب: در خصوص دستور جلسه، 1ـ انتخاب مدیران 2ـ انتخاب بازرسین 3ـ انتخاب روزنامه کثیرالانتشار 4ـ تصویب ترازنامه حساب سود و زیان به شرح ذیل اتخاذ تصمیم شد. \n" + "ب : 1ـ اعضای هیات مدیره عبارتند از خانم/آقای ………. به شماره ملی …………………… خانم/آقای …….. به شماره ملی …………………… خانم/آقای ……….. به شماره ملی …………………… برای مدت دو سال انتخاب و با امضاء ذیل صورتجلسه قبولی خود را اعلام می دارند. مجمع تصویب نمود در اجرای ماده 124 لایحه اصلاحی قانون تجارت میتواند رئیس هیئت مدیره و مدیر عامل یک نفر باشد.\n" + "ب ـ 2ـ با رعایت ماده 147 لایحه اصلاحی قانون تجارت خانم / آقای ……….. به شماره ملی ……………… به سمت بازرس اصلی خانم / آقای …………. به شماره ملی ………………… به سمت بازرس علی البدل برای مدت یک سال مالی انتخاب شدند. \n" + "ب ـ 3ـ روزنامه کثیرالانتشار ………………………… جهت نشر آگهی های شرکت انتخاب شد.\n" + "ب ـ4ـ پس از قرائت گزارش بازرس قانونی ترازنامه و حساب سود و زیان شرکت منتهی به سال...................... مورد تصویب قرار گرفت. \n" + "ج: اینجانبان اعضاء هیات مدیره و بازرسین ضمن قبولی سمت خود اقرار می نمائیم که هیچگونه سوء پیشینه کیفری نداشته و ممنوعیت اصل 141 قانون اساسی و مواد 111 و147 لایحه اصلاحی قانون تجارت را نداریم .\n" + "د: به خانم / آقای ………………………… احدی از سهامداران یا احدی از مدیران یا وکیل رسمی شرکت وکالت داده می شود که ضمن مراجعه به اداره ثبت شرکت ها نسبت به ثبت صورتجلسه و پرداخت حق الثبت و امضاء ذیل دفاتر ثبت اقدام نماید.\n" + "امضاء هیات رئیسه: رئیس جلسه ……...........… ناظر جلسه ……………… ناظرجلسه………………\n" + "منشی جلسه ........................\n" + "امضا اعضای هیئت مدیره : \n" + "1 ـ …………………… 2 ـ …………………… 3ـ …………………… 4 ـ ……………………\n" + "امضاء بازرسین: \t \t بازرس اصلی\t بازرس علی البدل:"); PdfPTable table = new PdfPTable(1); // 可选:添加表格间距设置 table.setSpacingBefore(0); table.setSpacingAfter(0); PdfPCell cell = new PdfPCell(p); PdfPCell cell2 = new PdfPCell(p1); cell.setBorder(0); cell2.setBorder(0); cell2.setHorizontalAlignment(Element.ALIGN_JUSTIFIED); cell.setHorizontalAlignment(Element.ALIGN_CENTER); cell.setRunDirection(PdfWriter.RUN_DIRECTION_RTL); cell2.setRunDirection(PdfWriter.RUN_DIRECTION_RTL); // 移除这行导致底部空白的代码 // cell.setPaddingBottom(20); // 修正行高设置 cell2.setLeading(0f, 1.5f); table.addCell(cell); table.addCell(cell2); doc.add(table); // ... 其他代码保持不变 ...
备注:内容来源于stack exchange,提问作者saeedbayat
相关产品推荐
相关产品推荐

