Neus created PDFBOX-3620:
----------------------------

             Summary: Acroform fields bad encoding
                 Key: PDFBOX-3620
                 URL: https://issues.apache.org/jira/browse/PDFBOX-3620
             Project: PDFBox
          Issue Type: Bug
          Components: AcroForm
    Affects Versions: 2.0.3
         Environment: Windows 7
            Reporter: Neus


There's a problem with acroform fields filled using Java.

Setting a string containing characters like óá, etc. in an Acroform field,
when sending the pdf to the printer these characters are replaced by
another ones. But if the pdf is saved to the disk, when I open the pdf the
characters are correct not replaced!

Here it is the pdf I'm using 
https://drive.google.com/file/d/0B1_3_sVPnBolbjc3U21LTUFTeDg/view?usp=sharing

Also I have tried to save the document in a temp file, read that
file using pdfbox and send it to the printer and the characters like ó, é, etc. 
don't appear well neither.

Here's the code I'm using

PDDocument pdfDocument;
try {
pdfDocument = PDDocument.load(PrintUtils.class.getClassLoader().
getResourceAsStream("\\application\\vistes\\clients\\contractes\\informes\\
CONTRACTE.pdf"));

PDDocumentCatalog docCatalog = pdfDocument.getDocumentCatalog();
PDAcroForm acroForm = docCatalog.getAcroForm();

acroForm.setNeedAppearances(false);

AcroForm.omplirCamp(acroForm, "num_contracte", contracte.getId());
AcroForm.omplirCamp(acroForm, "identificacio_caldera",
(contracte.getMarca() + " " + contracte.getAparell() + " " +
contracte.getNumero_fabricacio()).trim());
AcroForm.omplirCamp(acroForm, "data_instalacio",
dataFormatter.format(contracte.getDataInstalacio()));
AcroForm.omplirCamp(acroForm, "nom_usuari",
contracte.getNom_usuari());
AcroForm.omplirCamp(acroForm, "nom_usuari2",
contracte.getNom_usuari());
AcroForm.omplirCamp(acroForm, "nif", contracte.getNif());
AcroForm.omplirCamp(acroForm, "carrer", contracte.getDireccio());
AcroForm.omplirCamp(acroForm, "num_casa", contracte.getNumeroCasa());
AcroForm.omplirCamp(acroForm, "telefon", contracte.getTelefon());
AcroForm.omplirCamp(acroForm, "municipi", contracte.getPoblacio());
AcroForm.omplirCamp(acroForm, "euros", decimalFormatter.format(
contracte.getCost_anual()));

//Create AttributeSet
PrintRequestAttributeSet pset = new
HashPrintRequestAttributeSet();

//Add Duplex Option to AttributeSet
pset.add(Sides.DUPLEX);

PrinterJob job = PrinterJob.getPrinterJob();
job.setJobName("Contracte " + (contracte.getId() != null ?
contracte.getId() : "nou"));

PageFormat format = job.getPageFormat(pset);
format.setOrientation(PageFormat.PORTRAIT);

Paper paper = new Paper();
paper.setSize(20, 14.5);
format.setPaper(paper);
job.defaultPage(format);

job.setPageable(new PDFPageable(pdfDocument));

if (job.printDialog(pset)) {
job.print(pset);
}

pdfDocument.close();
} catch (IOException e) {
e.printStackTrace();
} catch (PrinterException e) {
e.printStackTrace();
}

public static void omplirCamp(PDAcroForm acroForm, String nomCamp, String
valor) throws IOException{
PDField field = acroForm.getField(nomCamp);
if( field != null ) {
field.setValue(valor != null ? valor : "");
}
else {
System.err.println( "No s'ha trobat el camp "+nomCamp+"!");
}
}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to