java - 如何使用 Flying Saucer 将大表格转换为 PDF?

标签 java itext flying-saucer html-to-pdf

我有一个包含大量列的 html(您可以在此 link 找到示例)

现在,当我尝试使用 flying saucer 将其转换为 PDF 时(jar link 重新编译以使用 iText 2.1.X),generated PDF已截断列

有什么方法可以让 Flying Saucer 根据html内容来打破表格或增加页面宽度?

这是我正在使用的代码

String doc = file.toURI().toURL().toString();
ITextRenderer renderer = new ITextRenderer();
renderer.setDocument(doc);
String outputFile = "test.pdf";
OutputStream os = new FileOutputStream(outputFile);
renderer.layout();
renderer.createPDF(os);
os.flush();
os.close();

file 是我要转换的 html。

最佳答案

使用YAHP library.This 是迄今为止我工作过的最好的将 HTML 转换为 PDF 的库。这是写在 Flying Saucer 的顶部,与它的受欢迎程度相比,这是一个很大的失望。它甚至不会呈现简单的输入文本框。所以,我转向了 YAHP 库,它非常适合您案例。

在你得到与这个库相关的所有 jar 之后尝试这段代码。

import java.io.File;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.allcolor.yahp.converter.CYaHPConverter;
import org.allcolor.yahp.converter.IHtmlToPdfTransformer;
import org.htmlcleaner.CleanerProperties;
import org.htmlcleaner.HtmlCleaner;
import org.htmlcleaner.PrettyHtmlSerializer;
import org.htmlcleaner.TagNode;

public class YahpHtmlToPdf {

    @SuppressWarnings({ "unchecked", "rawtypes" })
    public static void main(String[] args) {
        try{
            CleanerProperties props = new CleanerProperties();
            props.setTranslateSpecialEntities(true);
            props.setTransResCharsToNCR(true);
            props.setOmitComments(true);
            TagNode tagNode = new HtmlCleaner(props).clean(new File("C:\\Users\\MyComputer\\Desktop\\aspose.html"));
            String newString=new PrettyHtmlSerializer(props).getAsString(tagNode, "ISO-8859-1");
            CYaHPConverter converter = new CYaHPConverter();
            File fout = new File("C:\\sample\\aspose.pdf");
            FileOutputStream out = new FileOutputStream(fout);
            Map properties = new HashMap();
            List headerFooterList = new ArrayList();
            properties.put(IHtmlToPdfTransformer.PDF_RENDERER_CLASS,IHtmlToPdfTransformer.FLYINGSAUCER_PDF_RENDERER);
            converter.convertToPdf(newString,IHtmlToPdfTransformer.A1P,headerFooterList, "file:///temp/",out,properties);
            out.flush();
            out.close();
        }catch(Exception e){
            e.printStackTrace();
        }
    }   

}

enter image description here这是用您的 html 生成的 pdf 的屏幕截图。 .您可以像这样指定页面大小 IHtmlToPdfTransformer.A1P

关于java - 如何使用 Flying Saucer 将大表格转换为 PDF?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13582987/

相关文章:

c# - 使用 iTextSharp 签署 PDF

css - Flying Saucer xhtml to pdf header margins on every page

java - String[] 数组变量显示空值,尽管我正在为其设置一个值

powershell - iTextSharp文本文件将在横向 View 中变为PowerShell

c# - 使用 C# 在签名中添加 LTV 会使 pdf 无效

java - 使用 Flying Saucer 解析 protected 资源(ITextRenderer)

java - 使用 ITextRenderer 从 HTML 生成泰卢固语 PDF 无法获得准确的字符?

java - 你如何在@SpringBootTest 中传递程序参数?

java - Spring MVC : application context is running twice

java - Richfaces 3.3 ExtendedDataTable onRowClick 正在设置上一行单击的数据