在生成PDF时添加"Č"或"Ć"等字符时出现问题.我主要使用段落在我的PDF报告中插入一些静态文本.这是我使用的一些示例代码:
var document = new Document();
document.Open();
Paragraph p1 = new Paragraph("Testing of letters ?,?,Š,Ž,?", new Font(Font.FontFamily.HELVETICA, 10));
document.Add(p1);
Run Code Online (Sandbox Code Playgroud)
生成PDF文件时得到的输出如下所示:"测试字母,Š,Ž,Đ"
出于某种原因,iTextSharp似乎不会识别这些字母,例如"Č"和"Ć".
我正在使用 XMLWorker 将 HTML 字符串解析为 PDF 文档,但找不到控制正在生成的 PDF 的行距的方法。
Document document = new Document(PageSize.LETTER, 72f, 72f, 108f, 90f);
MemoryStream stream1 = new MemoryStream();
PdfWriter pdfWriter = PdfWriter.GetInstance(document, stream1);
document.Open();
//parse HTML into document
XMLWorkerHelper.GetInstance().ParseXHtml(pdfWriter, document, new StringReader(summary.Content));
Run Code Online (Sandbox Code Playgroud)
“summary.Content”是来自数据库字段的 HTML 字符串。
现在,我最近将我们的 ITextSharp 库升级到 5.5.5.0,并升级到新的 XMLWorker 库。使用上面的代码,行距(PDF 中的“前导”)比之前生成的 PDF 小得多。我需要确保行距看起来和以前一样。
我读到我可以在我构建的段落上设置前导,但是当简单地调用 ParseXHtml() 时,这对我没有帮助。我读到 ITextSharp 默认的前导大小是字体大小的 1.5 倍。
我在这里阅读了itextsupport 文档,我可以使用这一行来使用 XML Worker 附带的 default.css。
CSSResolver cssResolver = XMLWorkerHelper.getInstance().getDefaultCssResolver(true);
我认为默认 CSS 可能会生成与我的旧 PDF 具有相同前导的 PDF,但以下代码生成的输出 PDF 与我仅使用 ParseXHtml() 时的输出 PDF 相同。 …
我正在尝试使用NOTO字体(https://www.google.com/get/noto/)来显示中文字符.这是我的示例代码,来自iText的修改示例代码.
public void createPdf(String filename) throws IOException, DocumentException {
Document document = new Document();
PdfWriter.getInstance(document, new FileOutputStream(filename));
document.open();
//This is simple English Font
FontFactory.register("c:/temp/fonts/NotoSerif-Bold.ttf", "my_nato_font");
Font myBoldFont = FontFactory.getFont("my_nato_font");
BaseFont bf = myBoldFont.getBaseFont();
document.add(new Paragraph(bf.getPostscriptFontName(), myBoldFont));
//This is Chinese font
//Option 1 :
Font myAdobeTypekit = FontFactory.getFont("SourceHanSansSC-Regular", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
//Option 2 :
/*FontFactory.register("C:/temp/AdobeFonts/source-han-sans-1.001R/OTF/SimplifiedChinese/SourceHanSansSC-Regular.otf", "my_hans_font");
Font myAdobeTypekit = FontFactory.getFont("my_hans_font", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);*/
document.add(Chunk.NEWLINE);
document.add(new Paragraph("??", myAdobeTypekit));
document.add(Chunk.NEWLINE);
//simplified chinese
document.add(new Paragraph("???????", myAdobeTypekit));
document.add(Chunk.NEWLINE);
document.add(new Paragraph("??", myAdobeTypekit));
document.add(new Paragraph("The Source Han …Run Code Online (Sandbox Code Playgroud) 在显示阿拉伯语内容以及在我尝试创建的PDF示例中从右到左开始书写时,我需要您的帮助。这是示例代码:
public static void main(String[] args) throws IOException {
try {
BaseFont ArialBase = BaseFont.createFont("C:\\Users\\dell\\Desktop\\arialbd.ttf", BaseFont.IDENTITY_H, true);
Font ArialFont = new Font(ArialBase, 20);
Document document = new Document(PageSize.LETTER);
PdfWriter.getInstance(document, new FileOutputStream("C:\\Users\\dell\\Desktop\\HelloWorld.pdf"));
document.setMargins(72f, 72f, 72f, 0f);
document.open();
document.add(new Paragraph("?????? ??????????,",ArialFont));
document.close();
System.out.println("PDF Completed");
} catch (DocumentException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
使用上面的代码,阿拉伯文本将显示如下:
الموقعالإ¥„كتروني,
身份不明,文字从左到右。那么我该如何解决呢?