অ্যান্ড্রয়েড অ্যাপে পিডিএফ কীভাবে তৈরি করবেন? [বন্ধ]


147

অ্যান্ড্রয়েড অ্যাপ্লিকেশন থেকে পিডিএফ ফাইলগুলি তৈরি করার কোনও উপায় আছে কি?


6
অ্যান্ড্রয়েডের ইমেজিং মডেল কিউটিস থেকে কিছু অনুপ্রেরণা নিলে ভাল লাগবে না? কিউটি প্রতিষ্ঠিত করেছে যে পিডিএফ তৈরি বা এসভিজি তৈরি করা পর্দায় আঁকার জন্য একই কোডটিকে পুনর্নির্দেশের মতোই সহজ হতে পারে। প্যাটার্নটির জন্য কিউপিন্ট ডিভাইস থেকে কিউপ্রিন্টার, কিউএসভিজিগেনেটর এবং কিউবিজেটের ডাইরিভিশন দেখুন।
কালাফ

1
আইওএস এ একই। পিডিএফ প্রজন্ম অন্তর্নির্মিত।
ফ্যাবিয়ান জিন্ডল

2
আমি বিশ্বাস করি কিট ক্যাট পিডিএফ উত্পন্ন করার জন্য একটি বৈশিষ্ট্য রয়েছে তবে আমি জানি না এটি পিছনের দিকে সামঞ্জস্যপূর্ণ কিনা। আমি নীচে একটি বিকল্প পোস্ট করেছি এবং নীচের সাইটটি বাণিজ্যিক থেকে বিনামূল্যে বিভিন্ন বিকল্পের তালিকা দিয়েছে: stefan.fenz.at/creating-pdfs-on-android-an- মূল্যায়ন
IcedDante

5
হাস্যকর যে এটি "অফ-টপিক" হিসাবে বন্ধ ছিল।
জো কোডার

2
কেন এই পোস্ট বন্ধ ছিল? স্ট্যাকওভারফ্লো তার সুযোগ সম্পর্কে খুব পিক; এই প্রশ্নের 175,000 মতামত রয়েছে, কোডিং সংস্থান হিসাবে এই সাইটের এই জাতীয় হাইপার-সাধারণ জিনিসগুলির অনুমতি দেওয়া উচিত, নিয়মগুলিতে সংশোধন করা দরকার, আমরা নিয়মকে কেন্দ্র করে "অফ-টপিক" এর আক্ষরিক পাঠ্যের আরও অনেক দূরে পড়েছি। আমি এটি পুনরায় খোলার জন্য পতাকাঙ্কিত করেছি, আশা করি অন্যরাও ভোট দেবেন।
অ্যালবার্ট রেনশো

উত্তর:


155

যদি কেউ অ্যান্ড্রয়েড ডিভাইসে পিডিএফ তৈরি করতে চায় তবে এটি কীভাবে করবেন তা এখানে:


54
কেবলমাত্র আইটেক্সটে সমস্যা হ'ল এটি একটি জিপিএলভি 3 লাইসেন্স, অন্যথায় আপনাকে অবশ্যই বাণিজ্যিক লাইসেন্স কিনতে হবে।
টনি মারো

5
এবং আইটেক্সটের আগের সংস্করণগুলিতে java.awt.Coror wich dalvik সমর্থন করে না এমন কিছু অনুপস্থিত নির্ভরতা রয়েছে
কে-

3
@ কেপে 123 হাস্যরসের সুন্দর অনুভূতি :-)
এজেড_

10
কমন্সওয়্যার জেনেরিক পরাজয়বাদী উত্তর ... বন্ধ করে দেওয়া।
মুনলাইটচিজ

2
কমার্সিয়াল লাইসেন্সের জন্য অ্যান্ড্রয়েড ডিভাইস প্রতি প্রায় 0.50 মার্কিন ডলার (0,42 EUR) খরচ হয়। (11-2013)
Chris623

104

আপনি যদি এপিআই লেভেল 19 বা তত্সহ উচ্চতর ডিভাইসের জন্য বিকাশ করছেন তবে আপনি প্রিন্টডপিডিএফ ডকুমেন্টে বিল্টটি ব্যবহার করতে পারেন: http://developer.android.com/references/android/print/pdf/PrintedPdfDocament.html

// open a new document
PrintedPdfDocument document = new PrintedPdfDocument(context,
     printAttributes);

// start a page
Page page = document.startPage(0);

// draw something on the page
View content = getContentView();
content.draw(page.getCanvas());

// finish the page
document.finishPage(page);
. . .
// add more pages
. . .
// write the document content
document.writeTo(getOutputStream());

//close the document
document.close();

2
অবশেষে এটি আইওএস এর অংশ হিসাবে অ্যান্ড্রয়েড এর অংশ।
ললিটম

5
@ Chris623 আমি মনে করি আপনি "কিটকাট" বোঝাতে চেয়েছিলেন ... :)
অ্যান্ড্রয়েড বিকাশকারী

7
@ ললিটম এটি আইওএসের মতো নয়। আইওএসে উত্পন্ন পিডিএফ-এ ডকটিতে লিখিত নির্বাচনযোগ্য পাঠ্য রয়েছে। তবে অ্যান্ড্রয়েডে এটি একটি চিত্র।
কন্টেশ

2
@ উইল্টহোমসন আপনার গিটহাব লিঙ্কটি এই এক বা অন্য কিছু হতে পারে?
jk7

3
অনেক ধন্যবাদ - দরকারী লিঙ্কটি এখানে github.com/IanDarwin/Android-Cookbook- উদাহরণস্বরূপ
কিবি

27

জটিল বৈশিষ্ট্য সহ পিডিএফ তৈরির কৌশলটি হ'ল কাঙ্ক্ষিত এক্সএমএল লেআউট সহ একটি ডামি ক্রিয়াকলাপ তৈরি করা। তারপরে আপনি এই ডামি ক্রিয়াকলাপটি খুলতে পারবেন, প্রোগ্রামালিমে স্ক্রিনশট নিতে এবং এই লাইব্রেরিটি ব্যবহার করে সেই চিত্রটিকে পিডিএফ তে রূপান্তর করতে পারেন । অবশ্যই কিছু সীমাবদ্ধতা যেমন স্ক্রোল সক্ষম না হওয়া, একাধিক পৃষ্ঠার নয়, তবে একটি সীমাবদ্ধ প্রয়োগের জন্য এটি দ্রুত এবং সহজ। আশা করি এটি কাউকে সাহায্য করবে!


2
এটি সর্বনিম্ন 1 আপ প্রাপ্য।
রাহুল রাস্তোগি

আমার জন্য কাজ। একটি সহজ বাস্তবায়ন ছিল।
থারকানাर्मানা

একটি দুর্দান্ত কাজ শুরু
কুমার সৌরভ

এই মন্তব্যটি আমাকে সঠিক দিক নির্দেশ করে। তবে: ১. স্ক্রিন শট নেওয়ার জন্য আপনার কোনও ক্রিয়াকলাপ শুরু করার দরকার নেই! আপনি রানটাইমের সময় একটি এক্সএমএল লেআউটকে স্ফীত করতে পারেন এবং এটিকে এখানে প্রস্তাবিত বিটম্যাপে রূপান্তর করতে পারেন ; বলা হচ্ছে, আপনি বিভিন্ন লেআউট সহ একাধিক পৃষ্ঠা তৈরি করতে পারেন। বলা হচ্ছে হিসাবে স্ক্রোল সমর্থিত নয় তবে আপনি একটি তালিকা ব্যবহার করে উদাহরণস্বরূপ, একটি রৈখিক বিন্যাস ব্যবহার করতে পারেন।
r.pedrosa

11

অ্যান্ড্রয়েডে অ-ইংরেজী অক্ষরের সাথে একটি স্বেচ্ছাসেবী এইচটিএমএলকে পিডিএফ রূপান্তর করার সমস্যার সম্পূর্ণ সমাধান পাওয়া সহজ নয়। আমি এটি রাশিয়ান ইউনিকোড অক্ষরের জন্য পরীক্ষা করি।

আমরা তিনটি গ্রন্থাগার ব্যবহার করি:

(1) এইচটিএমএল থেকে এক্সএইচটিএমএল রূপান্তরকরণের জন্য জসপ (jsoup-1.7.3.jar),

(২) আইটেক্সটপিডিএফ (পুনরুক্তিপিডিএফ -৫.৫.০.জার),

(3) এক্সএমএল ওয়ার্কার (এক্সএমএল ওয়ার্কার -5.5.1.jar)।

public boolean createPDF(String rawHTML, String fileName, ContextWrapper context){
    final String APPLICATION_PACKAGE_NAME = context.getBaseContext().getPackageName();
    File path = new File( Environment.getExternalStorageDirectory(), APPLICATION_PACKAGE_NAME );
    if ( !path.exists() ){ path.mkdir(); }
    File file = new File(path, fileName);

    try{

    Document document = new Document();
    PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(file));
    document.open();

    // Подготавливаем HTML
    String htmlText = Jsoup.clean( rawHTML, Whitelist.relaxed() );
    InputStream inputStream = new ByteArrayInputStream( htmlText.getBytes() );

    // Печатаем документ PDF
    XMLWorkerHelper.getInstance().parseXHtml(writer, document,
        inputStream, null, Charset.defaultCharset(), new MyFont());

    document.close();
    return true;

    } catch (FileNotFoundException e) {
        e.printStackTrace();
        return false;
    } catch (DocumentException e) {
        e.printStackTrace();
        return false;
    } catch (IOException e) {
        e.printStackTrace();
        return false;
    } 

আইটিেক্সটপিডিএফ এক্সএমএল ওয়ার্কার লাইব্রেরি ব্যবহার করে পিডিএফে রাশিয়ান বর্ণগুলি প্রদর্শন করা কঠিন সমস্যা। এর জন্য আমাদের ফন্টপ্রোভাইডার ইন্টারফেসের নিজস্ব প্রয়োগ তৈরি করা উচিত:

public class MyFont implements FontProvider{
    private static final String FONT_PATH = "/system/fonts/DroidSans.ttf";
    private static final String FONT_ALIAS = "my_font";

    public MyFont(){ FontFactory.register(FONT_PATH, FONT_ALIAS); }

    @Override
    public Font getFont(String fontname, String encoding, boolean embedded,
        float size, int style, BaseColor color){

        return FontFactory.getFont(FONT_ALIAS, BaseFont.IDENTITY_H, 
            BaseFont.EMBEDDED, size, style, color);
    }

    @Override
    public boolean isRegistered(String name) { return name.equals( FONT_ALIAS ); }
}

এখানে আমরা স্ট্যান্ডার্ড অ্যান্ড্রয়েড ফন্ট ড্রয়েড সান ব্যবহার করি যা সিস্টেম ফোল্ডারে অবস্থিত:

private static final String FONT_PATH = "/system/fonts/DroidSans.ttf";

1
আপনার শেয়ারের জন্য ধন্যবাদ! আমার একটি প্রশ্ন আছে: আমরা কি এইচটিএমএলে কোনও সিএসএস বিধি প্রয়োগ করতে পারি?
ফুওং

6

কিছুটা দেরি হয়ে গেছে এবং আমি এখনও এটি পরীক্ষা করেছি না তবে বিএসডি লাইসেন্সের অধীনে থাকা অন্য একটি গ্রন্থাগার হ'ল অ্যান্ড্রয়েড পিডিএফ রাইটার

আপডেট আমি নিজে লাইব্রেরি চেষ্টা করেছি। সাধারণ পিডিএফ প্রজন্মের সাথে ঠিকঠাক কাজ করে (এটি পাঠ্য, লাইন, আয়তক্ষেত্র, বিটম্যাপস, ফন্টগুলি যুক্ত করার জন্য পদ্ধতি সরবরাহ করে)। একমাত্র সমস্যাটি হ'ল উত্পন্ন পিডিএফ মেমরির একটি স্ট্রিংয়ে সঞ্চয় করা হয়, এটি বড় নথিতে মেমরির সমস্যার কারণ হতে পারে।


কেউ কি আমাকে বলতে পারেন যে অ্যান্ড্রয়েড পিডিএফ রাইটার কী করতে পারে না, "পুনরুক্তি" পারে?
এম উসমান খান

1
বজায় নেই !! শেষ আপডেট: 2015-12-14
মাহদি

2

পিডিএফ জেট তাদের লাইব্রেরির একটি ওপেন-সোর্স সংস্করণ সরবরাহ করে যা কোনও পিডিএফ প্রজন্মের কোনও বেসিক টাস্ক পরিচালনা করতে সক্ষম হওয়া উচিত। এটি একটি সম্পূর্ণ জাভা ভিত্তিক সমাধান এবং এটি অ্যান্ড্রয়েডের সাথে সামঞ্জস্যপূর্ণ বলে উল্লেখ করা হয়েছে। কিছু অতিরিক্ত বৈশিষ্ট্য সহ একটি বাণিজ্যিক সংস্করণ রয়েছে যা খুব ব্যয়বহুল বলে মনে হয় না।


4
আর কোনও মুক্ত উত্স নয়
জোশি ফ্রান্সিস

0

দেরীতে, তবে অনুরোধের সাথে প্রাসঙ্গিক এবং আশাবাদী সহায়ক। যদি কোনও বাহ্যিক পরিষেবা ব্যবহার করা হয় (যেমন কমন্সওয়্যারের প্রতিক্রিয়া অনুসারে) তবে ডকমোসিসের একটি ক্লাউড পরিষেবা রয়েছে যা সহায়তা করতে পারে - ভারী প্রক্রিয়াজাতকরণকারী একটি ক্লাউড পরিষেবাতে অফলোডিং প্রসেসিং। এই পদ্ধতির কিছু পরিস্থিতিতে আদর্শ তবে অবশ্যই নেট-সংযুক্ত হওয়ার উপর নির্ভর করে।


0

আপনি PoDoFo লাইব্রেরি ব্যবহার করতে পারেন । মূল লক্ষ্য এটি এলজিপিএল এর অধীনে প্রকাশিত হয়। যেহেতু এটি সি ++ তে লেখা হয়েছে আপনার এনডিকে ব্যবহার করে এটি ক্রস-সংকলন করা উচিত এবং সি-সাইড এবং জাভা রেপার লিখুন। তৃতীয় পক্ষের গ্রন্থাগারগুলির কয়েকটি ওপেনসিভি প্রকল্প থেকে ব্যবহার করা যেতে পারে । ওপেনসিভি প্রকল্পেও ইউ android.toolchain.cmakeফাইল খুঁজে পেতে পারে যা আপনাকে উত্পন্ন করতে সহায়তা করবে Makefile

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.