0
我必須替換<<
和>>
之間的字符串。但是我無法這樣做。替換PDF文件中的數據
public void doIt(String inputFile, String outputFile) throws IOException, COSVisitorException
{
PDDocument doc = null;
try
{
doc = PDDocument.load(inputFile);
List pages = doc.getDocumentCatalog().getAllPages();
for(int i=0; i<pages.size(); i++)
{
PDPage page = (PDPage)pages.get(i);
PDStream contents = page.getContents();
PDFStreamParser parser = new PDFStreamParser(contents.getStream());
parser.parse();
List tokens = parser.getTokens();
for(int j=0; j<tokens.size(); j++)
{
Object next = tokens.get(j);
if(next instanceof PDFOperator)
{
PDFOperator op = (PDFOperator)next;
if(op.getOperation().equals("Tj"))
{
Scanner in = new Scanner(System.in);
COSString previous = (COSString)tokens.get(j-1);
String string = previous.getString();
if(string.startsWith("<<") && string.endsWith(">>"))
{
System.out.println(string);
System.out.println("enter the word to be replaced");
String string2=in.nextLine();
string = string.replaceAll(string, string2);
previous.reset();
previous.append(string.getBytes());
}
}
else if(op.getOperation().equals("TJ"))
{
COSArray previous = (COSArray)tokens.get(j-1);
for(int k=0; k<previous.size(); k++)
{
Scanner in = new Scanner(System.in);
Object arrElement = previous.getObject(k);
if(arrElement instanceof COSString)
{
COSString cosString = (COSString)arrElement;
String string = cosString.getString();
if(string.startsWith("<<") && string.endsWith(">>"))
{
System.out.println(string);
System.out.println("enter the word to be replaced");
String string2=in.nextLine();
string = string.replaceAll(string, string2);
cosString.reset();
cosString.append(string.getBytes());
}
}
}
}
}
}
PDStream updatedStream = new PDStream(doc);
OutputStream out = updatedStream.createOutputStream();
ContentStreamWriter tokenWriter = new ContentStreamWriter(out);
tokenWriter.writeTokens(tokens);
page.setContents(updatedStream);
}
doc.save(outputFile);
System.out.println("Done!! Now You can Open.");
}
finally
{
if(doc != null)
{
doc.close();
}
}
}
問題必須證明對所解決問題的最小理解。告訴我們你試圖去做什麼,爲什麼它沒有工作,以及它應該如何工作。 –
基本上是[佔位符的PDF操作]的副本(http://stackoverflow.com/questions/17444459/pdf-manipulation-with-placeholders)。 – mkl