iText 5.5.8 и Java 8 арабский не фасонный - PullRequest
0 голосов
/ 10 апреля 2019

У меня есть простая программа, которая создает PDF, используя iText 5.5.8 и Java 7, и отображает арабский язык правильно. Я перекомпилировал и выполнил ту же программу с использованием Java 8, и теперь арабский язык не отображается при просмотре в PDF. Обратите внимание, что это задание выполняется на мэйнфрейме z / OS, для чтения используется класс ZFile.

Вот полный код

import java.io.*;
import java.util.*;
import com.ibm.jzos.MvsConsole;
import com.ibm.jzos.ZFile;
import com.ibm.jzos.ZFileException;
import com.ibm.jzos.ZUtil;
import com.itextpdf.text.*;
import com.itextpdf.text.pdf.ColumnText;
import com.itextpdf.text.pdf.PdfWriter;
import com.itextpdf.text.pdf.BaseFont;
public class Simplepdf  
{
    public static void main(String[] args) throws ZFileException, IOException, DocumentException 
    {
        ZFile inZFile = new ZFile("//DD:INDD","rb,type=record,noseek");
        ZFile outZFile = new ZFile("//DD:OUTDD", "wb");
        BufferedReader brdr = null;
        InputStream istream = inZFile.getInputStream();
        InputStreamReader rdr = new InputStreamReader(istream,"Cp420");
        brdr = new BufferedReader(rdr);
        OutputStream ostream = outZFile.getOutputStream();
        BaseFont nf = BaseFont.createFont("cour.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
        Float pf = Float.parseFloat("8");
        Font font = new Font(nf,pf);
        BaseFont bf = BaseFont.createFont("courbd.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
        Font fontb = new Font(bf,pf);

        Document document = new Document();
        PdfWriter writer = PdfWriter.getInstance(document, ostream);
        document.open();
        ColumnText column = new ColumnText(writer.getDirectContent());
        column.setSimpleColumn(36, 770, 569, 36);
        column.setRunDirection(PdfWriter.RUN_DIRECTION_NO_BIDI);
        String encoding = "Cp420";
        byte[] recBuf = new byte[inZFile.getLrecl()];
        int nRead;
        while((nRead = inZFile.read(recBuf)) > 0) 
        {
            String line = new String(recBuf,1,nRead-1,encoding);
            column.addElement(new Paragraph(line, font));
        }
        column.go();
        brdr.close();
        document.close();
    }
}
...