2016-06-16 11 views
0

Ich versuche, HTML in Android mit iTextPDF xmlWorker Tool zu konvertieren. Ich kann PDF-Datei erhalten. Aber einige Zeichen verschwinden nach dem Erstellen von PDF.Wie erhalten Sie das korrekte UTF-8-Zeichensatzergebnis mit der XMLWorkerHelper-Klasse in Android?

Mein Code:

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



    } 

Ergebnis:

"I", "I" sind verschwinden. Ich habe Stringbuilder und einige andere Methoden ausprobiert.

PDF View

+0

"Jeder Text in einem PDF extrahiert werden kann" ist ein hartnäckiger Mythos. Können Sie diese Texte * richtig aus dem PDF kopieren? – usr2564301

+0

thx @RadLexus. Ich habe viele Techniken ausprobiert. Ersetzen Sie Unicode, indem Sie verschiedene Schriftarten hinzufügen. Aber schließlich füge ich font-family tag für Körper hinzu und es funktioniert jetzt. – RedLEON

Antwort

0

ich die Lösung schließlich gefunden. Just Körper hinzugefügt Stil Schriftart-Familie wie externe Schriftart Name.

Last Codes

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



    }