Java PDF格式,显示西班牙特别特许状,如“?”&引用;
adobe将特殊的西班牙语字符显示为“?”。我需要从adobe生命周期还是从Java方面解决这个问题?我使用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
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生命周期中的某些设置可以解决此问题。不幸的是我不太熟悉生命周期。。。