У меня есть простая программа, которая создает 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();
}
}