如何使用java导出pdf格式的列表

如何使用java导出pdf格式的列表,java,arraylist,Java,Arraylist,对于web应用程序,我需要实现一个允许导出pdf格式列表的功能 我该怎么做? 有一个类允许它 或者如果你有任何建议,请 提前感谢您有一个名为的免费库,您可以使用它生成PDF,将其动态写入HTTP响应,或者作为使用Java的批处理过程。对于简单的事情来说,它很容易使用,尽管在线文档实际上并不存在——相反,你可以通过购买这本书来支持这个项目,其中一个选择是购买一本纸质版,包括一本PDF电子书,因此,您不必等待帖子。有一个名为的免费库,您可以使用它生成PDF,将其动态写入HTTP响应,或者作为使用Ja

对于web应用程序,我需要实现一个允许导出pdf格式列表的功能

我该怎么做? 有一个类允许它

或者如果你有任何建议,请


提前感谢您

有一个名为的免费库,您可以使用它生成PDF,将其动态写入HTTP响应,或者作为使用Java的批处理过程。对于简单的事情来说,它很容易使用,尽管在线文档实际上并不存在——相反,你可以通过购买这本书来支持这个项目,其中一个选择是购买一本纸质版,包括一本PDF电子书,因此,您不必等待帖子。

有一个名为的免费库,您可以使用它生成PDF,将其动态写入HTTP响应,或者作为使用Java的批处理过程。对于简单的事情,它很容易使用,尽管在线文档实际上并不存在——相反,你可以通过购买这本书来支持这个项目,其中一个选择是购买一本纸质的,包括一本PDF电子书,这样你就不用等帖子了。

你可以使用它的最新版本是在GNU Affero GPLv3许可下的。在教程中查看您需要的内容。

您可以使用它的最新版本,它是在GNU Affero GPLv3许可下的。在教程中查看您需要的内容。

一个简单的解决方案是针对Java的,它具有创建PDF的功能。因为听起来您的用例实际上只是简单地将列表输出到PDF,所以您可能只需要从PDFBox使用预先编写的实用程序。

一个简单的解决方案是Java,它具有创建PDF的功能。因为听起来您的用例实际上只是简单地将列表输出到PDF,所以您可能只需要从PDFBox使用预先编写的实用程序。

我认为免费应用程序报告的最佳解决方案是JasperReports


您与PDF没有任何关系,只要定义数据、POJO列表(如果需要)、字段、布局和创建输出即可。PDF是基于iText的受支持格式之一。

我认为免费应用程序报告的最佳解决方案是JasperReports


您与PDF没有任何关系,只要定义数据、POJO列表(如果需要)、字段、布局和创建输出即可。PDF是支持的格式之一,它基于iText。

我使用其他答案中提到的Apache PDF Box,但我试图展示具体的代码示例,因为没有一个答案表明&新手可能会因为在线可用的文档而挣扎,特别是在坐标系和行创建方面

下面是我的实用方法。valuesToExport是我希望逐个写入pdf的行&filepath是要将数据写入的pdf文件

我从多种类型的导出调用此方法,即当我有不同类型的POJO列表时。我首先将要写入pdf的每个pojo字段转换为字符串[],并放入列表中。字符串[]的每个元素表示一列

您可以根据需要更改多个常量,尤其是每个pdf页面的行数。我在示例代码中使用了每页10行

import java.util.List;
import java.nio.file.Path;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.font.PDFont;
import org.apache.pdfbox.pdmodel.font.PDType1Font;

public static void writeToPdf(List<String[]> valuesToExport, Path filePath) {
    try (PDDocument doc = new PDDocument()) {
        PDFont font = PDType1Font.HELVETICA;
        PDPage page = new PDPage();
        doc.addPage(page);
        PDPageContentStream content = new PDPageContentStream(doc, page);
        content.setFont(font, 12);
        int lines = 1;
        float pageHeight = page.getMediaBox().getHeight();
        for (String[] row : valuesToExport) {
        int startX = 0;
        for (String column : row) {
            content.beginText();
            content.newLineAtOffset(startX, pageHeight - 50 * lines);
            startX += startX + 100;
            content.showText(column);
            content.endText();
        }
        ++lines;
        if (lines > 10) {
            page = new PDPage();
            doc.addPage(page);
            content.close();
            content = new PDPageContentStream(doc, page);
            content.setFont(font, 12);
        }
        }
        content.close();
        doc.save(filePath.toFile());
    } catch (IOException ex) {
        //either log exception or rethrow it 
    }
    }

我使用其他答案中提到的ApachePDF框,但我试图展示具体的代码示例,因为没有一个答案表明&新手可能会因为在线可用的文档而挣扎,特别是在坐标系和行的创建方面

下面是我的实用方法。valuesToExport是我希望逐个写入pdf的行&filepath是要将数据写入的pdf文件

我从多种类型的导出调用此方法,即当我有不同类型的POJO列表时。我首先将要写入pdf的每个pojo字段转换为字符串[],并放入列表中。字符串[]的每个元素表示一列

您可以根据需要更改多个常量,尤其是每个pdf页面的行数。我在示例代码中使用了每页10行

import java.util.List;
import java.nio.file.Path;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.font.PDFont;
import org.apache.pdfbox.pdmodel.font.PDType1Font;

public static void writeToPdf(List<String[]> valuesToExport, Path filePath) {
    try (PDDocument doc = new PDDocument()) {
        PDFont font = PDType1Font.HELVETICA;
        PDPage page = new PDPage();
        doc.addPage(page);
        PDPageContentStream content = new PDPageContentStream(doc, page);
        content.setFont(font, 12);
        int lines = 1;
        float pageHeight = page.getMediaBox().getHeight();
        for (String[] row : valuesToExport) {
        int startX = 0;
        for (String column : row) {
            content.beginText();
            content.newLineAtOffset(startX, pageHeight - 50 * lines);
            startX += startX + 100;
            content.showText(column);
            content.endText();
        }
        ++lines;
        if (lines > 10) {
            page = new PDPage();
            doc.addPage(page);
            content.close();
            content = new PDPageContentStream(doc, page);
            content.setFont(font, 12);
        }
        }
        content.close();
        doc.save(filePath.toFile());
    } catch (IOException ex) {
        //either log exception or rethrow it 
    }
    }

不,我与iText项目没有任何关联。不,我与iText项目没有任何关联。