অ্যান্ড্রয়েড অ্যাপ্লিকেশন থেকে পিডিএফ ফাইলগুলি তৈরি করার কোনও উপায় আছে কি?
অ্যান্ড্রয়েড অ্যাপ্লিকেশন থেকে পিডিএফ ফাইলগুলি তৈরি করার কোনও উপায় আছে কি?
উত্তর:
যদি কেউ অ্যান্ড্রয়েড ডিভাইসে পিডিএফ তৈরি করতে চায় তবে এটি কীভাবে করবেন তা এখানে:
আপনি যদি এপিআই লেভেল 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();
জটিল বৈশিষ্ট্য সহ পিডিএফ তৈরির কৌশলটি হ'ল কাঙ্ক্ষিত এক্সএমএল লেআউট সহ একটি ডামি ক্রিয়াকলাপ তৈরি করা। তারপরে আপনি এই ডামি ক্রিয়াকলাপটি খুলতে পারবেন, প্রোগ্রামালিমে স্ক্রিনশট নিতে এবং এই লাইব্রেরিটি ব্যবহার করে সেই চিত্রটিকে পিডিএফ তে রূপান্তর করতে পারেন । অবশ্যই কিছু সীমাবদ্ধতা যেমন স্ক্রোল সক্ষম না হওয়া, একাধিক পৃষ্ঠার নয়, তবে একটি সীমাবদ্ধ প্রয়োগের জন্য এটি দ্রুত এবং সহজ। আশা করি এটি কাউকে সাহায্য করবে!
অ্যান্ড্রয়েডে অ-ইংরেজী অক্ষরের সাথে একটি স্বেচ্ছাসেবী এইচটিএমএলকে পিডিএফ রূপান্তর করার সমস্যার সম্পূর্ণ সমাধান পাওয়া সহজ নয়। আমি এটি রাশিয়ান ইউনিকোড অক্ষরের জন্য পরীক্ষা করি।
আমরা তিনটি গ্রন্থাগার ব্যবহার করি:
(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";
কিছুটা দেরি হয়ে গেছে এবং আমি এখনও এটি পরীক্ষা করেছি না তবে বিএসডি লাইসেন্সের অধীনে থাকা অন্য একটি গ্রন্থাগার হ'ল অ্যান্ড্রয়েড পিডিএফ রাইটার ।
আপডেট আমি নিজে লাইব্রেরি চেষ্টা করেছি। সাধারণ পিডিএফ প্রজন্মের সাথে ঠিকঠাক কাজ করে (এটি পাঠ্য, লাইন, আয়তক্ষেত্র, বিটম্যাপস, ফন্টগুলি যুক্ত করার জন্য পদ্ধতি সরবরাহ করে)। একমাত্র সমস্যাটি হ'ল উত্পন্ন পিডিএফ মেমরির একটি স্ট্রিংয়ে সঞ্চয় করা হয়, এটি বড় নথিতে মেমরির সমস্যার কারণ হতে পারে।
পিডিএফ জেট তাদের লাইব্রেরির একটি ওপেন-সোর্স সংস্করণ সরবরাহ করে যা কোনও পিডিএফ প্রজন্মের কোনও বেসিক টাস্ক পরিচালনা করতে সক্ষম হওয়া উচিত। এটি একটি সম্পূর্ণ জাভা ভিত্তিক সমাধান এবং এটি অ্যান্ড্রয়েডের সাথে সামঞ্জস্যপূর্ণ বলে উল্লেখ করা হয়েছে। কিছু অতিরিক্ত বৈশিষ্ট্য সহ একটি বাণিজ্যিক সংস্করণ রয়েছে যা খুব ব্যয়বহুল বলে মনে হয় না।
দেরীতে, তবে অনুরোধের সাথে প্রাসঙ্গিক এবং আশাবাদী সহায়ক। যদি কোনও বাহ্যিক পরিষেবা ব্যবহার করা হয় (যেমন কমন্সওয়্যারের প্রতিক্রিয়া অনুসারে) তবে ডকমোসিসের একটি ক্লাউড পরিষেবা রয়েছে যা সহায়তা করতে পারে - ভারী প্রক্রিয়াজাতকরণকারী একটি ক্লাউড পরিষেবাতে অফলোডিং প্রসেসিং। এই পদ্ধতির কিছু পরিস্থিতিতে আদর্শ তবে অবশ্যই নেট-সংযুক্ত হওয়ার উপর নির্ভর করে।
আপনি PoDoFo লাইব্রেরি ব্যবহার করতে পারেন । মূল লক্ষ্য এটি এলজিপিএল এর অধীনে প্রকাশিত হয়। যেহেতু এটি সি ++ তে লেখা হয়েছে আপনার এনডিকে ব্যবহার করে এটি ক্রস-সংকলন করা উচিত এবং সি-সাইড এবং জাভা রেপার লিখুন। তৃতীয় পক্ষের গ্রন্থাগারগুলির কয়েকটি ওপেনসিভি প্রকল্প থেকে ব্যবহার করা যেতে পারে । ওপেনসিভি প্রকল্পেও ইউ android.toolchain.cmake
ফাইল খুঁজে পেতে পারে যা আপনাকে উত্পন্ন করতে সহায়তা করবে Makefile
।