【问题标题】:Rotate PDFs using iText and org.w3c.dom.Document使用 iText 和 org.w3c.dom.Document 旋转 PDF
【发布时间】:2026-01-09 13:50:01
【问题描述】:

我正在使用 Java Servlet 中的 iText。我正在努力从我的 JSP 文件中创建 PDF。我已经看到这是不可能的,所以我创建了解析字符串(我的 HTML 页面)的新 servlet。这里是部分代码:

StringBuffer buffer = getHTMLinBuffer(consulenti, anUser);
DocumentBuilder builder = DocumentBuilderFactory
    .newInstance().newDocumentBuilder();
Document doc = builder.parse(new ByteArrayInputStream(buffer.toString().getBytes("UTF-8")));
ITextRenderer renderer = new ITextRenderer();
renderer.setDocument(doc, null);
String fileName = "listaConsulenti.pdf";
String absolutePath = getServletContext().getRealPath("/");
String tempPath = absolutePath + "temp/";
File file = new File(tempPath, fileName);
file.createNewFile();
OutputStream os = new FileOutputStream(file);
renderer.layout();
renderer.createPDF(os);
os.close();

此代码有效。 现在我必须创建另一个需要将 A4 页面旋转 90° 的 PDF。使用 org.w3c.dom.Document 我找不到怎么做。 有可能使用另一个文档类, com.itextpdf.text.Document 具有旋转()方法来旋转它,但是使用这个文档我找不到如何解析我的字符串(HTML 代码)...

提示?

【问题讨论】:

    标签: java pdf-generation itext


    【解决方案1】:

    ...我刚刚发现,iTextRendere 不是 iText 的一部分,而是 Flying Source 的一部分。 在this link 中,我已经看到横向页面的创建只是通过向源 (X)HTML 添加一些 css 来完成:

    <style type="text/css"> 
    @page{ size: 11.69in 8.27in;}
    ...
    </style>
    

    【讨论】:

      【解决方案2】:

      如果您只需要它的一侧的文档,您可以使用以下内容:

      private Document document = new Document(PageSize.A4.rotate());
      

      【讨论】:

      • 不,我不能。使用 org.w3c.dom.Document 是不可能的。