I'm not sure what you're doing on the TTFParser error from the snapshot, but on copying the jars out of the lib folder make sure you get all dependencies. cmap stream Identity-H is referring to pcfi-2010.08.09.jar
On Wed, Mar 4, 2015 at 2:23 PM, Ivan Klaric <[email protected]> wrote: > OK, I'll focus on the PDType0Font.load version then. I build my pdfbox like > this: > > svn update && ant clean && ant build > > and then copy fontbox-2.0.0.jar & pdfbox-2.0.0.jar from the target folder > to my projects lib folder. This stack trace: > java.io.IOException: Error: Could not find referenced cmap stream > Identity-H > at org.apache.fontbox.cmap.CMapParser.getExternalCMap(CMapParser.java:418) > at org.apache.fontbox.cmap.CMapParser.parsePredefined(CMapParser.java:84) > at > org.apache.pdfbox.pdmodel.font.CMapManager.getPredefinedCMap(CMapManager. > java:54) > at org.apache.pdfbox.pdmodel.font.PDType0Font.readEncoding( > PDType0Font.java:159) > at org.apache.pdfbox.pdmodel.font.PDType0Font.<init>(PDType0Font.java:119) > at org.apache.pdfbox.pdmodel.font.PDType0Font.load(PDType0Font.java:59) > at com.company.Main.main(Main.java:20) > 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:483) > at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134) > > is what I get when using PDType0Font.load() and the jars I get out of the > ant. When I use pdfbox.jar from > > https://repository.apache.org/content/groups/snapshots/org/apache/pdfbox/pdfbox/2.0.0-SNAPSHOT/ > > I get the same error. Note that there is no fontbox.jar in that folder, so > I get an exception that points to the fact that fontbox.jar is missing: > Exception in thread "main" java.lang.NoClassDefFoundError: > org/apache/fontbox/ttf/TTFParser > at > > org.apache.pdfbox.pdmodel.font.TrueTypeEmbedder.buildFontFile2(TrueTypeEmbedder.java:90) > at > > org.apache.pdfbox.pdmodel.font.TrueTypeEmbedder.<init>(TrueTypeEmbedder.java:72) > at > > org.apache.pdfbox.pdmodel.font.PDTrueTypeFontEmbedder.<init>(PDTrueTypeFontEmbedder.java:56) > at > > org.apache.pdfbox.pdmodel.font.PDTrueTypeFont.<init>(PDTrueTypeFont.java:184) > at > > org.apache.pdfbox.pdmodel.font.PDTrueTypeFont.loadTTF(PDTrueTypeFont.java:81) > at com.company.Main.main(Main.java:20) > 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:483) > at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134) > Caused by: java.lang.ClassNotFoundException: > org.apache.fontbox.ttf.TTFParser > at java.net.URLClassLoader$1.run(URLClassLoader.java:372) > at java.net.URLClassLoader$1.run(URLClassLoader.java:361) > at java.security.AccessController.doPrivileged(Native Method) > at java.net.URLClassLoader.findClass(URLClassLoader.java:360) > at java.lang.ClassLoader.loadClass(ClassLoader.java:424) > at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) > at java.lang.ClassLoader.loadClass(ClassLoader.java:357) > ... 11 more > > > When I use the fontbox.jar I got from the ant build above, the error is > exactly the same as when using the jars I built with ant. Also, note that > it seems to work fine when I remove the croatian characters from the string > and add e.g. german ones (stuff like *ü, ä, ß...).* > > Thanks, > Ivan > > On Wed, Mar 4, 2015 at 7:07 PM John Hewson <[email protected]> wrote: > > > Hi, > > > > > On 28 Feb 2015, at 02:52, Ivan Klaric <[email protected]> wrote: > > > > > > Hello good PDFBox people, > > > > > > I am working on a pet project with PDFBox and I encountered what seems > to > > > be an issue with UTF8 chars. If you take the following standard > example: > > > > > > public static void main(String[] args) { > > > try { > > > PDDocument document = new PDDocument(); > > > PDPage page = new PDPage(); > > > document.addPage( page ); > > > PDFont font = PDTrueTypeFont.loadTTF(document, new > > > File("res/Roboto-Regular.ttf")); > > > PDPageContentStream contentStream = null; > > > contentStream = new PDPageContentStream(document, page); > > > contentStream.beginText(); > > > contentStream.setFont( font, 12 ); > > > contentStream.moveTextPositionByAmount( 100, 700 ); > > > contentStream.drawString( "Hello World čćžšđČĆŽŠĐ" ); > > > contentStream.endText(); > > > contentStream.close(); > > > document.save( "/tmp/HelloWorld.pdf"); > > > document.close(); > > > > > > } catch (IOException e) { > > > e.printStackTrace(); > > > } > > > } > > > > > > (those weird characters in the drawString method are some pretty common > > > croatian letters). This is what I get: > > > java.io.IOException: Error: Could not find referenced cmap stream > > Identity-H > > > at org.apache.fontbox.cmap.CMapParser.getExternalCMap( > > CMapParser.java:418) > > > at org.apache.fontbox.cmap.CMapParser.parsePredefined( > > CMapParser.java:84) > > > at > > > org.apache.pdfbox.pdmodel.font.CMapManager. > > getPredefinedCMap(CMapManager.java:54) > > > at > > > org.apache.pdfbox.pdmodel.font.PDType0Font.readEncoding( > > PDType0Font.java:159) > > > at org.apache.pdfbox.pdmodel.font.PDType0Font.<init>( > > PDType0Font.java:119) > > > at org.apache.pdfbox.pdmodel.font.PDType0Font.load(PDType0Font.java:59) > > > at com.company.Main.main(Main.java:20) > > > 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:483) > > > at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134) > > > > There’s something wrong with how you built PDFBox, as this error means it > > can’t find > > resources which we ship in the jar file. Try doing a "mvn clean install” > > or using a snapshot > > jar instead. (Did you build using an IDE or Ant perhaps?) > > > > > Am I doing something wrong? I took the Roboto-Regular font here: > > > http://www.fontsquirrel.com/fonts/roboto > > > > > > If I remove the weird Croatian characters, the error remains the same. > > > However, if I use the PDTrueTypeFont.loadTTF() (which seems to be > > > deprecated) the same thing works without the Croatian characters. If I > > put > > > the Croatian characters back in (and use PDTrueTypeFont), I get > > > > > > Exception in thread "main" java.lang.IllegalArgumentException: U+010D > is > > > not available in this font's Encoding > > > at > > > org.apache.pdfbox.pdmodel.font.PDTrueTypeFont.encode( > > PDTrueTypeFont.java:261) > > > at org.apache.pdfbox.pdmodel.font.PDFont.encode(PDFont.java:268) > > > at > > > org.apache.pdfbox.pdmodel.PDPageContentStream.showText( > > PDPageContentStream.java:316) > > > at > > > org.apache.pdfbox.pdmodel.PDPageContentStream.drawString( > > PDPageContentStream.java:282) > > > at com.company.Main.main(Main.java:25) > > > 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:483) > > > at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134) > > > > PDTrueTypeFont.loadTTF is deprecated and only supports ANSI. For full > > Unicode support, > > use PDType0Font.load, as explained in the @deprecated JavaDoc tag. > > > > > I manually looked into the font file and it seems to contain the U+010D > > > character. What am I doing wrong here? > > > > > > Thanks, > > > Ivan > > > > — John > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [email protected] > > For additional commands, e-mail: [email protected] > > > > >

