我在Java方面不是那么好但是因为Talend Studio不支持PDF分割和合并,我不得不寻找另一种解决方案。
解释我的情况:
此处的任务是将具有n页的PDF拆分为n-PDF文件。 (每页一个)。 之后,我需要将每个PDF文件与另一个固定PDF合并。 (创建具有个别开头和固定跟随的信件)
我希望分割的PDF是在Talend中使用" TJasperReportExec"自动创建的。使用具体的模板,它不支持(afaik)PDF文件的分割。
经过一番研究后我发现代码:
package pdfsplitter;
import java.io.FileOutputStream;
import com.lowagie.text.Document;
import com.lowagie.text.pdf.PdfCopy;
import com.lowagie.text.pdf.PdfImportedPage;
import com.lowagie.text.pdf.PdfReader;
public class SplitPDFFile {
/**
* @param args
*/
public static void main(String[] args) {
try {
String inFile = args[0].toLowerCase();
System.out.println ("Reading " + inFile);
PdfReader reader = new PdfReader(inFile);
int n = reader.getNumberOfPages();
System.out.println ("Number of pages : " + n);
int i = 0;
while ( i < n ) {
String outFile = inFile.substring(0, inFile.indexOf(".pdf"))
+ "-" + String.format("%03d", i + 1) + ".pdf";
System.out.println ("Writing " + outFile);
Document document = new Document(reader.getPageSizeWithRotation(1));
PdfCopy writer = new PdfCopy(document, new FileOutputStream(outFile));
document.open();
PdfImportedPage page = writer.getImportedPage(reader, ++i);
writer.addPage(page);
document.close();
writer.close();
}
}
catch (Exception e) {
e.printStackTrace();
}
/* example :
java SplitPDFFile d:\temp\x\tx.pdf
Reading d:\temp\x\tx.pdf
Number of pages : 3
Writing d:\temp\x\tx-001.pdf
Writing d:\temp\x\tx-002.pdf
Writing d:\temp\x\tx-003.pdf
*/
}
}
在定义字符串名称后,此处的错误似乎是args [ 0 ]的值。
在搜索解决方案并尝试以不同方式修复它之后,错误没有得到修复一次。 一些建议或与适当解决方案的链接会很好。
提前致谢,
Ulonis
答案 0 :(得分:0)
几分钟前找到解决我问题的方法。像Aaron&amp; yashpandey已经告诉:没有给予分割的值(在这种情况下没有pdf文件)。
我的解决方案是:
public static void main(String[] args) {
try {
String s = "C:\\Users\\User\\PDFFile.pdf";
String inFile = s.toLowerCase();
System.out.println ("Reading " + inFile);
PdfReader reader = new PdfReader(inFile);
我删除了args [0]并创建了另一个带有该文件硬编码链接的String。在这种情况下也是可能的,因为此作业将在服务器上自动启动,并且此文件的名称可以每次都相同。通常我会在这里首选一些软编码以获得链接,但无论如何。它有效,它可以做到它。
感谢您的建议。如果我没有找到自己的解决方案,我会在你的评论之后得到它。
Ulonis