2017-06-29 2 views
0

J'ai implémenté des fonctionnalités pour créer des balises cloud en utilisant les méthodes de courbe addBezier de la classe PDPageContentStream. Maintenant, je veux créer ces annotations comme annotation de page, afin que je puisse supprimer ces annotations. J'ai essayé de créer des annotations personnalisées à l'aide de la méthode PDAnnotation.createAnnotation, mais elle nécessite une variable COSBase. Ainsi, comment créer une variable COSBase à l'aide de la classe PDPageContentStream pour spécifier la forme de l'annotation.Comment créer des annotations pdf personnalisées en utilisant la classe PDPageContentStream de la bibliothèque pdfbox?

Répondre

1

Vous pouvez faire quelque chose seul les lignes de

PDAnnotation annot = new PDAnnotationMarkup(); 
    PDAppearanceDictionary appearance = new PDAppearanceDictionary(); 
    PDAppearanceStream appearanceStream = new PDAppearanceStream(new COSStream()); 
    appearance.setNormalAppearance(appearanceStream); 
    annot.setAppearance(appearance); 

    PDPageContentStream contentStream = new PDPageContentStream(pdfDocument, appearanceStream); 
    contentStream.addBezier(....); 
    ..... more additions to the content stream 

J'ai laissé le code pour ajouter l'annotation à la page, etc. comme cela peut être vu de l'exemple AddAnnotations.java dans le paquet d'exemples.

+0

Veuillez ajouter cette commande au code ci-dessus: appearanceStream.setResources (new PDResources()); , sinon la fonction setFont de PDPageContentStream donnera une exception. –

+0

En outre, je ne suis pas en mesure d'ajouter ce balisage à calque. Je suis capable d'ajouter des balises normales comme PDAnnotationLink à n'importe quelle couche. Mais le même code ne fonctionne pas d'annotation personnalisée. –

+0

Autre chose que l'annotation est créée en tant que type inconnu PDFAnnotation. Et il ne s'affiche pas lorsque je l'ouvre dans Adobe Reader ou Bluebeam. Il est seulement visible dans une bibliothèque de visionneuse de pdf de tiers. Il semble que le lecteur d'Adobe ne soutient pas le type d'annotations inconnu. Alors, comment puis-je résoudre cela. –