2016-06-16 3 views
0

iTextPDF xmlWorkerツールを使用してAndroidでHTMLをPDFに変換しようとしています。 PDFファイルを入手できます。ただし、PDFを作成した後に文字が消えてしまいます。AndroidでXMLWorkerHelperクラスを使用して正しいUTF-8文字セット結果を取得するには?

マイコード:

private void pdfCreate (String filePath) { 

     try { 

      String timeStamp = new SimpleDateFormat("ddMMyyyy_HHmm").format(new Date()); 
      fileNameAndPath = filePath + File.separator + timeStamp + ".pdf"; 


      String d1 = "<html><head></head><body>İstanbul, Ankara, İzmir, Çanakkale</body></html>"; 

      OutputStream myFile = new FileOutputStream(new File(fileNameAndPath)); 
      Document document = new Document(); 

      document.addCreationDate(); 
      document.setPageSize(PageSize.A4); 
      document.setMargins(36, 36, 36, 36); 
      document.setMarginMirroring(true); 


      PdfWriter writer = PdfWriter.getInstance(document, myFile); 
      document.open(); 

      XMLWorkerHelper worker = XMLWorkerHelper.getInstance(); 

      InputStream is; 

      if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) { 
       is = new ByteArrayInputStream(d1.getBytes(StandardCharsets.UTF_8)); 
      } else 
       is = new ByteArrayInputStream(d1.getBytes("UTF-8")); 

      String FONT = "assets/fonts/arial.ttf"; 
      XMLWorkerFontProvider fontImp = new XMLWorkerFontProvider(XMLWorkerFontProvider.DONTLOOKFORFONTS); 
      fontImp.register(FONT); 

      worker.parseXHtml(writer, document, is, Charset.forName("UTF-8"), fontImp); 

      document.close(); 
      myFile.close(); 



    } 

結果:

"I"、消えている "私"。私はstringbuilderといくつかの別のメソッドを試しました。

PDF View

+0

永続的な神話である "PDF内のすべてのテキストを抽出することができます"。これらのテキストをPDFから正しくコピーできますか? – usr2564301

+0

thx @RadLexus私は多くのテクニックを試しました。ユニコードを置き換える、異なるフォントを追加する。しかし最後に私はボディファミリーのためにフォントファミリタグを追加しました。 – RedLEON

答えて

0

私は最後に解決策を見つけました。ちょうどボディスタイル外部フォント名のようなフォントファミリを追加しました。

最終コード

private void pdfCreate (String filePath) { 

     try { 

      String timeStamp = new SimpleDateFormat("ddMMyyyy_HHmm").format(new Date()); 
      fileNameAndPath = filePath + File.separator + timeStamp + ".pdf"; 

    String d1 = "<html><head></head><body style=\"font-family:arial\">İstanbul, Ankara, İzmir, Çanakkale</body></html>"; 


      OutputStream myFile = new FileOutputStream(new File(fileNameAndPath)); 
      Document document = new Document(); 

      document.addCreationDate(); 
      document.setPageSize(PageSize.A4); 
      document.setMargins(36, 36, 36, 36); 
      document.setMarginMirroring(true); 


      PdfWriter writer = PdfWriter.getInstance(document, myFile); 
      document.open(); 

      XMLWorkerHelper worker = XMLWorkerHelper.getInstance(); 

      InputStream is; 

      if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) { 
       is = new ByteArrayInputStream(d1.getBytes(StandardCharsets.UTF_8)); 
      } else 
       is = new ByteArrayInputStream(d1.getBytes("UTF-8")); 

      String FONT = "assets/fonts/arial.ttf"; 
      XMLWorkerFontProvider fontImp = new XMLWorkerFontProvider(XMLWorkerFontProvider.DONTLOOKFORFONTS); 
      fontImp.register(FONT); 

      worker.parseXHtml(writer, document, is, Charset.forName("UTF-8"), fontImp); 

      document.close(); 
      myFile.close(); 



    } 
関連する問題