如何读取文本文件(逐行)并使用输出作为 nameS 在 java 中创建 .pdf 文件?

Posted

技术标签:

【中文标题】如何读取文本文件(逐行)并使用输出作为 nameS 在 java 中创建 .pdf 文件?【英文标题】:How to read in a text file (line-by-line) and use the output as nameS to create .pdf Files in java? 【发布时间】:2014-12-09 14:55:20 【问题描述】:

我正在编写一个程序,它允许我创建多个具有一组给定名称的 PDF 文件(来自文本文件,每个名称由文件中的一行表示)。这些 PDF 文件的每一页都会有水印。

这是我正在使用的代码:

    public class watermark     
        public static void main(String[] args) 

            try 
                BufferedReader br = new BufferedReader(new FileReader("D:\\Documents\\java\\listcos.txt"));
                String line;
                while ((line = br.readLine()) != null) 
                    System.out.println(line);
                

                try 
                    String a = line;
                    PdfReader Read_PDF_To_Watermark = new PdfReader("Sample.pdf");
                    int number_of_pages = Read_PDF_To_Watermark.getNumberOfPages();
                    PdfStamper stamp = new PdfStamper(Read_PDF_To_Watermark, new FileOutputStream("New_" + line + ".pdf"));
                    int i = 0;
                    Image watermark_image = Image.getInstance("watermark.jpg");
                    watermark_image.setAbsolutePosition(20, 40);
                    PdfContentByte add_watermark;            
                    while (i < number_of_pages) 
                      i++;
                      add_watermark = stamp.getUnderContent(i);
                      add_watermark.addImage(watermark_image);
                    
                    stamp.close();
                
                catch (Exception e) 
                    e.printStackTrace();
                
                System.out.println("Done");
            catch (IOException e) 
                e.printStackTrace();
        
    

我能够生成一个 .pdf 文件,但我得到的名称是“New_null.pdf”。另外,我只能生成一个 .pdf 文件。我想知道如何生成与给定文本文件中名称数量一样多的 .pdf 文件。

任何想法将不胜感激。

非常感谢。

Zestos。

【问题讨论】:

你得到了 null,因为 line 已经到达文件的末尾并且为 null。您已经使用每一行的文件名在该 while 循环中创建了一个 pdf。不是你只创建一个pdf,名称=文件结尾为空。查看您的代码 @MihaiC:非常感谢您指出这一点。我意识到我只需要将while 之后的“”移动到System.out.println("Done"); 下面的行。 就是这样 :) 现在可以用了吗? 是的。效果很好。并且创建多个Pdf文件的问题也得到了解决。打印出该行时,它还创建了一个带有打印名称的文件。真是太棒了! 我知道问这个问题真的很傻。但是我怎样才能接受答案呢? 【参考方案1】:

while loop 中创建 pdf,获取行。现在,线路是null,因为您到达了End of File。移动循环中的所有内容!。

【讨论】:

以上是关于如何读取文本文件(逐行)并使用输出作为 nameS 在 java 中创建 .pdf 文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用Javascript读取本地文本文件并逐行读取?

如何在 Java 中逐行读取文本文件并分隔每一行的内容?

如何逐行读取文本文件并使用android将每一行存储在数组中?可以在android中读取xls文件吗?

如何在 Julia 中逐行读取文件?

如何用VBS逐行读取文本文件的内容,并输入变量

使用 ANT 逐行合并多个文本文件