Java PDFBox Einstellung benutzerdefinierte schriftart für ein paar Felder im PDF-Formular

Ich bin mit Apache PDFBox Lesen ein interaktives PDF-Formular und füllen Sie die Felder anhand einiger Daten. Ich bin mit dem folgenden code (nach Anregungen von anderen SO Antworten), um die Standard-Darstellung " String und ändern Sie es (wie Sie unten sehen können, ich bin die änderung der Schriftgröße von 10 bis 12, wenn das Feld "Feld1".

  1. Wie kann ich Fett? Jegliche Dokumentation, die auf das, was um die /Helv 10 Tf 0 g angeordnet sind? Was ich brauche, um Fett aus dem Feld?
  2. Wenn ich verstehen richtig, es sind 14 grundlegende Schriften, die ich verwenden können, PDFBox out of the box (unbeabsichtigte Wortspiel). Ich würde gerne verwenden Sie eine oder mehrere Schriftarten, die Aussehen wie Signaturen (Kursiv). Out of the box Schriftarten, die das tun? Wenn nicht, wenn ich meine eigene Schrift, wie ich in der Methode geschrieben werden, die PDF-Datei?

Bitte beachten Sie, dass der folgende code funktioniert, indem Sie die bestimmten 'Wert' übergeben, in der die parameter der Methode in dem spezifischen Feld "name" des Parameters der Methode.

Danke !

public static void setField(String name, String value ) throws     IOException {
    PDDocumentCatalog docCatalog = _pdfDocument.getDocumentCatalog();
    PDAcroForm acroForm = docCatalog.getAcroForm();
    PDField field = acroForm.getField( name );

    COSDictionary dict = ((PDField)field).getDictionary();
    COSString defaultAppearance = (COSString) dict.getDictionaryObject(COSName.DA);
    if (defaultAppearance != null)
    {
        dict.setString(COSName.DA, "/Helv 10 Tf 0 g");
        if(name.equalsIgnoreCase("Field1"))
        {
            dict.setString(COSName.DA, "/Helv 12 Tf 0 g");
        }
    }
    if(field instanceof PDTextbox)
    {
        field= new PDTextbox(acroForm, dict);
        ((PDField)field).setValue(value);
    }

Als pro mkl Antwort, ist die Verwendung von zwei Schriftarten in der gleichen PDF, die ich verwendet die folgende Methode: ich konnte nicht die Standard-schriftart und eine benutzerdefinierte schriftart arbeiten zusammen, also ich habe zwei Schriften zu den Ressourcen und verwendet Sie.

public List<String> prepareFont(PDDocument _pdfDocument) throws IOException
{
    PDDocumentCatalog docCatalog = _pdfDocument.getDocumentCatalog();
    PDAcroForm acroForm = docCatalog.getAcroForm();

    PDResources res = acroForm.getDefaultResources();
    if (res == null)
        res = new PDResources();

    InputStream fontStream = getClass().getResourceAsStream("LiberationSans-Regular.ttf");
InputStream fontStream2 = getClass().getResourceAsStream("Font2.ttf");
    PDTrueTypeFont font = PDTrueTypeFont.loadTTF(_pdfDocument, fontStream);
PDTrueTypeFont font2 = PDTrueTypeFont.loadTTF(_pdfDocument, fontStream2);
    String fontName = res.addFont(font); 
String fontName2 = res.addFont(font2);
    acroForm.setDefaultResources(res);
    List<String> fontList = new ArrayList<String>();    fontList.add(font1);fontList.add(font2);
    return fontList;
}

InformationsquelleAutor user972391 | 2015-05-12

Schreibe einen Kommentar