首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用pdfbox将水印添加到景观文件中

如何使用pdfbox将水印添加到景观文件中
EN

Stack Overflow用户
提问于 2016-07-21 22:45:41
回答 1查看 515关注 0票数 0

我正在使用pdfbox 1.8.11和FOP将水印添加到pdf:s。它对大多数输入pdf文件都很有效。然而,我得到了一个问题,当文件是在横向,水印将是90度右旋转。我有类似的问题与可见签名,它是固定的。多亏了sign landscape file中的解决方案。有没有办法让水印旋转起作用?提前感谢!

水印的原始图片为:Up arrow

在FOP水印之后,图像会被旋转:image rotated

EN

回答 1

Stack Overflow用户

发布于 2016-10-24 20:16:07

为回答晚了而道歉。在这里添加“水印”的想法是使用fop apache fop添加一些转换到原始pdf中。你可以从apache fop网站上找到java代码示例和fo模板示例。

在任何情况下,我也将在这里说明这个示例: 1.如何使用fop的java代码

代码语言:javascript
复制
import org.apache.fop.apps.*;
import org.xml.sax.*;
import java.io.*;
import javax.xml.transform.*;
import javax.xml.transform.sax.*;
import javax.xml.transform.stream.*;

class rendtest {

    private static FopFactory fopFactory = FopFactory.newInstance(new File(".").toURI());
    private static TransformerFactory tFactory = TransformerFactory.newInstance();

    public static void main(String args[]) {
        OutputStream out;
        try {
            //Load the stylesheet
            Templates templates = tFactory.newTemplates(
                new StreamSource(new File(args[1])));

            //First run (to /dev/null)
            out = new org.apache.commons.io.output.NullOutputStream();
            FOUserAgent foUserAgent = fopFactory.newFOUserAgent();
            Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, foUserAgent, out);
            Transformer transformer = templates.newTransformer();
            transformer.setParameter("page-count", "#");
            transformer.transform(new StreamSource(new File(args[0])),
                new SAXResult(fop.getDefaultHandler()));

            //Get total page count
            String pageCount = Integer.toString(driver.getResults().getPageCount());

            //Second run (the real thing)
            out = new java.io.FileOutputStream(args[2]);
            out = new java.io.BufferedOutputStream(out);
            try {
              foUserAgent = fopFactory.newFOUserAgent();
              fop = fopFactory.newFop(MimeConstants.MIME_PDF, foUserAgent, out);
              transformer = templates.newTransformer();
              transformer.setParameter("page-count", pageCount);
              transformer.transform(new StreamSource(new File(args[0])),
                  new SAXResult(fop.getDefaultHandler()));
            } finally {
                out.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

  1. 对于我在渲染景观pdf:s时遇到的问题,在fop模板中,你只需要再添加一个属性来告诉这个文件是在景观布局中。该属性用于设置reference-orientation="90“。然后,您在fop模板中的其他定义将被正确应用。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38507391

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档