我正在使用PDFBox从我的网络应用程序创建PDF。 Web应用程序使用Java构建并使用JSF。它从基于Web的表单中获取内容,并将内容放入PDF文档中。
示例:用户在表单中填写inputTextArea(JSF标记)并将其转换为PDF。我无法处理非ASCII字符。
我应该如何处理非ASCII字符,或者在将它们放到PDF上之前至少删除它们。请帮助我任何建议或指出任何资源。谢谢!
答案 0 :(得分:2)
由于您在JSP上使用JSF而不是Facelets(隐式已经使用UTF-8),请执行以下步骤以避免使用平台默认字符集(通常是ISO-8859-1,这是处理大多数“非ASCII”字符的错误选择:
将以下行添加到所有JSP的顶部:
<%@ page pageEncoding="UTF-8" %>
这将响应编码设置为UTF-8 ,将HTTP响应内容类型标头的字符集设置为UTF-8。最后一个将指示客户端(webbrowser)使用UTF-8显示和提交带有表单的页面。
创建Filter
,在doFilter()
方法中执行以下操作:
request.setCharacterEncoding("UTF-8");
将此映射到FacesServlet
上,如下所示:
<filter-mapping>
<filter-name>nameOfYourCharacterEncodingFilter</filter-name>
<servlet-name>nameOfYourFacesServlet</servlet-name>
</filter-mapping>
这会将所有JSF POST请求的请求编码设置为UTF-8。
这应解决JSF方面的Unicode问题。我从来没有使用过PDFBox,但是由于它使用iText而已经支持Unicode / UTF-8,我觉得这部分很好。在完成上述修复后,请告诉我它是否仍然没有。