J'essaie de jouer un peu avec PDFBox et Groovy. J'essaie de comprendre la largeur d'une chaîne en utilisant la méthode getStringWidth() de la classe PDType1Font.Groovy impossible de charger la classe
Mon problème est que chaque fois que je compiler et exécuter le code, je reçois une erreur disant ceci:
Error:Groovyc: java.lang.RuntimeException: java.lang.NoClassDefFoundError: Unable to load class org.apache.pdfbox.pdmodel.font.PDType1Font due to missing dependency org/apache/fontbox/type1/DamagedFontException
at org.codehaus.groovy.control.CompilationUnit.convertUncaughtExceptionToCompilationError(CompilationUnit.java:1091)
at org.codehaus.groovy.control.CompilationUnit.applyToPrimaryClassNodes(CompilationUnit.java:1069)
at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:591)
at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:569)
at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:546)
at org.jetbrains.groovy.compiler.rt.GroovyCompilerWrapper.compile(GroovyCompilerWrapper.java:62)
at org.jetbrains.groovy.compiler.rt.DependentGroovycRunner.runGroovyc(DependentGroovycRunner.java:115)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.jetbrains.groovy.compiler.rt.GroovycRunner.intMain2(GroovycRunner.java:135)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.jetbrains.jps.incremental.groovy.InProcessGroovyc.runGroovycInThisProcess(InProcessGroovyc.java:156)
at org.jetbrains.jps.incremental.groovy.InProcessGroovyc.access$000(InProcessGroovyc.java:51)
at org.jetbrains.jps.incremental.groovy.InProcessGroovyc$1.call(InProcessGroovyc.java:85)
at org.jetbrains.jps.incremental.groovy.InProcessGroovyc$1.call(InProcessGroovyc.java:82)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Voici le code:
import org.apache.pdfbox.pdmodel.font.PDType1Font
float getStringWidth(String text) {
PDType1Font font = new PDType1Font(PDType1Font.HELVETICA)
float width = font.getStringWidth(text)/1000 * 8;
return width
}
Je décrochai toutes les parties non pertinentes de le code pour des raisons de clarté.
Quel est le problème? MISE À JOUR: J'ai cherché un peu comment ajouter un jar externe à mon chemin de classe dans IntelliJ et j'ai découvert que je devais aller à la structure du projet -> Modules -----> Dépendances, et puis je dois configurer ma bibliothèque en tant que dépendance
J'ai essayé de le faire comme ceci:
Mais je suis encore en train le message d'erreur décrit ci-dessus.
Le code nécessitera le fichier PDFBox jar (et ses dépendances, telles que fontbox) sur le chemin de classe. Cela peut être fait avec Gradle mais pour un exemple clair/simple, consultez 'setvars.sh' dans ce projet - https://github.com/peidevs/OpenDataBookClub/tree/master/tools/PDF_Thresher –
Pourriez-vous s'il vous plaît élaborer sur cette? Je n'ai pas compris exactement ce qu'est ce fichier setvars.sh et comment il est exécuté et quand. J'ai également mis à jour ce post avec et l'image. –
Votre image montre que vous avez différentes versions. Vous devez également avoir Fontbox 2.0.3. –