我已经问过关于这个问题的另一个问题,但我无法让它工作。我更改了我的代码,所以现在它是这样的:
import java.io.FileOutputStream;
import java.io.StringReader;
import com.itextpdf.text.Document;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.pdf.PdfWriter;
import com.itextpdf.tool.xml.XMLWorkerHelper;
public class HTM {
public static void main(String ... args ) {
try {
Document document = new Document(PageSize.LETTER);
PdfWriter pdfWriter = PdfWriter.getInstance
(document, new FileOutputStream("C:\\testpdf.pdf"));
document.open();
XMLWorkerHelper worker = XMLWorkerHelper.getInstance();
String htmlString = "<html><head>"
+ "<meta http-equiv=\"content-type\" content=\"application/xhtml+xml; charset=UTF-8\" />"
+ "</head><body>"
+ "<h1>Zdravo Кристијан!</h1>"
+ "</body></html>";
worker.parseXHtml(pdfWriter, document, new StringReader(htmlString));
document.close();
System.out.println("Done.");
}
catch (Exception e) {
e.printStackTrace();
}
}
}
我的问题是 pdf 不显示西里尔字符。我知道如何使用不同的字符集和字体制作简单的 pdf,但我想将 html 文件或字符串(在我的例子中是 html 字符串)转换为 pdf。提前致谢。
最佳答案
根据@bruno-lowagie 的评论,只需对您发布的代码进行少量更改即可使其在 Windows 上运行。有关如何指定特定字体的更多信息,请查看 Bruno 提出的示例。
public class HTM {
public static void main(String ... args ) {
try {
Document document = new Document(PageSize.LETTER);
PdfWriter pdfWriter = PdfWriter.getInstance(document, new FileOutputStream("testpdf.pdf"));
document.open();
XMLWorkerHelper worker = XMLWorkerHelper.getInstance();
String htmlString = "<html><head>"
+ "<meta http-equiv=\"content-type\" content=\"application/xhtml+xml; charset=UTF-8\" />"
+ "</head><body>"
+ "<p style=\"font-family:courier new\">" // the font to use
+ "<h1>Zdravo Кристијан!</h1>"
+ "</p>"
+ "<h1>Zdravo Кристијан!</h1>"
+ "</body></html>";
worker.parseXHtml(pdfWriter, document, new StringReader(htmlString));
document.close();
System.out.println("Done.");
}
catch (Exception e) {
e.printStackTrace();
}
}
}
关于java - itextpdf HTML 到包含西里尔字母的 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27780035/