java - itextpdf HTML 到包含西里尔字母的 PDF

标签 java html pdf character-encoding itext

我已经问过关于这个问题的另一个问题,但我无法让它工作。我更改了我的代码,所以现在它是这样的:

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/

相关文章:

Java 变量未按计时器更新

javascript - 如何在JS中切换视频质量?

html - 为什么表单标签需要 "for"属性?

php - 链接点击的JQuery问题

pdf - mpdf 从另一个 pdf 文档导入所有页面

java - 在 Kotlin(和 Gradle)中使用 Hibernate Validator Annotation Processor

java - 如何从 Antlr4 语法在控制台上打印一些内容

java - 使用 BigInteger 乘法运算符

javascript - jZebra 小程序测试无需打印机

javascript - 如何将自定义日期分配给pdf日期字段?