Отображение ненужных символов в случае арабского c в PDF. Сгенерировано itextpdf-5.5.13.1 - PullRequest
0 голосов
/ 29 апреля 2020

Я пытаюсь обновить PDF, используя существующий PDF с некоторыми значениями из другого сервиса, и в одном из полей могут быть слова c арабского языка. В случае engli sh все работает нормально, но в случае arabi c final pdf отображает ненужные символы.

Ниже приведен фрагмент:

public  String  processPDF(String src, String dest,Map<String,String> paramMap)
    {
        String base64PdfString = "";

        try {

        PdfReader reader = new PdfReader(src);
        PdfDictionary dict = reader.getPageN(1);
        PdfObject object = dict.getDirectObject(PdfName.CONTENTS);

        String beneficiaryName =  "سامي جافيد";//paramMap.get("beneficiaryName");

        if (object instanceof PRStream) 
        {
            PRStream stream = (PRStream)object;
            byte[] data = PdfReader.getStreamBytes(stream);
            String dd = new String(data);
            dd = dd.replace("$HeaderBeneficiary","Beneficiary");
            dd = dd.replace("$HeaderDate","Date");
            dd = dd.replace("$HeaderAmount","Amount");
            if(textContainsArabic(beneficiaryName)) {
                dd = dd.replace("$BeneficiaryName",BidiLine.processLTR(beneficiaryName,1,1));
            }
            else
            {
                dd = dd.replace("$BeneficiaryName",beneficiaryName);
            }
        stream.setData(dd.getBytes(StandardCharsets.UTF_8));
        PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));

        stamper.close();
        reader.close();

        GeneratePDFFromTemplate generatePdf = new GeneratePDFFromTemplate();
        base64PdfString = generatePdf.convertPdfToBase64(dest);
        }catch(IOException ex){
            System.out.println("Failed to generate PDF Document");
        } catch (DocumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }catch (Exception e){
            e.printStackTrace();
        }
        return base64PdfString;
        }

textContainsArabi c is метод, который сообщает, имеет ли строка арабские c символы или нет, и convertPdfToBase64 преобразует файл в base64.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...