如何在使用 PDPageContentStream/PDDocument 时处理 Java 中的非 ASCII 字符

2024-01-10

我在用PDFBox http://pdfbox.apache.org/从我的网络应用程序创建 PDF。 Web 应用程序是用 Java 构建的并使用 JSF。它从基于 Web 的表单中获取内容并将内容放入 PDF 文档中。

Example:用户在表单中填写 inputTextArea(JSF 标记)并将其转换为 PDF。我无法处理非 ASCII 字符。

我应该如何处理非 ASCII 字符,或者至少在将其放入 PDF 之前将其删除。请帮助我提供任何建议或为我提供任何资源。谢谢!


由于您在 JSP 上使用 JSF 而不是 Facelets(它已隐式使用 UTF-8),因此请执行以下步骤以避免使用平台默认字符集(通常是 ISO-8859-1,对于处理大多数“非 ASCII”字符):

  1. 将以下行添加到所有 JSP 的顶部:

    <%@ page pageEncoding="UTF-8" %>
    

    这将响应编码设置为 UTF-8and将 HTTP 响应内容类型标头的字符集设置为 UTF-8。最后一个将指示客户端(网络浏览器)使用 UTF-8 显示并提交带有表单的页面。

  2. 创建一个Filter http://download.oracle.com/javaee/6/api/javax/servlet/Filter.html它执行以下操作doFilter() method:

    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,而 iText 应该已经支持 Unicode/UTF-8,所以我认为这部分很好。如果在执行上述修复后仍然无法解决问题,请告诉我。

也可以看看:

  • Unicode - 如何获得正确的字符? http://balusc.blogspot.com/2009/05/unicode-how-to-get-characters-right.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在使用 PDPageContentStream/PDDocument 时处理 Java 中的非 ASCII 字符 的相关文章

随机推荐