标签: xhtmlrenderer

使用Flying Saucer,如何在页脚的每个页面上生成包含页码和页面总数的pdf?

我花了更多的研究比我自己想要的更多,所以我将在这里发布一个全面的答案.似乎这样做的信息分散在许多不同的网站上,我想把它放在一个地方. 这个答案 可能是一回事,但我的眼睛茫然,因为它在Java字符串中,而不是在html模板中.这是问题:

我正在渲染PDF,我想在页面底部写一个页脚,上面写着"Page n of m",其中"n"是您所在的页码,"m"是文档中的总页数.我怎么做?

css java pdf flying-saucer xhtmlrenderer

25
推荐指数
2
解决办法
1万
查看次数

CSS转PDF,飞碟中的CSS:-fs-table-paginate导致边界崩溃:崩溃无效

现在我使用xhtmlrenderer将html转换为PDF.我的maven依赖如下:

    <dependency>
        <groupId>org.mvel</groupId>
        <artifactId>mvel2</artifactId>
        <version>2.1.0.drools2</version>
        <scope>compile</scope>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.xhtmlrenderer</groupId>
        <artifactId>core-renderer</artifactId>
        <version>R8</version>
        <scope>compile</scope>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>com.lowagie</groupId>
        <artifactId>itext</artifactId>
        <version>2.0.8</version>
        <scope>compile</scope>
        <optional>true</optional>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

我试图在每个PDF页面重复表头.所以我使用css:. -fs-table-paginate: paginate解释CSS就在这里.

table {
        -fs-table-paginate: paginate;
    }`
Run Code Online (Sandbox Code Playgroud)
  • 当与值(-fs-table-paginate)paginate一起使用时,修改表格布局算法以在后续页面上重复表格页眉和页脚,并改善跨页面的单元格的外观(例如通过关闭和重新打开边框),但就是这样.如果桌子的最小宽度比页面宽,它将被切断.

  • 当添加上面的CSS时,我的表的边框是分离的.

在此输入图像描述

  • 在添加css之前,表格的边框会折叠为单边框.

在此输入图像描述

所以我觉得table { -fs-table-paginate: paginate; }我的桌子border-collapse:collapse无效了. 那么我该怎么做才能解决这个问题,让桌子边框崩溃?

我的应用程序CSS表格如下

-fs-table-paginate
Run Code Online (Sandbox Code Playgroud)

并且当-fs-table-paginate: paginate; 有时添加表头时不正常.标题将无法正确显示.并且下面的表头会增加一个额外的空行.如下: 在此输入图像描述

有人知道这些想法吗?

html css flying-saucer xhtmlrenderer

15
推荐指数
2
解决办法
1万
查看次数

从flyingsaucer生成的pdf中的servlet渲染图像

我正在使用flyingsaucer通过servlet将xhtml文档呈现为pdf,该servlet返回生成的pdf文档.xhtml文档具有从另一个servlet请求的图像.图像servlet在返回适当的图像之前检查谁登录.下面的代码显示了如何请求图像:

<img height="140" width="140" src="http://localhost:8080/myapp/servlet/DisplayPic" />
Run Code Online (Sandbox Code Playgroud)

我的问题是图像的http请求来自pdf渲染器而不是登录用户,因此图像servlet不知道谁登录,因此不返回所需的图像.

我目前正在使用下面的代码来呈现xhtml文档:

ITextRenderer renderer = new ITextRenderer();
renderer.setDocumentFromString(xhtmlDocumentAsString);
renderer.layout();
os = response.getOutputStream();
renderer.createPDF(os);
Run Code Online (Sandbox Code Playgroud)

我需要在请求图像servlet时维护用户的会话,或者为渲染器提供用于该特定xhtml元素的图像.我认为后者可以使用a完成,ReplacedElementFactory但我无法挖掘出任何可以帮助我的示例代码.

java pdf-generation itext flying-saucer xhtmlrenderer

10
推荐指数
1
解决办法
1万
查看次数

使用flot graph创建PDF报告

我正在尝试为我的客户实现自动报告生成工具.我需要以pdf格式创建报告,我非常适合使用Jquery flot创建图形.我只需要一种方法来获取pdf中的图形.

我尝试使用飞碟(xhtmlrenderer)捕获图形的图像,但它似乎没有帮助我,因为图形是由JavaScript创建的.

xhtmlrenderer可以捕获用javascript创建的元素吗?

或者是他们可以捕获图形图像的任何其他工具?

javascript pdf jquery flot xhtmlrenderer

9
推荐指数
2
解决办法
9467
查看次数

FlyingSaucer LTR/RTL/BiDi问题与阿拉伯语文本

我正在使用飞碟xhtmlrenderer来构建pdf文档.到目前为止一切正常 - 现在我们应该在pdf中生成阿拉伯语文本.Xhtmlrenderer以相反的顺序呈现阿拉伯语文本.

我在网上(可能在他们自己的网站上)读过xhtmlrenderer不支持bidi/rtl的地方.但IText本身包含通过ColumnText和PdfPTable处理阿拉伯语和希伯来语的示例(可在此处找到源代码:http://sourceforge.net/projects/itextpdf/files/Examples/examples-155/examples-155.zip/download - arabic_hebrew.java),那些工作正常.

我试图在xhtmlrenderer的ReplacedElementFactory/ITextReplacedElement中使用itext api,但找不到定位元素的好例子.有没有人试过这样做?或者可能有一个更简单(或至少工作)的解决方案?

java pdf bidi arabic xhtmlrenderer

8
推荐指数
1
解决办法
2283
查看次数

使用来自html的Flying-Saucer渲染PDF格式的嵌入图像

我有一个xhtml文档,我正在使用flyingsaucer变成PDF.xhtml有几个标签,内嵌base64编码图像.xhtml的来源是动态的,因此图像标签所在的结构可能会有所不同.这是标签的样子:

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAagAAAEuCAYAAADbW4YFAAAgAElEQVR4Aex9CYBdRZ ...
Run Code Online (Sandbox Code Playgroud)

当我在浏览器中查看html时,图像显示正确,但是,img元素不会在最终的PDF中呈现.以下是我如何渲染它来创建PDF.

ITextRenderer renderer = new ITextRenderer();
renderer.setDocument(builder.parse(source), "");
renderer.layout();
renderer.createPDF(response.getOutputStream(),true);
Run Code Online (Sandbox Code Playgroud)

任何人都可以让我知道我应该采取什么方法来实现这一目标?我看到了这个帖子,但是,我正在使用内联图像,所以我看不出如何使用Edd的解决方案来实现这一点.

提前致谢

java pdf-generation embedded-resource flying-saucer xhtmlrenderer

8
推荐指数
2
解决办法
1万
查看次数

是否可以使用飞碟(XHTML-Renderer)将 css 解析为类路径资源?

我正在尝试将资源打包到一个 jar 中,但是我无法让 Flying Saucer 在类路径上找到 css -我无法轻松构建 URL 以无缝解决这个问题

飞碟有没有办法在类路径上指定资源包来解析项目和图像?

注意:我在一个没有文件系统写入权限的 webstart 应用程序中运行它,所以 jar 扩展不是一个真正的选择。

css java flying-saucer xhtmlrenderer

7
推荐指数
1
解决办法
3263
查看次数

使用 FlyingSaucer 和 ITextRenderer 生成的 Acrobat PDF 似乎正在删除链接

我有包含以下链接的 HTML:

<p class="Results">Web : 
SPLIT<a href="http://www.google.fr/">http://www</a>
SPLIT<a href="http://www.google.fr/">.google</a>
SPLIT<a href="http://www.google.fr/">.fr/</a>
</p>
Run Code Online (Sandbox Code Playgroud)

我们正在使用 .html 将 HTML 转换为 PDF flying-saucer

我打开了以下结果的 PDF,但链接不可点击。似乎href没有添加 s。

如果我删除这个SPLIT词,链接是可点击的,但只是因为link detector如果它们是有效的 URL ,内置阅读器使它们可点击。

任何想法为什么我的链接在最终的 PDF 中被删除?

代码:

  ITextRenderer itextRender = null;
  Tidy tidy = new Tidy();
  tidy.setXmlOut(true);
  tidy.setShowWarnings(false);
  // tidy.setXmlTags(false);
  tidy.setInputEncoding(UTF_8_DN);
  tidy.setOutputEncoding(UTF_8_DN);
  tidy.setXHTML(true);//
  tidy.setMakeClean(true);

  dataStream = new ByteArrayInputStream(data);

  stream = new ByteArrayOutputStream(32 * 1024);

  Post process - Convert Html into Xhtml valid format
  org.w3c.dom.Document w3cDoc = tidy.parseDOM(dataStream, stream);

  itextRender = …
Run Code Online (Sandbox Code Playgroud)

html pdf itext flying-saucer xhtmlrenderer

7
推荐指数
0
解决办法
720
查看次数

使用Flying Saucer将xhtml字符串转换为PDF的最简单方法是什么?

我已经使用飞碟一段时间了,结果非常棒.

我可以像这样通过uri设置文档

ITextRenderer renderer = new ITextRenderer();
renderer.setDocument(xhtmlUri);
Run Code Online (Sandbox Code Playgroud)

这很好,因为它将解析相对于给定URI的所有相对css资源等.但是,我现在正在生成xhtml,并希望将其直接呈现为PDF(不保存文件).ITextRenderer中的相应方法似乎是:

private Document loadDocument(final String uri) {
    return _sharedContext.getUac().getXMLResource(uri).getDocument();
}

public void setDocument(String uri) {
    setDocument(loadDocument(uri), uri);
}

public void setDocument(Document doc, String url) {
    setDocument(doc, url, new XhtmlNamespaceHandler());
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我现有的代码只给出了uri,ITextRendererDocument为我创建了这个代码.

Document从格式化的xhtml字符串创建最短的方法是什么?我更喜欢使用现有的Flying Saucer库,而不必导入另一个XML解析jar(只是为了一致的错误和功能).

pdf xhtml rendering flying-saucer xhtmlrenderer

6
推荐指数
1
解决办法
8591
查看次数

使用Flying Saucer解决受保护资源(ITextRenderer)

我正在使用Flying Saucer从xhtml创建一个pdf,托管在tomcat服务器上.pdf中包含的大多数图像都是公开可用的(徽标等),但其中一些图像在登录后受到保护(即,如果用户已登录,则通过servlet流式传输).

当我在浏览器中粘贴网址时,图像当然显示正常,因为浏览器会发送带有请求的会话.但是当Flying Saucer渲染pdf时,它不包括受保护的图像,因为它对会话一无所知.

所以,我的问题是; 是否有任何方法可以包含Flying Saucer的字节流来解决,就像可以添加可解析的字体一样?我试图像这样,但有没有简单的方法来设置UAC的ITextRenderer,并抱怨每次我试过一次.

java pdf resolve flying-saucer xhtmlrenderer

6
推荐指数
1
解决办法
4476
查看次数