كل من المناظر الطبيعية والصورة لملف pdf باستخدام Flying Saucer/iText

StackOverflow https://stackoverflow.com/questions/613971

  •  03-07-2019
  •  | 
  •  

سؤال

هل هناك طريقة لتعيين أنماط مختلفة للصفحة باستخدام Flying Saucer/iText؟أحتاج إلى وضع أول صفحتين في الوضع الأفقي، ثم التبديل إلى الوضع العمودي عند صفحة معينة والخروج منها.

أيه أفكار؟

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

المحلول

فما باللك، وجدت الجواب. لأي شخص مهتم، وهذا هو كيف نفعل ذلك:

@page land { size:landscape; }
@page port { size:portrait; }
.landscapePage { page:land; }
.portraitPage { page:port; }

وفويلا!

نصائح أخرى

لأي شخص لا تزال عالقة مع المشكلة المذكورة ديريك، لقد وجدت أنني بحاجة إلى وضع العرض صراحة على العنصر الذي يتم تبديل تخطيطه. حتى مع المثال شعبة

<div class="portraitPage">
    <p>Some page content in portrait</p>
</div>
<div class="landscapePage">
    <p>Some page content in landscape</p>
</div>

وسوف تهيئة بشكل صحيح صفحة صورة تليها صفحة المشهد، ولكن المحتوى في الصفحة المشهد إلا أن يكون واسعة كما في الصفحة صورة، حتى لو كان يتضمن الإعلان <م> ارضpage على العرض. ما احتاجه هو تعيين عرض مباشرة على شعبة الذي يحتوي على الفئة ذات الصلة تطبيقها، وبالتالي فإن الإعلان هو شيء أشبه

.landscapePage { page:land; width: 29.7cm; }

كن حذرا على الرغم من أن العرض يجب أن يأخذ في الاعتبار أي هوامش أو الحشو تطبيقها عبر كتلة إعلانpage.

يمكنك التعامل مع حجم صفحتك ديناميكيًا في وقت التشغيل.يرجى اتباع الخطوة التالية

  1. أضف معلمة إضافية لنوع الصفحة، على سبيل المثال، أفقي أو عمودي في معلمة pageType
  2. أضف التعليمات البرمجية التالية في علامة النمط الخاصة بك عندما تقوم بإنشاء HTML الخاص بك على جانب الخادم على سبيل المثال
FileOutputStream fos = new FileOutputStream(file);
ITextRenderer renderer = new ITextRenderer();
StringBuilder htmls = new StringBuilder();
htmls.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
htmls.append("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">");
htmls.append("<html xmlns=\"http://www.w3.org/1999/xhtml\">");
htmls.append("<head><style type=\"text/css\">");
htmls.append("@page{ size: "+request.getParameter("pageType")}");
htmls.append("</style></head>");
htmls.append("<body><div>dynamic pdf data</div></body></html>");
renderer.getFontResolver().addFont("C:\\Windows\\Fonts\\Calibri.ttf","UTF-8",BaseFont.NOT_EMBEDDED);
renderer.setDocumentFromString(htmls.toString());
renderer.layout();
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment;filename=\"" + fileName + ".pdf\"");
renderer.createPDF(outputStream);
renderer.createPDF(fos);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top