当前位置: 首页 > 知识库问答 >
问题:

Java使用飞碟生成PDF

海嘉赐
2023-03-14

我使用的罐子来自maven repo

我正在测试的代码来自以前的堆栈解决方案

我担心它可能过时了,因为图书馆被贬值了。测试以下代码时:

import java.io.ByteArrayInputStream;
import java.io.FileOutputStream;

import org.w3c.dom.Document;
import org.xhtmlrenderer.pdf.ITextRenderer;

public class test
{

    public static void main(String[] args)
    {
        ITextRenderer renderer = new ITextRenderer();

        // if you have html source in hand, use it to generate document object
        renderer.setDocumentFromString( "C:/Users/Goran/Documents/Documents/Development/workspace/FlyingSaucer/data/input/report.xhtml" );
        renderer.layout();

        String fileNameWithPath = "C:/Users/Goran/Documents/Documents/Development/workspace/FlyingSaucer/data/output/" + "PDF-FromHtmlString.pdf";
        FileOutputStream fos = new FileOutputStream( fileNameWithPath );
        renderer.createPDF( fos );
        fos.close();

        System.out.println( "File 2: '" + fileNameWithPath + "' created." );
    }

}

这一行我有以下错误:renderer。创建PDF(fos)

The type com.lowagie.text.DocumentException cannot be resolved. It is indirectly referenced from required .class files

有人能对此有所了解,或者建议在java中创建pdf文档的最佳方法吗?我有可用的XML和XHTML文档。

添加com时进行编辑。洛瓦吉。来自repo的文本库

Exception in thread "main" java.lang.NoClassDefFoundError: org/xhtmlrenderer/extend/UserAgentCallback
    at test.main(test.java:16)
Caused by: java.lang.ClassNotFoundException: org.xhtmlrenderer.extend.UserAgentCallback
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 1 more

我是否使用了正确的库/最新的库?

拥有最新库或知道存储它们的存储库的人可以链接它们吗?

编辑2放弃了使用飞碟和ApacheFop的想法。当前错误为:

Mar 10, 2016 9:58:23 PM org.apache.fop.events.LoggingEventListener processEvent
WARNING: Font "Symbol,normal,700" not found. Substituting with "Symbol,normal,400".
Mar 10, 2016 9:58:23 PM org.apache.fop.events.LoggingEventListener processEvent
WARNING: Font "ZapfDingbats,normal,700" not found. Substituting with "ZapfDingbats,normal,400".
Mar 10, 2016 9:58:23 PM org.apache.fop.events.LoggingEventListener processEvent
INFO: Rendered page #1.

共有2个答案

狄凯
2023-03-14

我使用与您提到的完全相同的依赖项,所以这应该不是问题。

但是,您肯定以错误的方式使用了方法setDocumentFromString。而不是:

renderer.setDocumentFromString( "C:/some/path/report.xhtml" );

输入参数必须是超文本标记语言本身,而不是它的路径。像这样:

renderer.setDocumentFromString( "<html><body>some content</body></html>" );

或者,(最好)使用setDocument方法,该方法以字符串或文件形式的路径作为输入。参见JavaDoc

易弘亮
2023-03-14

我创建了一个简单的Maven项目,具有以下依赖性:

    <dependency>
        <groupId>org.xhtmlrenderer</groupId>
        <artifactId>core-renderer</artifactId>
        <version>R8</version>
    </dependency>

我使用您上面发布的代码创建了一个测试类,并且能够毫无问题地编译它。这就是Eclipse显示为Maven依赖项的内容:

请注意,我必须更改这行代码才能工作:

renderer.setDocumentFromString("<html><body><strong>Hello</strong> <em>world</em>!</body></html>");

... 因为字符串应该是HTML内容本身,而不是文件的路径。

PDF看起来像这样:

我希望这有助于。。。

 类似资料:
  • 我正在使用飞碟生成pdf文件。我想要第一页,第二页是横向模式,其余的是纵向模式。所以,我这样做: 但是它会自动在第一个pdf文件中创建2个空白页?如何修复它?

  • 我有下面给我的html,当我把这个转换成PDF使用飞碟,它不适合A4的肖像大小。如何生成横向pdf文件。 我使用下面给定的代码将html转换为pdf

  • 我想用外部资源(jpg、css)从html创建pdf。 这是用于生成pdf File对象的代码,带有Flie Saucer和itext: 不幸的是,所有与https链接的资源都被忽略,而超文本传输协议资源运行良好。 编辑: 我扩展了iTextureAgent以拦截https调用资源,但出现了以下错误: 太阳安全供应商。证书路径。SunCertPathBuilderException:无法找到请求目

  • 问题内容: 我意识到之前曾有人问过这个问题(我查看了所有解决方案并尝试了所有解决方案),但我仍在尝试生成一个PDF文件,该文件的页眉和页脚在每个页面上都重复出现。 我在使用R8时尝试了许多不同的方法来使其正常工作,但到目前为止没有任何效果。我测试过的一些方法是https://gist.github.com/626264,使用运行元素和边距框 http://pigeonholdings.com/pr

  • 我使用飞碟R8生成PDF文件。PDF需要一个标题,该标题将在每一页上重复。标题将由用户指定,因此我无法确定其高度。我设法使页眉在每一页上重复,但问题是,如果页眉有多行文本,它不会动态地重新调整正文的高度,最终会与正文重叠。这是我的代码: 使用飞碟生成后,生成的PDF如下所示: 谁能帮我找到一个解决办法,使我的头球不与身体其他部位重叠?

  • 我正在使用飞碟/iText生成报告。现在,报告有一个条件,即如果发生特定情况,报告应移动到pdf的下一页,并在pdf上添加数据,等等<问候Pawan