4

我正在尝试将csv文件解析为pdf. 我到目前为止所拥有的附在下面。

我的问题是这段代码最终在 pdf 中的文件在 csv 文件的第一行被截断,我不知道为什么。[附上的例子]基本上我想要一个没有任何操作的csv文件的pdf版本。我确信这是我如何将数据添加到 itext pdf 的问题,但我真的找不到另一种将数组转发到 pdf 文件的方法。关于修复代码或更简单的任何想法?

public static void main(String[] args) throws IOException, DocumentException {
    @SuppressWarnings("resource")
    CSVReader reader = new CSVReader(new FileReader("data1.csv") ,'\'');
    String [] nextLine;
    while ((nextLine = reader.readNext()) != null) {
            // nextLine[] is an array of values from the line
            System.out.println(nextLine[0]);
            String test; 
            test = nextLine[0];

            // step 1
            Document document = new Document();

            // step 2
            PdfWriter.getInstance(document, new FileOutputStream("Test.pdf"));

            // step 3
            document.open();

            // step 4
            PdfPTable arrayTable3 = new PdfPTable(1); 
            arrayTable3.setHorizontalAlignment(Element.ALIGN_LEFT); 

            Phrase phrase1 = new Phrase(nextLine[0]); 
            PdfPCell arrayDetailsCell3 = new PdfPCell(); 

            arrayDetailsCell3.addElement(phrase1); 

            // Add the cell to the table 
            arrayTable3.addCell(arrayDetailsCell3); 

            // Add table to the document 
            document.add(arrayTable3); 

            // step 5
            document.close();
    }
}

CSV 文件:http
://dl.dropbox.com/u/11365830/data1.csv PDF 文件:http ://dl.dropbox.com/u/11365830/Test.pdf

4

2 回答 2

1

这是@anand 提出的解决方案(由于缺乏对 SO 工作原理的理解,anand 已将其编辑为问题)。

public void createPdf(String filename) throws DocumentException, IOException {
    // step 1
    Document document = new Document();

    // step 2
    PdfWriter.getInstance(document, new FileOutputStream(filename));

    // step 3
    document.open();

    // step 4
    @SuppressWarnings("resource")
    CSVReader reader = new CSVReader(new FileReader("testing.csv") ,'\'');
    List< String[]> myEntries = reader.readAll();
    for (int i = 31; i < myEntries.size(); i++) {
        String[] strings = myEntries.get(i);
        for (int j = 0; j < strings.length; j++) {
             document.add(new Paragraph(strings[j] + "\n"));
        }
    }

    // step 5
    document.close();
    reader.close();
} 
于 2013-05-02T05:56:22.820 回答
1

在 CSVReader.java 中将 DEFAULT_SKIP_LINES 设置为 0

于 2013-05-17T08:35:37.973 回答