我正在尝试从一个具有中文字符的html创建pdf,在这个我有奇怪的概率,来自html的具有中文字符的行并不完全显示在从中生成的pdf中。
以下是我的html:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1?DTD/transitional.dtd">
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>some title.</title>
<style type="text/css">
.name
{
font-family: "Arial Unicode MS";
color:red;
margin-left: 5px;
margin-right: 5px
}
</style>
</head>
<body>
<b class="name">
LLTRN,DEBIT,,,6841,FXW,,CNY,PAY,C,,,,DD,,ord par nm,,,,,,,CN,百威英博雪津(三明)啤酒有限公司,,,,,,,CN,20140617,,CNY,647438.24,OUR,,,,,,,,SHANGHAI,CN,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
<br>
RDF,FTX,TEXT
<br>
</b>
<br>
</body></html>
下面是我的itext渲染器代码:
StringWriter writer = new StringWriter();
Tidy tidy = new Tidy();
tidy.setTidyMark(false);
tidy.setDocType("omit");
tidy.setXHTML(true);
tidy.setInputEncoding("utf-8");
tidy.setOutputEncoding("utf-8");
//tidy.parse(new StringReader(documentJsoup.toString()), writer);
tidy.parse(new StringReader(inputFileString), writer);
writer.close();
String pdfContent = writer.toString();
// Creating an instance of iText renderer which will be used to generate the pdf from the html document.
ITextRenderer renderer = new ITextRenderer();
/*renderer.setDocument(doc, baseurl);
renderer.layout();
renderer.createPDF(os);
os.flush();
// close all the streams
//fis.close();
//os.close();
//instream.close();
*/
ITextFontResolver resolver = renderer.getFontResolver();
//renderer.getFontResolver().addFont("C:\\Windows\\Fonts\\arialuni.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
resolver.addFont("C:\\Windows\\Fonts\\arialuni.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
renderer.setDocumentFromString(pdfContent);
renderer.layout();
renderer.createPDF(os);
由于我使用了字体解析器和添加字体,中文字符显示....但是pdf显示缺少内容....该行的最后几个字符(即“上海”中的“AI”和下一个“CN、、、、、、、、、、、、、、、、、、、、、、、、、、“)不可见....它看起来像是:
我试了很多,想看看哪里出了问题,但找不到解决办法。你有人能帮我解决这个问题吗??TIA!
问题是飞碟不管理中文文本中的换行符。它只在空格上插入换行符。在您的例子中,这意味着它不能在“nm、、、”之后插入换行符,并且它不适合该行。
这是飞碟中的一个已知错误(见此处),但它不太可能很快被修复。
唯一的解决方法是在字符串中的中文字符后插入一个空格。这将使所有文本可见。
我有两个不同的JTextPanes,第一个是不同线程发送消息的日志。在html文件中有保存的会话,当用户加载它们时,这些文件被用作第二个JTextPane的内容。这两个JTextPanes都具有html内容类型。 表格和空格还在。 表格和空格都不见了。我尝试使用而不是简单的空格,但结果是一样的。 第二个JTextPane的代码:
如何从此PDF文件中获取字段?它是由Adobe LiveCycle Designer创建的动态PDF。如果在web浏览器中打开链接,您可能会看到一个以“请稍候…”开头的页面如果您下载文件并通过Adobe Reader(5.0或更高版本)打开,您应该可以看到所有8页。 因此,当通过阅读时,您会得到一个空字典,因为它将文件呈现为单个页面,就像您通过Web浏览器看到的那样。 您可以使用Java依赖库ti
null null
我想用Java创建一个PDF(我更喜欢在这里使用PDFBox,但这不是一个严格的要求)。部分内容必须 在屏幕上可见 但打印时不可见 (把它想象成标题,它已经预先打印在纸上,但是PDF的数字版本应该在屏幕上显示这个标题,而不是打印它) 我看到了这篇文章,它展示了一个很好的内容示例,即仅打印但在屏幕上不可见:创建一个仅在使用PDFBox打印时显示的水印(pdf可选内容) 现在我需要完全相反的:在屏幕上
我的STS版本:3.7.1.RELEASE,内部版本Id:201510041213,平台:Eclipse Mars。1(4.5.1)在选择例如Spring Starter project时没有创建正确的项目 当与我现有的一个项目进行比较时,我可以看到缺少了Builder。创建的项目仅包含Maven Builder 我的参考项目有Maven、Java和Spring project Builders。
假设我有三节课: 我的问题是: 在这种情况下创建了多少个对象? 如果创建了一个对象,那么Super()如何在内部调用父类构造函数?