Когда я читаю PDF из URL, он правильно показывает данные на английском языке, но текст на другом языке неправильно отображается в C # - PullRequest
0 голосов
/ 25 сентября 2019

Этот код конвертирует только английский PDF-код в английский текст, и я хочу конвертировать любой другой язык в английский, так как я могу решить эту проблему.

Ниже мой код

using iTextSharp.text.pdf;
using iTextSharp.text.pdf.parser;   
private string PDFReader(string url)
{
     StringBuilder text = new StringBuilder();
       PdfReader pdfReader;       

          try
            {
            ServicePointManager.Expect100Continue = true;
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
            url = "http://www.openprocurement.al/tenders/shpallje/29357.pdf";
            pdfReader = new PdfReader(url);
              for (int page = 1; page <= pdfReader.NumberOfPages; page++)
               {
                 ITextExtractionStrategy strategy = new SimpleTextExtractionStrategy();
                 string currentText = PdfTextExtractor.GetTextFromPage(pdfReader, page, strategy);
                 if (currentText.Contains("Page " + page.ToString()))
                  {
                   currentText = currentText.Replace("Page " + page.ToString(), "♥♥");
                  }
                  currentText = Encoding.UTF8.GetString(Encoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.UTF8.GetBytes(currentText)));
                text.Append("\n----------------------------------------------------------------------\n");
                  text.Append(currentText);
               }
                    pdfReader.Close();

           }
           catch (Exception ex)
           {

           }

         return text.Replace("‘", "‘").Replace("’", "’").Replace("–", "–").ToString();
        }

Ответы [ 2 ]

0 голосов
/ 28 сентября 2019

Пожалуйста, попробуйте это ..

Использование WhatsMate PDF-to-Text REST API

0 голосов
/ 25 сентября 2019

.NET - это Unicode, а именно UTF16.Им не нужно никакого преобразования.

Проблемы вызваны попыткой конвертировать Unicode в локаль локальной машины, а затем обратно в Unicode, как если бы это был UTF8 (что не так, в локали локальной машины),Это то, что также создает строки †- двухбайтовые последовательности UTF8 переводятся как ASCII (скорее всего, западноевропейский).

Этот код извлекает текст без каких-либо проблем преобразования:

static  string GetPdfText(string url)
{
    var separator="\n----------------------------------------------------------------------\n";
    var text = new StringBuilder();                            
    var  strategy = new SimpleTextExtractionStrategy();

    using( var pdfReader = new PdfReader(url))
    {
        for (int page = 1; page <= pdfReader.NumberOfPages; page++)
        {
            var  currentText = PdfTextExtractor.GetTextFromPage(pdfReader, page, strategy);
            text.Append(separator);
            text.Append(currentText);
        }
    }
    return text.ToString();     
}        
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...