gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:39:46 27 4
gpt4 key购买 nike

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

示例:用户在表单中填写一个 inputTextArea(JSF 标签),然后将其转换为 PDF。我无法处理非 ASCII 字符。

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

最佳答案

由于您在 JSP 上使用 JSF 而不是 Facelets(隐含地已经使用 UTF-8),请执行以下步骤以避免使用平台默认字符集(通常是 ISO-8859-1,这是处理大多数“非 ASCII”字符的错误选择):

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

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

    这会将响应编码设置为 UTF-8 并且将 HTTP 响应内容类型 header 的字符集设置为 UTF-8。最后一个将指示客户端(网络浏览器)使用 UTF-8 格式显示和提交页面。

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

另见:

关于java - 如何在使用 PDPageContentStream/PDDocument 时处理 Java 中的非 ASCII 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4186192/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com