Java生成PDF报错

异常如下:

Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException: This function should be called while holding treeLock
    at java.awt.Component.checkTreeLock(Component.java:1200)
    at java.awt.Container.validateTree(Container.java:1682)
    at ice.pilots.html4.swing.PanePanel.validateTree(DocView.java:830)
    at ice.pilots.html4.swing.DocPanel.doLayout(DocView.java:1182)
    at ice.pilots.html4.swing.DocView.revalidate(DocView.java:310)
    at ice.pilots.html4.CSSLayout.eventThreadRevalidate(CSSLayout.java:3039)
    at ice.pilots.html4.RefreshEvent.doit(CSSLayout.java:3617)
    at ice.pilots.html4.DocAction.run(DocAction.java:31)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:312)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:745)
    at java.awt.EventQueue.access$300(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:706)
    at java.awt.EventQueue$3.run(EventQueue.java:704)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:715)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

网上查阅过有人说是jdk版本问题,尝试过了jdk6,jdk7,jdk8都不行。最后的结果是汉字出不来,数字和英文可以出来

pdf中有中文名还是内容中文出不来? 如何实现的 什么依赖 直接写出去的?

可以后端使用response写出去

可以利用第三方控件来生成所需要的PDF文档,我用过一款叫Free Spire.PDF for Java.它能支持在创建PDF时设置字体、将文字居中、设置段首缩进以及在规定的区域绘制文字等操作。相关代码示例可以参考他们官网上的教程