gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:54:47 28 4
gpt4 key购买 nike

我有一个包含大量列的 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com