2016-06-16 6 views
0

Я пытаюсь преобразовать HTML в PDF в Android с инструментом iTextPDF xmlWorker. Я могу получить файл PDF. Но некоторые символы исчезают после создания PDF.Как получить правильный результат кодировки UTF-8 с классом XMLWorkerHelper в Android?

Мой код:

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(); 



    } 

Результат:

"Я", "Я" есть исчезают. Я попробовал stringbuilder и некоторые другие методы.

PDF View

+0

"Каждый текст внутри PDF может быть извлечен" является устойчивым мифом. Можете ли вы * скопировать * эти тексты правильно из PDF? – usr2564301

+0

thx @RadLexus. Я пробовал много техники. Замените unicode, добавив разные шрифты. Но, наконец, я добавляю тег font-family для тела, и теперь он работает. – RedLEON

ответ

0

Я нашел решение в конце концов. Просто добавлено тело style font-family, как и внешнее имя шрифта.

Последние коды

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(); 



    } 
Смежные вопросы