اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر

يتم قراءة ملفات PDF في جافا باستخدام PdfReader.

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

 

import java.io.FileOutputStream;

import com.lowagie.text.Document;
import com.lowagie.text.PageSize;
import com.lowagie.text.Paragraph;
import com.lowagie.text.pdf.PdfReader;
import com.lowagie.text.pdf.PdfStamper;
import com.lowagie.text.pdf.PdfWriter;

أنشئ كائن object من الصف PdfReader class و مرر اسم الملف الذي تريد القراءة منه في المنشئ constructor

 PdfReader reader = new PdfReader("2.pdf");

استدعي الدالة getPageContent التي تقوم بإرجاع مصفوفة من نوع byte لمحتوى صفحة في ملف PDF. تأخذ الدالة getPageContent معاملًا واحدًا وهو رقم الصفحة

 byte[] streamBytes = reader.getPageContent(1);

لتحويل المصفوفة من نوع byte إلى سلسلة نصية String اكتب الشيفرة التالية:

  String contentStream = new String(streamBytes);

لطباعة محتوى الصفحة اكتب

  System.out.println(contentStream);

مثال كامل:

import java.io.FileOutputStream;

import com.lowagie.text.Document;
import com.lowagie.text.PageSize;
import com.lowagie.text.Paragraph;
import com.lowagie.text.pdf.PdfReader;
import com.lowagie.text.pdf.PdfStamper;
import com.lowagie.text.pdf.PdfWriter;

public class MainClass {
  public static void main(String[] args) throws Exception {
    Document document = new Document(PageSize.A6);
    PdfWriter.getInstance(document, new FileOutputStream("2.pdf"));
    document.open();
    document.add(new Paragraph("Hello World"));
    document.add(new Paragraph("Hello People"));
    document.close();

    PdfReader reader = new PdfReader("2.pdf");
    byte[] streamBytes = reader.getPageContent(1);
    String contentStream = new String(streamBytes);
    System.out.println(contentStream);
    StringBuffer buf = new StringBuffer();
    int pos = contentStream.indexOf("Hello World") + 11;
    buf.append(contentStream.substring(0, pos));
    buf.append(", Hello ");
    buf.append(contentStream.substring(pos));
    String hackedContentStream = buf.toString();
    PdfStamper stamper = new PdfStamper(reader, new FileOutputStream("HelloWorldStreamHack.pdf"));
    reader.setPageContent(1, hackedContentStream.getBytes());
    stamper.close();
  }

}

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...