Ho bisogno di ripulire il documento PDF dalle annotazioni dei collegamenti. Ecco un modello di codice che ho:PDFBox: come modificare la pagina e salvare le modifiche in un nuovo file (ad esempio rimuovere l'annotazione del collegamento)?
public static void main(String[] args) throws IOException, COSVisitorException {
try (PDDocument doc = PDDocument.load("input.pdf")) {
final List<PDPage> pages = doc.getDocumentCatalog().getAllPages();
for (PDPage page : pages) {
List<PDAnnotation> annotations = page.getAnnotations();
for (PDAnnotation ann : annotations) {
if (ann instanceof PDAnnotationLink) {
PDAnnotationLink link = (PDAnnotationLink) ann;
PDAction action = link.getAction();
if (action instanceof PDActionURI) {
final PDActionURI linkUri = (PDActionURI) action;
if (linkUri.getURI().contains("www.example.com")) {
// TODO remove the link
}
}
}
}
}
doc.save("output.pdf");
}
}
Ma non riuscivo a trovare un modo per rimuovere i collegamenti in modo permanente e salvare le modifiche in un nuovo file, i collegamenti sono ancora lì.
Come posso salvare le modifiche alle pagine?
Hai provato il setter in cui hai utilizzato il getter (ad esempio setURI (null)? O creare un elenco di annotazioni meno quelle che non ti piacciono, e quindi invia quel nuovo elenco con setAnnotations()? –
1) impostazione L'URI su null non rimuove il collegamento stesso, si finisce con il collegamento interrotto. 2) sì, ho provato, non ha aiutato – andrew
Sarebbe utile aggiungere il codice che hai usato per (2). E un link al file PDF su cui lavori (se non è riservato). Si prega di menzionare anche la versione che si sta utilizzando (probabilmente 1.8.8). –