我有一些 HTML 内容(包括格式化标签,例如strong
、图像等)。在我的 Java 代码中,我想将此 HTML 内容转换为 PDF 文档,而不丢失 HTML 格式。
有没有办法用 Java 来实现(使用 iText 或任何其他库)?
I used ITextRenderer
来自飞碟 https://code.google.com/archive/p/flying-saucer/项目。
这是一个简短的、独立的、有效的示例。
就我而言,我想稍后将字节流式传输到电子邮件附件中。
因此,在示例中,我将其写入文件纯粹是为了演示这个问题。这是Java 8。
import com.lowagie.text.DocumentException;
import org.apache.commons.io.FileUtils;
import org.xhtmlrenderer.pdf.ITextRenderer;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
public class So4712641 {
public static void main(String... args) throws DocumentException, IOException {
FileUtils.writeByteArrayToFile(new File("So4712641.pdf"), toPdf("<b>You gotta walk and don't look back</b>"));
}
/**
* Generate a PDF document
* @param html HTML as a string
* @return bytes of PDF document
*/
private static byte[] toPdf(String html) throws DocumentException, IOException {
final ITextRenderer renderer = new ITextRenderer();
renderer.setDocumentFromString(html);
renderer.layout();
try (ByteArrayOutputStream fos = new ByteArrayOutputStream(html.length())) {
renderer.createPDF(fos);
return fos.toByteArray();
}
}
}
这给了我
为了完整起见,这里是我的 Maven 的相关部分pom.xml
<dependencies>
<dependency>
<groupId>org.xhtmlrenderer</groupId>
<artifactId>flying-saucer-pdf</artifactId>
<version>9.0.8</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
</dependencies>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)