有人可以在android Project中推荐html文件到pdf文件的最佳方法。
我使用iText 5.5.5同时生成包含波斯语和英语字符的PDF文件。所以,我使用了以下代码:
private void createPDF (File file){
//path for the PDF file to be generated
PdfWriter pdfWriter = null;
//create a new document
Document document = new Document();
try {
//get Instance of the PDFWriter
pdfWriter = PdfWriter.getInstance(document, new FileOutputStream(file));
//document header attributes
document.addAuthor("betterThanZero");
document.addCreationDate();
document.addProducer();
document.addCreator("MySampleCode.com");
document.addTitle("Demo for iText XMLWorker");
document.setPageSize(PageSize.A4);
//open document
document.open();
//To convert a HTML file from the filesystem
//String File_To_Convert = "docs/SamplePDF.html";
//FileInputStream fis = new FileInputStream(File_To_Convert);
//URL for HTML page
AssetManager am = getAssets();
Tidy tidy=new Tidy();
File path = new File( Environment.getExternalStorageDirectory(), getPackageName() );
if ( !path.exists() ){ path.mkdir(); }
File filefff = new File(path, "test.xhtml");
FileOutputStream fileOutputStream = new FileOutputStream(filefff);
tidy.parse(am.open("test.html"), fileOutputStream);
FileInputStream fileInputStream = new FileInputStream(filefff);
InputStreamReader fis = new InputStreamReader(fileInputStream);
//get the XMLWorkerHelper Instance
XMLWorkerHelper worker = XMLWorkerHelper.getInstance();
//convert to PDF
worker.parseXHtml(pdfWriter, document, fis);
//close the document
document.close();
//close the writer
pdfWriter.close();
}
catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (DocumentException e) {
e.printStackTrace();
}
}
输出:
1 - Ø ̄٠ست اÙÙ Ø ̈Ø±Ø§Û Ú ̄Ø±Ù Ú©Ø±Ø ̄٠٠آÙØ§Ø ̄Ù Ø³Ø§Ø²Û ÙÙاØμÙ Ù
عضÙات Ø ̈Ø±Ø§Û ÛÚ© تÙرÛ٠سÙÚ ̄Û٠اÙجا٠ÙÛØ ́ÙÙØ ̄Ø ÙØ ̈اÛØ ̄ از
ÙزÙÙ ÙØ§Û Ø³ÙÚ ̄ÛÙ Ø ̈Ø±Ø§Û Ø§ÛÙ Ø ̄٠ست استÙØ§Ø ̄Ù Ú©Ø±Ø ̄.
2 - ÛÚ© ست ÙÙ Ù¾Ø ́ت Ø ̈از٠پرس سÛÙÙ Ø§Û Ø ̈Ø±Ø§Û Ø¢Ø ́ÙاÛÛ ÙÙاØμÙ
Ø ̈Ø±Ø§Û ÙسÛر Ø-رکت Ø ̄Ù٠سÙپر ست اجرا ÙÛØ ́ÙØ ̄.
3 - Ø§Ø¬Ø±Ø§Û Ø-رکت سÛÙ Ú©Ø ́ ÙØ ̈٠از پرس سÛÙÙ Ø ̄ست جÙعØ
Ù¾Ø ̄ÛØ ̄ Ø¢ÙرÙØ ̄٠سÛست٠پÛØ ́ Ø®Ø³ØªÚ ̄Û Ø ̄ر اÛ٠سÙپر ست استØ
Ø ̈Ø ̄Û٠ترتÛØ ̈ Ú©ÙØ Ø ̄ر Ø-رکت اÙÙ ÙÙØ· عضÙÙ Ù¾Ø ́ت Ø ̈از٠ÙعاÙ
است Ù Ø ̄ر Ø-رکت Ø ̄ÙÙØ Ø³Ø±Ø ́اÙ٠٠سÛÙÙ ÙÛز Ø ̈Ù Ú©ÙÚ© Ù¾Ø ́ت
Ø ̈از٠ÙÛ Ø¢ÛÙØ ̄ Ù Ø ̈Ù ÙØ±Ø²Ø ́کار اجار٠ÙÛØ ̄ÙÙØ ̄Ø ØªØ±Ø§Ûسپس
Ø®ÙØ ̄ را Ø ̈ÛØ ́ از Ù¾ÛØ ́ تØ-ت ÙØ ́ار Ùرار Ø ̄ÙØ ̄.
ازطرÙÛ Ø§Ø¬Ø±Ø§Û Ø-رکت اÙÙ Ø ̈ا سÛست٠کÙتر٠٠تÙرکز
ØμÙرت ÙÛÚ ̄ÛØ±Ø ̄Ø ÛعÙÛ ÙØ±Ø²Ø ́کار Ø§Ø ̈ØªØ ̄ا Ø ̄٠تکرار Ù¾Ø ́ت
Ø ̈از٠سÛÙ Ú©Ø ́ را Ø ̈ا Ú©Ùتر٠کاÙ٠اÙØ¬Ø§Ù Ø ̄Ø§Ø ̄٠٠سپس
Ø ̈Ø ̄ÙÙ ÙÚ©Ø« Ø-رکت Ù¾Ø ́ت Ø ̈از٠پرس سÛÙ٠را Ø ̄ر Ø ̄Ù
تکرار Ø ̄ÛÚ ̄ر Ø ̄ÙØ ̈ا٠ÙÛÚ©ÙØ ̄. Ø ̈Ø±Ø§Û ÚØ§Ø ́ÙÛ Ú©Ø§Ø± ÙÛتÙاÙ
Ø ̄٠تکرار Ú©ÙÚ©Û Ø ̄ÛÚ ̄ر ÙÛز Ø ̄ر اÛÙ Ø-رکت اخÛر اجرا
Ú©Ø±Ø ̄.
Ø ̄٠ست Ø ̈ا استÙØ§Ø ̄٠از اÛÙ Ú©ÙکسÛÙ٠سÛست٠ÙØ§Û Ø-رÙ٠اÛ
Ø ̄ر اÛÙ Ø-رکت کاÙÛ Ø§Ø³ØªØ ØªØ§ تراÛسپس ÚØ§Ø±Ù Ø§Û Ø¬Ø²
Ø±Ø ́Ø ̄ Ú©Ø±Ø ̄Ù ÙØ ̄Ø§Ø ́ØªÙ Ø ̈Ø§Ø ́Ø ̄.
4 - Ø ̄ر اÛÙ Ø ̄٠سÙپر ست ÙÛز ÙجÙØ ̄ Ù¾Ø ́ت Ø ̈از٠ÙاÙتر
Ø®ÙØ§Ø ̈ÛØ ̄Ù ÙØ ̈٠از پاراÙÙ Ø³Ø ̈Ø ̈ اÛØ¬Ø§Ø ̄ سÛست٠پÛØ ́
Ø®Ø³ØªÚ ̄Û ÙÛØ ́ÙØ ̄. Ø ̄Ùت Ø ̈Ù ÙاØμÙ٠استاÙØ ̄Ø§Ø±Ø ̄ Ø ̄ستÙا Ø ̄ر
Ø-رکت ÙاÙتر Ø®ÙØ§Ø ̈ÛØ ̄٠از اÙÙÛت زÛØ§Ø ̄Û Ø ̈رخÙØ±Ø ̄ار
Ø§Ø³ØªØ ÚÙÙ Ú©Ù Ø ̈ÙØ ̄٠اÛÙ ÙاØμÙÙ ÙÛتÙاÙØ ̄ ÙÙجر Ø ̈Ù Ø ̄Ø±Ø ̄ÙاÛ
Ø ́Ø ̄ÛØ ̄ Ø ̄ر ÙÙØμÙ ÙÚ Ù Ø¢Ø³ÛØ ̈ Ø ̄ÛØ ̄Ú ̄Û Ø¢Ù Ø ́ÙØ ̄. Ø ̈Ø¹Ø ̄ از Ø ̄Ù
ØªÚ©Ø±Ø§Ø±Ø ÙØ±Ø²Ø ́کار Ø ̈٠سرعت سراغ پاراÙ٠رÙØªÙ Ù Ø ̄Ù
تکرار Ø ̄ÛÚ ̄ر ÙÛز Ø ̄ر اÛÙجا اÙجا٠ÙÛØ ̄ÙØ ̄. Ø ̄٠ست اÙÙ
Ø ̈Ø±Ø§Û Ú ̄Ø±Ù Ú©Ø±Ø ̄٠٠آÙØ§Ø ̄Ù Ø³Ø§Ø²Û ÙÙاØμ٠است Ù
Ø ̄رØμÙرتÛÚ©Ù ÙØ ̄رت Ø ̈Ø ̄ÙÛ Ø§Ø¬Ø§Ø²Ù Ø§Ø³ØªÙØ§Ø ̄٠از ÙزÙÙ ÙاÛ
Ø ̈ÛØ ́ØªØ±Û Ø±Ø§ ÙÛØ ̄ÙØ ̄Ø ÙÛتÙا٠از ÙزÙ٠اضاÙÛ Ø§Ø³ØªÙØ§Ø ̄Ù
Ú©Ø±Ø ̄. Ø ̈Ø±Ø§Û Ø§Û٠کار Ø ̈ا ÙÙØ§Ø ̈ Ú©Ø±Ø ̄٠پاÙا Ø ̄ر ÛÚ©Ø ̄ÛÚ ̄ر
ÛÚ© Ø ̄ÙØ ̈٠را Ø ̄ر ÙÛا٠آÙÙا Ùرار Ø ̄Ø§Ø ̄Ù Ûا ÙÛتÙا٠از
Ú©ÙØ±Ø ̈ÙØ ̄ ÙØ®ØμÙØμ ÙزÙ٠اضاÙÛ Ø§Ø³ØªÙØ§Ø ̄Ù Ú©Ø±Ø ̄.
Ùرجع : Ú©ØªØ§Ø ̈ Ø-رÙÙ Ø§Û Ø ̈Ø§Ø ́
问题出在哪里?我该如何解决这个问题?
答案 0 :(得分:0)
我用Pdfwriter用古吉拉特语写文件。要使用英语以外的其他语言书写,我们需要创建Basefont,如以下代码所示:
Font font=null;
try {
BaseFont bf = BaseFont.createFont("assets/xxx.ttf",BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
font = new Font(bf, 12);
}
catch (Exception e){
e.printStackTrace();
Toast.makeText(ListActivity.this,""+e,Toast.LENGTH_LONG).show();
Log.e("ListActivity","fontException"+e);
}
注意:将波斯语.ttf文件保存在资产文件夹中。用ttf文件名替换xxx.ttf。 然后,在写入pdf文件时传递此字体。就像我的情况一样:
table.addCell((new PdfPCell(new Phrase(user.getSurname(),font))));
table.addCell((new PdfPCell(new Phrase(user.getName(),font))));
希望您可以与此相关,答案会有所帮助。