Tratando de salvar árabe palabras en un PDF editable. Funciona bien con todos los ingleses queridos, sino cuando utilizo palabras árabes, estoy consiguiendo esta excepción:
java.lang.IllegalArgumentException: U + 0627 no está disponible en este tipo de letra Helvética de codificación: WinAnsiEncoding
Aquí es cómo me genera PDF:
public static void main(String[] args) throws IOException
{
String formTemplate = "myFormPdf.pdf";
try (PDDocument pdfDocument = PDDocument.load(new File(formTemplate)))
{
PDAcroForm acroForm = pdfDocument.getDocumentCatalog().getAcroForm();
if (acroForm != null)
{
PDTextField field = (PDTextField) acroForm.getField( "sampleField" );
field.setValue("جملة");
}
pdfDocument.save("updatedPdf.pdf");
}
}
Así es como lo hice trabajar, espero que ayudaría a otros. Sólo tiene que utilizar la fuente que se apoya en el idioma que desea utilizar en el PDF.
public static void main(String[] args) throws IOException
{
String formTemplate = "myFormPdf.pdf";
try (PDDocument pdfDocument = PDDocument.load(new File(formTemplate)))
{
PDAcroForm acroForm = pdfDocument.getDocumentCatalog().getAcroForm();
// you can read ttf from resources as well, this is just for testing
PDFont font = PDType0Font.load(pdfDocument,new File("/path/to/font.ttf"));
String fontName = acroForm.getDefaultResources().add(pdfont).getName();
if (acroForm != null)
{
PDTextField field = (PDTextField) acroForm.getField( "sampleField" );
field.setDefaultAppearance("/"+fontName +" 0 Tf 0 g");
field.setValue("جملة");
}
pdfDocument.save("updatedPdf.pdf");
}
}
Edited : Adición del comentario de mkl El nombre de la fuente y el tamaño de fuente son parámetros de la instrucción de Tf, y el valor de gris 0 para el negro es el parámetro para la instrucción g. Parámetros y nombres de instrucciones deben estar separados de manera apropiada.