Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java PDF格式,显示西班牙特别特许状,如“?”&引用;_Java_Xml_Adobe - Fatal编程技术网

Java PDF格式,显示西班牙特别特许状,如“?”&引用;

Java PDF格式,显示西班牙特别特许状,如“?”&引用;,java,xml,adobe,Java,Xml,Adobe,adobe将特殊的西班牙语字符显示为“?”。我需要从adobe生命周期还是从Java方面解决这个问题?我使用UTF-8将XML转发到adobe生命周期。我是否需要将其编码为类似ISO-8859-1的其他代码?这里可能有什么问题? 例如,PDF中显示为Certificaci?n的单词Certificación。 在控制台中,我看到文字看起来很好,但一旦我调用adobe获取PDF,我就会得到带有Certificaci?n之类文字的PDF 我使用 public static String obj2Xm

adobe将特殊的西班牙语字符显示为“?”。我需要从adobe生命周期还是从Java方面解决这个问题?我使用
UTF-8
将XML转发到adobe生命周期。我是否需要将其编码为类似ISO-8859-1的其他代码?这里可能有什么问题?
例如,PDF中显示为
Certificaci?n
的单词
Certificación
。 在控制台中,我看到文字看起来很好,但一旦我调用adobe获取PDF,我就会得到带有Certificaci?n之类文字的PDF

我使用

public static String obj2Xml(Class<?> className, Object obj)
        throws ServiceException {
    try {
        JAXBContext jaxbContext = JAXBContext.newInstance(className);
        Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
        StringWriter writer = new StringWriter();
        jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,
                Boolean.TRUE);
        jaxbMarshaller.marshal(obj, writer);
        return writer.getBuffer().toString();
    } catch (JAXBException jaxbException) {
        throw new ServiceException(jaxbException);
    }
}
公共静态字符串obj2Xml(类名,对象obj)
抛出ServiceException{
试一试{
JAXBContext JAXBContext=JAXBContext.newInstance(类名);
Marshaller jaxbMarshaller=jaxbContext.createMarshaller();
StringWriter编写器=新的StringWriter();
setProperty(Marshaller.JAXB_格式化的_输出,
布尔值(TRUE);
jaxbMarshaller.marshall(obj,作家);
返回writer.getBuffer().toString();
}捕获(JAXBEException JAXBEException){
抛出新的ServiceException(JAXBEException);
}
}
我已经使用了ISO-8859-1,但我用HTML进行了测试,结果很好。我的问题是如何将XML从UTF-8编码为ISO-8859-1以及adobe生命周期。正如我提到的,我将XML传递给adobe,我们使用XSD,我在其中做了如下更改


但是仍然显示带有UTF-8的XML的控制台可能确实可以通过将编码更改为ISO-8859-1来解决这些特殊字符的问题。(正如你在问题中已经提到的。) 见帖子


jaxbMarshaller.setProperty(Marshaller.JAXB_格式的_输出,Boolean.TRUE)之后

您必须添加:
jaxbMarshaller.setProperty(Marshaller.JAXB_编码,“ISO-8859-1”)

以启用正确的编码。
另外,您必须将写入程序设置为相同的编码。
OutputStreamWriter writer=新的OutputStreamWriter(System.out,“ISO-8859-1”)


像这样的。。。
最后,这应该将您的XML编码为正确的ISO-8859-1,而不是UTF-8。

涉及哪些字体?例如,单词Certificación在PDF中显示为Certificaci?nthanks,我已经使用了ISO-8859-1,但我在HTML中进行了测试,结果很好。我的问题是如何将XML从UTF-8编码为ISO-8859-1以及adobe生命周期。正如我提到的,我将XML传递给adobe,我们使用XSD,我在这里做了如下更改,编辑了我的文章。这样,java将从一开始就将XML编码为正确的ISO-8859-1。希望有帮助。您也可以使用
StringWriter
而不是
OutputStreamWriter
。在这种情况下,您必须调用
.getBytes(“ISO-8859-1”)在由
obj2Xml
返回的字符串上。非常感谢您的帮助,控制台向我显示XML已使用ISO标准转换,但仍然是PDF,将特殊字符替换为“?”。您认为adobe生命周期中的某些设置需要修改才能解决此问题吗?我可以提供帮助。我想说java端和xml都是正确的,所以问题必须在其他地方。也许正如您所提到的,更改adobe生命周期中的某些设置可以解决此问题。不幸的是我不太熟悉生命周期。。。