إنشاء و قراءة ملفات PDF من خلال تطبيقات الجافا

استعرض الموضوع السابق استعرض الموضوع التالي اذهب الى الأسفل

إنشاء و قراءة ملفات PDF من خلال تطبيقات الجافا

مُساهمة من طرف أحمد مناع في الأحد سبتمبر 22, 2013 8:20 pm

بسم الله الرحمن الرحيم

أهلا وسهلا بكم إخوانى الكرام ....درس اليوم إن شاء الله تعالى عن كيفية إنشاء ملفات PDF من تطبيقات الجافا ...ويقدم هذا الدرس معلومات كيفية عن كيفية فعل ذلك و ذلك من خلال مكتبة تسمى iText وهى مكتبة مفتوحة المصدر تسمح لك بانشاء ملفات pdf ...

أولا _ التعرف على فئات المكتبة

_الفئة  com.itextpdf.text.pdf.PdfReader ....وتستخدم تلك الفئة لقراءة ملفات PDF
_الفئة com.itextpdf.text.pdf.PdfWriter .....تستخدم تلك الفئة لكتابة ملفات PDF

_ الفئة com.itextpdf.text.Document هي الطبقة الرئيسية لتوليد وثيقة PDF. هذه هي الدرجة الأولى إلى أن يتم إنشاء مثيل. مرة واحدة وفيما يلي بعض من غيرها من الطبقات استخداما أدناه:

_ الفئة com.itextpdf.text.Paragraph........هذه الفئة تمثل الفقرة بادئة.

_ الفئة  com.itextpdf.text.Chapter تستخدم هذه الفئة لانشاء فصلا Chapter في وثيقة PDF. يتم إنشاؤه باستخدام الفقرة البادئة كعنوان والباحث ورقم الفصل.

-الفئة com.itextpdf.text.Font تحتوي هذه الفئة على كل مواصفات الخط، مثل عائلة الخط والحجم والنمط واللون.

_ الفئة com.itextpdf.text.List وهذه الفئة تستخدم لانشاء القوائم والتي، بدورها، يحتوي على عدد من ListItems.com.itextpdf.text.pdf.PDFPTable، وهذا هو الجدول الذي يمكن وضعها في موضع مطلق ولكن يمكن أيضا أن تضاف إلى الوثيقة باعتبارها فئة الجدول.


_ الفئة com.itextpdf.text.Anchor و تستخدم تلك الفئة فى انشاء الاشارات المرجعية

ثانيا _ كيفية أستخدام المكتبة

_ فى البداية قم بتحميل المكتبة من المرفقات
_ قم بإنشاء مشروع قياسى جديد
_من نافذة Explorer قم قم بالنقر يمين على المجلد Libraries ومن القائمة التى ستظهر أختر الامر Add Jar/Folder 
_ سيظهر لك مربع حوارى لاضافة ملف من نوع jar قم بالبحث عن الملف itextpdf-5.4.4.jar لاضافة للمشروع

ثالثا_ كتابة التعليمات البرمجية لانشاء ملفات PDF  

لكى تقوم بإنشاء مستند PDF بسيط يحتوي على بعض العناصر الأساسية نتبع التعليمات البرمجية التالية :

_ استيراد المكتبات التالية :

الرمز:
import java.io.FileOutputStream;
import java.util.Date;

import com.itextpdf.text.Anchor;
import com.itextpdf.text.BadElementException;
import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Chapter;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Element;
import com.itextpdf.text.Font;
import com.itextpdf.text.List;
import com.itextpdf.text.ListItem;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.Phrase;
import com.itextpdf.text.Section;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;
_  إنشاء مثيل من الكائن document object وذلك على النحو التالى :

الرمز:
Document document = new Document(PageSize.A4, 50, 50, 50, 50);
وكما ترون فى الكود أعلاه فإن انشاء مثيل للكائن document يتطلب 5 معطيات الاول لتحديد حجم الصفحة PageSize.A4 والاربعة الاخرى لتحديد هوامش الصفحة left, right, top, bottom على التوالى

_  لم يتم تعريف حتى الآن نوع من هذه الوثيقة المراد إنشائها باستخدام تلك المكتبة وذلك لكونها تستخدم وثائق بصيغ اخرى منها HtmlWriter, RtfWriter, XmlWriter لذلك سنقوم بتحديد نوع المستند المراد إنشائه و ذلك من خلال تعريف نوع الوثيقة على النحو التالى :

الرمز:
PdfWriter.getInstance(document, new FileOutputStream("c:/FirstPdf.pdf"));
document.open();
كما ترون كما بتحديد نوع الوثيقة PdfWriter وايضا كما ترون الوسيطة الأولى هي إشارة إلى كائن مستند ، والثاني هو اسم و مسار الملف الذي ستتم كتابة الإخراج. المقبل ، .....وبعد ذلك قمنا بفتح المستند للكتابة.

_الآن ، سوف نقوم بإضافة بعض النصوص للصفحة الأولى من الوثيقة مع تعين الإعدادات الافتراضية من الخط واللون ، والحجم ....الخ وذلك على النحو التالى :

الرمز:
Anchor anchorTarget = new Anchor("First page of the document.");
      anchorTarget.setName("BackToTop");
      Paragraph paragraph1 = new Paragraph();

      paragraph1.setSpacingBefore(50);

      paragraph1.add(anchorTarget);
      document.add(paragraph1);

document.add(new Paragraph("Some more text on the first page with different color and font type.",

FontFactory.getFont(FontFactory.COURIER, 14, Font.BOLD, new CMYKColor(0, 255, 0, 0))));
_ فى الكود أعلاه فى السطر الاول قمنا بإنشاء مثيل جديد من الكائن  Anchor وهو الذى يقوم بانشاء إشارة مرجعية ووضعنا له الاسم   BackToTop بحيث عند النقر على تلك الجملة يتم الذهاب الى النص الذى تم تمريره اليه وهو فى مثالنا هذا   First page of the document ...

.فى السطر الثانى و الثالث و الرابع قمنا بإنشاء مثيل جديد من الكائن Paragraph و الذى يستخدم فى إنشاء فقرة بادئة  ....فى السطر السادس قمنا بإضافة قيمة الكائن  paragraph1 ....أما السطر السابع قمنا باضافة بعض النصوص الى الصفحة ....أما السطر الاخير هو لتحديد نوع الخط و الحجم و الاستايل ولون النص ....الخ  و النتيجة كما فى الشكل التالى :


_فى الاعلا رأيت كيفية إضافة نص عادي في وثيقة PDF....لكن نحن بحاجة إلى إضافة بعض عناصر معقدة في المستند. دعونا نبدأ مع انشاء chapterا.وهو قسم خاص له بعض المميزات، والتي تبدأ مع صفحة جديدة، ويضم عددا عرضها بشكل افتراضي :

الرمز:
Paragraph title1 = new Paragraph("Chapter 1",

FontFactory.getFont(FontFactory.HELVETICA,18, Font.BOLDITALIC, new CMYKColor(0, 255, 255,17)));
  
Chapter chapter1 = new Chapter(title1, 1);
      
chapter1.setNumberDepth(0);
في التعليمات البرمجية قمنا بإنشاء كائن فصلا جديدا، chapter1، مع عنوان "This is Chapter 1" سوف تحديد عمق العدد إلى 0 يتم عرض رقم الفصل على الصفحة.

_ بعد ذلك سنقوم باإنشاء  Section و القسم هو عنصر فرعي من الفصل. ونحن إنشاء مقطع مع عنوان This is Section 1 in Chapter 1 "ثم نقوم باضفة بعض النصوص فى هذا القسم و ذلك على النحو التالى 

الرمز:
Paragraph title11 = new Paragraph("This is Section 1 in Chapter 1",

      FontFactory.getFont(FontFactory.HELVETICA, 16, Font.BOLD,
 
      new CMYKColor(0, 255, 255,17)));
  
Section section1 = chapter1.addSection(title11);

Paragraph someSectionText = new Paragraph("This

text comes as part of section 1 of chapter 1.");

section1.add(someSectionText);

someSectionText = new Paragraph("Following is a 3 X 2 table.");

section1.add(someSectionText);
_ سنقوم ايضا بإنشاء جدول يحتوى على عدد  من الصفوف والأعمدة.ويمكن استخدام خلية في صف واحد يمكن أن تمتد لأكثر من عمود واحد. وبالمثل، يمكن أن خلية واحدة في عمود تمتد أكثر من صف واحد....وذلك على النحو التالى :

الرمز:
PdfPTable t = new PdfPTable(3);

      t.setSpacingBefore(25);
      
      t.setSpacingAfter(25);
      
      PdfPCell c1 = new PdfPCell(new Phrase("Header1"));  
      
      t.addCell(c1);
      
      PdfPCell c2 = new PdfPCell(new Phrase("Header2"));
      
      t.addCell(c2);
      
      PdfPCell c3 = new PdfPCell(new Phrase("Header3"));
      
      t.addCell(c3);
      
      t.addCell("1.1");
      
      t.addCell("1.2");
      
      t.addCell("1.3");
      
      section1.add(t);
_ في التعليمات البرمجية أعلاه قمنا بإنشاء كائن PDFPTable مع ثلاثة أعمدة والحفاظ على إضافة الصفوف و خلق ثلاثة خلايا PDFPcell، مع نص مختلف. 

_ ايضا سنقوم باضفة صورة للصفحة pdf وذلك على النحو التالى :

الرمز:
Image image2 = Image.getInstance("IBMLogo.bmp");

      image2.scaleAbsolute(120f, 120f);
      
      section1.add(image2);
_ دعونا نرى كيفية إضافة القائمة إلى وثيقة PDF. يحتوي على قائمة بعدد من ListItems. يمكن أن يتم ترقيم قائمة أو غير مرقمة. تمرير الوسيطة الأولى على النحو الصحيح يعني أنك تريد إنشاء قائمة مرقمة

الرمز:
List l = new List(true, false, 10);

l.add(new ListItem("First item of list"));

l.add(new ListItem("Second item of list"));

section1.add(l);
_ وأخيرا نقوم بإضافة   الى الوثيقة الرئسية و اغلاق المستند على النحو التالى :

الرمز:
document.add(chapter1);

document.close();
و النتيجة على النحو التالى :



رابعا : قراءة ملفات PDF 

المكتبة iText تسمح لقراءة ملفات PDF الخاصة بك....وذلك من خلال استخدام الفئة pdf.PdfReader  و المثال التالى يوضح كيفية فعل ذلك

الرمز:
import java.io.FileOutputStream;
import java.io.IOException;

import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Image;
import com.itextpdf.text.pdf.PdfImportedPage;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfWriter;

public class ReadAndUsePdf {
  private static String INPUTFILE = "c:/temp/FirstPdf.pdf";
  private static String OUTPUTFILE = "c:/temp/ReadPdf.pdf";

  public static void main(String[] args) throws DocumentException,
      IOException {
    Document document = new Document();

    PdfWriter writer = PdfWriter.getInstance(document,
        new FileOutputStream(OUTPUTFILE));
    document.open();
    PdfReader reader = new PdfReader(INPUTFILE);
    int n = reader.getNumberOfPages();
    PdfImportedPage page;
    // Go through all pages
    for (int i = 1; i <= n; i++) {
      // Only page number 2 will be included
      if (i == 2) {
        page = writer.getImportedPage(reader, i);
        Image instance = Image.getInstance(page);
        document.add(instance);
      }
    }
    document.close();

  }

}
وشكرا لكم و الى اللقاء فى درس جديد إن شاء الله تعالى

ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم

إن فقدت مكان بذورك التي بذرتها يوما ما سيخبرك المطر أين زرعتها ..لذا إبذر الخير فوق أي أرض وتحت أي سماء ومع أي أحد.. فأنت لا تعلم أين تجده ومتى تجده؟! إزرع جميلا ولو في غير موضعه .... فلا يضيع جميلا أينما زرعا .. فما أجمل العطاء... فقد تجد جزاءه في الدنيا أو يكون لك ذخرا في الآخرة

أحمد مناع
.
.

تاريخ التسجيل : 15/02/2011
المساهمات : 809
النقاط : 1478
التقيم : 69
الدولة : مصر
الجنس : ذكر

http://egy-tech.forumegypt.net

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: إنشاء و قراءة ملفات PDF من خلال تطبيقات الجافا

مُساهمة من طرف أحمد مناع في الأحد سبتمبر 22, 2013 9:27 pm

رابط تحميل المكتبة 

http://www.ziddu.com/download/23014790/itextpdf_5.4.4.zip.html

ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم

إن فقدت مكان بذورك التي بذرتها يوما ما سيخبرك المطر أين زرعتها ..لذا إبذر الخير فوق أي أرض وتحت أي سماء ومع أي أحد.. فأنت لا تعلم أين تجده ومتى تجده؟! إزرع جميلا ولو في غير موضعه .... فلا يضيع جميلا أينما زرعا .. فما أجمل العطاء... فقد تجد جزاءه في الدنيا أو يكون لك ذخرا في الآخرة

أحمد مناع
.
.

تاريخ التسجيل : 15/02/2011
المساهمات : 809
النقاط : 1478
التقيم : 69
الدولة : مصر
الجنس : ذكر

http://egy-tech.forumegypt.net

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: إنشاء و قراءة ملفات PDF من خلال تطبيقات الجافا

مُساهمة من طرف Hossam في الأربعاء سبتمبر 25, 2013 10:40 pm

السلام عليكم
شكراا على الشرح الرائع بس حضرتك لم توضح الجزء الخاص بكيفية استعمال ال anchor
بمعنى ان اخر صفحة اللى مكتوب فيها
Using Anchor
back to top
مش موجودة فى الشرح

و ياريت لو تشرح السطر ده
الرمز:
chapter1.setNumberDepth(0);
,و ايه لازمة ال 1 اللى هنا
الرمز:
Chapter chapter1 = new Chapter(title1, 1);

Hossam
.
.

تاريخ التسجيل : 25/09/2013
المساهمات : 5
النقاط : 5
التقيم : 0
الدولة : مصر
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: إنشاء و قراءة ملفات PDF من خلال تطبيقات الجافا

مُساهمة من طرف Hossam في الأربعاء سبتمبر 25, 2013 10:45 pm

و بالنسبة لقراءة ال PDF
الجزء بتاع ImportedPage  مش واضح هو ايه دوره

Hossam
.
.

تاريخ التسجيل : 25/09/2013
المساهمات : 5
النقاط : 5
التقيم : 0
الدولة : مصر
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: إنشاء و قراءة ملفات PDF من خلال تطبيقات الجافا

مُساهمة من طرف زهراء في الخميس سبتمبر 26, 2013 8:37 pm


جزاك الله خيرا أخى احمد على هذا الدرس الشيق فعلا ....

أخى حسام أهلا وسهلا بيك أولا ....ثانيا فانلسبة لاستفساراتك 

_ بالنسبة لاستعمال الكائن  anchor  يقوم بانشاء إشارة مرجعية ....بمعنى لو أن المستند مكون من عدة صفحات و اريد أن يستطيع المستخدم النقر على كلمة معينة ليتم أنتقاله الى صفحة أخرى أو الى مكان معين فى نفس الصفحة ....و ذلك على النحو التالى :

الرمز:
Anchor anchorTarget = new Anchor("شرح قواعد البيانات.");
      anchorTarget.setName("أذهب الى فصل");
    
كما ترى ....فى الكود أعلاه فى السطر الاول قمنا بإنشاء مثيل جديد من الكائن Anchorلانشاء إشارة مرجعية ووضعنا له الاسم أذهب الى فصل قواعد البيانات  بحيث عند النقر على تلك الجملة يتم الذهاب الى النص الذى تم تمريره اليه وهو فى مثالنا هذا "شرح قواعد البيانات"


بالنسبة للكود التالى :

الرمز:
chapter1.setNumberDepth(0);
هو لترقيم الصفحات ....ففى الكود السابق يتم عرض رقم الفصل على الصفحة
أما الكود التالى

الرمز:
Chapter chapter1 = new Chapter(title1, 1);

وهو لترتيب الصفحات أو الفصول chapter1 فى القائمة الجانيبة لملف pdf ...فمثلا فى المثال السابق وضعنا الرقم (1) ليكون هذه الصفحة فى أول القائمة  كما فى الصورة التالية


زهراء
........
........

تاريخ التسجيل : 18/02/2011
المساهمات : 262
النقاط : 372
التقيم : 24
الدولة : مصر
الجنس : انثى

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: إنشاء و قراءة ملفات PDF من خلال تطبيقات الجافا

مُساهمة من طرف أحمد مناع في الجمعة سبتمبر 27, 2013 5:37 pm

أخى الكريم حسام ...أهلا وسهلا بكم و شكرا لتسجيلك فى منتدى مصر التقنى و نتمنى أن نكون عند حسن ظنك ...

فى الدياة ارجوا المعذرة للتأخر فى الرد على استفساراتك وذلك لكون المدينة التى نقيم بها حاليا ( الخرطوم) تشهد بعض الاحتجاجات المأساوية و التى قامت على اثرها السلطات بأغلاق شبكة الانترنت منذ صباح أمس حتى كتابة تلك السطور ...

_ وأشكر الاخت الكريمة زهراء على جهدها فى الرد عليك ...فجزاها الله خيرا ...لكن ردها جانب الصواب فى شىء بسيط ...

بالنسبة لهذا الكود 

الرمز:
Chapter chapter1 = new Chapter(title1, 1);
هو لانشاء فصل جديد و يتطلب معطيان ...الاول أسم أو عنوان الفصل title1...و الثانى رقم الفصل 1

_ وفى القائمة الجانبية التى تحدثت عنها الاخت زهراء ستجد اسم و رقم الفصل ...لذلك إن أحببت أن يظهر أسم الفصل فقط دون الرقم يجب جعل قيمة الخاصية setNumberDepth تساوى صفر لذلك أستخدمنا الكود التالى :

الرمز:
chapter1.setNumberDepth(0);
بانسبة للكائن ImportedPage ....هذا الكائن يستخدم لاسناد ما يتم قرائته من مستند pdf ...ففى المثال قمنا باستخدامه على النحو التالى :

_ قمنا بالاعلان عنه

الرمز:
PdfImportedPage page;
_ بعد ذلك قمنا باسناد ما تم قرائته اليه

الرمز:
page = writer.getImportedPage(reader, i);

و أتمنى ان يكون الشرح واضح ونحن جميعا سعداء باى استفسار اخر ....وفى النهاية اشكر الاخت زهراء مجهودها ....جزاها الله كل خير






ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم

إن فقدت مكان بذورك التي بذرتها يوما ما سيخبرك المطر أين زرعتها ..لذا إبذر الخير فوق أي أرض وتحت أي سماء ومع أي أحد.. فأنت لا تعلم أين تجده ومتى تجده؟! إزرع جميلا ولو في غير موضعه .... فلا يضيع جميلا أينما زرعا .. فما أجمل العطاء... فقد تجد جزاءه في الدنيا أو يكون لك ذخرا في الآخرة

أحمد مناع
.
.

تاريخ التسجيل : 15/02/2011
المساهمات : 809
النقاط : 1478
التقيم : 69
الدولة : مصر
الجنس : ذكر

http://egy-tech.forumegypt.net

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: إنشاء و قراءة ملفات PDF من خلال تطبيقات الجافا

مُساهمة من طرف Hossam في الجمعة سبتمبر 27, 2013 11:20 pm

شكراا على ترحيبكم بى
و شكرااا على ردودكم
و اتمنى للسودان كل خير و ان تمر الاوضاع الحالية الى ما فيه خير البلاد باقل الاضرار


و  بالنسبة للجزء الخاص بال anchor فانا افهم الفكرة التى يعمل على اساسها و لكن المشكلة ان الشرح لم يوضح متى نضع الجملة التى سيضغط عليها المستخدم فيدهب للجزء المخصص الدى سيأخده اليه ال anchor
و فى حالة شرح الاخت زهراء فانا اعنى جملة (((ادهب الى الفصل)))
و فى حالة الشرح الاساسى فانا اعنى جملة(((Back To Top)))
لم يتم التوضيح كيف يتم ادخالهما

و اما بقية الاجزاء فان شرحكم استوفى جميع الجوانب
جزاكم الله خيراا

Hossam
.
.

تاريخ التسجيل : 25/09/2013
المساهمات : 5
النقاط : 5
التقيم : 0
الدولة : مصر
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: إنشاء و قراءة ملفات PDF من خلال تطبيقات الجافا

مُساهمة من طرف أحمد مناع في السبت سبتمبر 28, 2013 10:48 am

بالنسبة للجزء الخاص بال anchor فانا افهم الفكرة التى يعمل على اساسها و لكن المشكلة ان الشرح لم يوضح متى نضع الجملة التى سيضغط عليها المستخدم فيدهب للجزء المخصص الدى سيأخده اليه ال anchor
و فى حالة شرح الاخت زهراء فانا اعنى جملة (((ادهب الى الفصل)))
و فى حالة الشرح الاساسى فانا اعنى جملة(((Back To Top)))
لم يتم التوضيح كيف يتم ادخالهما
اهلا وسهلا بك أخى الكريم حسام ....أرجوا المعذرة فالشرح فعلا ليس كافيا ...بالنسبة لعمل ارتباط داخلى على النحو التالى :

_ أولا يتم تجهيز النص الذى سيتم النقر عليه على النحو التالى :

الرمز:
Anchor anchor = new Anchor("Go to  a chapter2.");
       anchor.setReference("#ggg");
        Paragraph paragraph = new Paragraph();
        paragraph.add(anchor);
وكما ترى فى الكود لإنشاء ارتباط داخلي يجب علينا تنسيق إشارة المرجع باستخدام setReference مع وضع حرف # قبل اسم المرجع ggg ...ثم قمنا بتخزينة فى فقرة بادئة بأسم paragraph

_نقوم بعد ذلك بتجهيز النص المراد الوصول اليه عند النقر على النص السابق على النحو التالى :

الرمز:
Anchor anchorTarget = new Anchor("This is the chapter2.");
       anchorTarget.setName("ggg");
       Paragraph targetParagraph = new Paragraph();
       targetParagraph.add(anchorTarget);
هنا سيتم الوصول الى النص This is the chapter2 مع تعين اسم المرجع ggg ...معنى ذلك لو أن اسم المرجع كان fff فيجب تعين اسم المرجع الى fff وهكذا ... ويمكنك مالحظة اننا استخدمنا الرابط الداخلى كفقرة بادئة بأسم targetParagraph

ويتم اضافة للصفحة كما تحب أنت ....فمثلا سأقوم بوضع النص الذى سيتم النقر عليه فى chapter1 على النحو التالى :

الرمز:
document.add(chapter1);
      document.add(paragraph);
فى السطر الاول قمنا باضافة chapter1 الى مستند pdf
فى السطر الثانى قمنا باضافة paragraph الى مستند pdf فى نفس chapter1

_ سأقوم بعد ذلك بوضع النص الذى سيتم الوصول الية فى chapter2 على النحو التالى :

الرمز:
document.add(chapter2);
      document.add(targetParagraph);
و اليك المثال بالكامل

الرمز:

package pdf;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;

import com.itextpdf.text.Anchor;
import com.itextpdf.text.Chapter;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.Section;
import com.itextpdf.text.pdf.PdfWriter;

public class Pdf {

  
   public static void main(String[] args) throws DocumentException, FileNotFoundException {
    Document document = new Document();

    try {
      PdfWriter.getInstance(document,
            new FileOutputStream("test.pdf"));

      document.open();
      
       Anchor anchor = new Anchor("Go to  a chapter2.");
       anchor.setReference("#ggg");
        Paragraph paragraph = new Paragraph();
        paragraph.add(anchor);
        
       Anchor anchorTarget = new Anchor("This is the chapter1.");
       anchorTarget.setName("ggg");
       Paragraph targetParagraph = new Paragraph();
       targetParagraph.add(anchorTarget);
      
      
   
     
      Chapter chapter1 = new Chapter("This is a chapter1.", 1);

      Section section1 = chapter1.addSection("This is section 1");
      Section section2 = chapter1.addSection("This is section 2");
      
      Chapter chapter2 = new Chapter("This is a chapter2.", 2);
            

     Section section3 = chapter2.addSection("This is section 3");
      Section section4 = chapter2.addSection("This is section 4");
      
    
     document.add(chapter1);
      document.add(paragraph);
      
      document.add(chapter2);
      document.add(targetParagraph);
    
    
   
     
      document.close();

    } catch (DocumentException e) {
      e.printStackTrace();
    } catch (FileNotFoundException e) {
      e.printStackTrace();
    }
      
    }
}
ويجب ملاحظة أننا لم نستخد الخاصية chapter1.setNumberDepth(0); و بالتالى ستجد اسماء الفصول بالاضافة الى ارقامها كما فى الشكل التالى :


ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم

إن فقدت مكان بذورك التي بذرتها يوما ما سيخبرك المطر أين زرعتها ..لذا إبذر الخير فوق أي أرض وتحت أي سماء ومع أي أحد.. فأنت لا تعلم أين تجده ومتى تجده؟! إزرع جميلا ولو في غير موضعه .... فلا يضيع جميلا أينما زرعا .. فما أجمل العطاء... فقد تجد جزاءه في الدنيا أو يكون لك ذخرا في الآخرة

أحمد مناع
.
.

تاريخ التسجيل : 15/02/2011
المساهمات : 809
النقاط : 1478
التقيم : 69
الدولة : مصر
الجنس : ذكر

http://egy-tech.forumegypt.net

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: إنشاء و قراءة ملفات PDF من خلال تطبيقات الجافا

مُساهمة من طرف Solutions1 في السبت سبتمبر 28, 2013 3:11 pm

لقد قرات فى هذا المنتدى من المقالات التى لم اجدها فى اى منتدى عربى اخر أستمروا يا شباب ولكم نجاح باهر باذن الله تعالى

Solutions1
..
..

تاريخ التسجيل : 31/08/2013
المساهمات : 22
النقاط : 30
التقيم : 0
الدولة : السعودية
الجنس : انثى

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: إنشاء و قراءة ملفات PDF من خلال تطبيقات الجافا

مُساهمة من طرف زهراء في السبت سبتمبر 28, 2013 5:46 pm

_ وأشكر الاخت الكريمة زهراء على جهدها فى الرد عليك ...فجزاها الله خيرا ...لكن ردها جانب الصواب فى شىء بسيط ... كتب:
أرجوا المعذرة scratch scratch scratch 

زهراء
........
........

تاريخ التسجيل : 18/02/2011
المساهمات : 262
النقاط : 372
التقيم : 24
الدولة : مصر
الجنس : انثى

الرجوع الى أعلى الصفحة اذهب الى الأسفل

قراءة ملف pdf عربي

مُساهمة من طرف infomath في الإثنين فبراير 03, 2014 9:50 am

السلام عليكم 
شكرا لكم على هذا المنتدى وعلى هذا الموضوع 
أنا بصدد عمل برنامج  في جافا واحتاج إلى قراءة ملف pdf مكتوب باللغة العربية بال  
arabic unicode
لاجل ذلك اضفت الى الكود الذي كتبته أخي احمد الامر التالي داخل for

 ;((System.out.println(n+"  "+ PdfTextExtractor.getTextFromPage(reader, i
كي اتحصل على نص الصفحة الثانية 
لكم ما تحصلت عليه هو اشكال وعلامات استفهام
من فضلكم ساعدوني 
جزاكم الله خيرا

infomath
زائر


الرجوع الى أعلى الصفحة اذهب الى الأسفل

استعرض الموضوع السابق استعرض الموضوع التالي الرجوع الى أعلى الصفحة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى