Ich will hinzufügen einer Zeile in einem PDF-Dokument mithilfe von java
Ich bin derzeit mit PDFBox Lesen aus und das innerhalb einer.pdf-Datei die sich im Ordner 1
Ich zuerst eine Liste mit allen Pdf-Dateien innerhalb der Ordner.
Dann überprüfe ich die Anzahl der Seiten, die jede Datei hat.
Nun will ich gehen, um ganz am Ende der Datei unten in der Fußzeile, um ein Bild hinzuzufügen, können anerkannt werden, die der Drucker für das Heften der Seiten, da Sie erkennen werden, dass es erreicht hat das Ende der Datei.
Ich angekommen bin, bis bekommen eine Liste der Dateien und die Anzahl der Seiten.
Welchen Befehl muss ich verwenden, um gehen zu Ende, die Letzte Seite und schreiben Sie dort.
Sollte ich verwandeln .pdf-Datei in text-oder
Sollte ich in der Lage sein zu verwenden PDPageContentStream
Dies ist der code den ich momentan verwende, bin ich versucht zu testen und sehen, ob eine AAA-string-eingefügte in meinem letzten Seite der pdf-Datei. das Projekt ist die Ausführung mit keine Fehler, aber für einige Grund es ist nicht eingefügt werden in die pdf-Datei.
package pdfviewer;
import java.io.*;
import java.util.*;
import java.util.List;
import java.io.IOException;
import org.apache.pdfbox.PDFReader;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.edit.PDPageContentStream;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.common.PDRectangle;
import org.apache.pdfbox.pdmodel.font.PDFont;
import org.apache.pdfbox.pdmodel.font.PDType1Font;
public class Main {
/**
* @param args the command line arguments
*/
public static List flist()
{
List listfile = new ArrayList();
String path = "C:/1";
String files;
File folder = new File(path);
File[] listOfFiles = folder.listFiles();
for (int i = 0; i < listOfFiles.length; i++)
{
if (listOfFiles[i].isFile())
{
files = listOfFiles[i].getName();
if (files.endsWith(".pdf") || files.endsWith(".PDF"))
{
listfile.add(listOfFiles[i]);
}
}
}
System.out.println(listfile);
return listfile;
}
public static void CheckPages(List a)
{
String dir = null;
Object[] arraydir = a.toArray(new Object[0]);
for (int i=0; i< arraydir.length; i++)
{
int pages = 0;
PDFont font = PDType1Font.HELVETICA_BOLD;
float fontSize = 12.0f;
dir = arraydir[i].toString();
System.out.println(dir);
try {
PDDocument pdoc = PDDocument.load(dir);
List allPages = pdoc.getDocumentCatalog().getAllPages();
pages = pdoc.getNumberOfPages();
System.out.println(allPages);
int f = pages;
System.out.println(pages);
PDPage page = (PDPage) allPages.get(i);
//System.out.println(page);
PDRectangle pageSize = page.findMediaBox();
float stringWidth = font.getStringWidth( "AAA" );
float centeredPosition = (pageSize.getWidth() - (stringWidth*fontSize)/1000f)/2f;
PDPageContentStream contentStream = new PDPageContentStream(pdoc,page,true,true);
//System.out.println(contentStream);
contentStream.beginText();
contentStream.setFont( font, fontSize );
contentStream.moveTextPositionByAmount( centeredPosition, 30 );
contentStream.drawString( "AAA" );
contentStream.endText();
contentStream.close();
pdoc.close();
}
catch (Exception e)
{
System.err.println("An exception occured in parsing the PDF Document."+ e.getMessage());
}
}
}
public static void main(String[] args)
{
List l = new ArrayList();
l = pdfviewer.Main.flist();
pdfviewer.Main.CheckPages(l);
}
}
Vielen Dank für Ihre Aufmerksamkeit
Den code, den ich war mit oben ist korrekt.
Das problem ist, dass die PDF-Dateien generiert werden, sind in der version 1.2, das ist der Grund, warum ich nicht Editieren darf das pdf-Dokument.
Weiß jemand, was ich tun sollte, wenn ich mich mit einer version 1.2, da kann ich nicht wirklich ein upgrade.
Seine nicht notwendig, nur um seine Grundnahrungsmittel zu starten, ein anderer Prozess. Ich muss einen text einfügen Zeile ans Ende der Datei.
InformationsquelleAutor CRL88 | 2011-08-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
kann man sich die Beispiele mit der Bibliothek geliefert.
es gibt zwei Dateien, die für Sie von Interesse sind:
1 - AddImageToPDF.java AddImageToPDF.java auf google-code-Suche
2 - AddMessageToEachPage.java AddMessageToEachPage.java auf google-code-Suche
die zweite fügt eine Nachricht auf jeder Seite, aber Sie können es ändern, um die Arbeit mit nur die Letzte Seite. nach der PDFBox Dokument Benutzerhandbuch, sollten Sie im Ordner: src/main/java/org/apache pdfbox/Beispiele
Ich habe links auf google-code-Suche, falls Sie Probleme haben, Auffinden der Dateien.
Habe ich nicht gearbeitet, mit der Bibliothek oder versucht, die Beispiele und ich bin mir ziemlich sicher, dass müssen Sie ändern Sie den code ein wenig, um Ihre Bedürfnisse für den Standort der zusätzlichen Zeile/Bild.
In jedem Fall, falls dir das hilft und du bekommst eine funktionierende Lösung verwenden, können Sie die Lösung so, dass andere davon profitieren können.
EDIT:
Nachdem ich den code gepostet um die Frage, Autor, füge ich eine änderung zu machen, arbeiten.
Ich ließ mich auch einige änderungen für Klarheit.
Außerdem habe ich die contentStream.sava(dir), um die vorhandene Datei überschreiben
Ihnen fehlt das sparen nicht aus den contentStream aber vom doc. bevor Sie das Dokument schließen mit pdoc.schließen(), speichern Sie es mit pdoc.save( outfile );
Sie haben auch mehr Fehler in der, wie Sie schrieb, den Pfad für das Verzeichnis und die Art, wie Sie auf die Seiten zugreifen. Ich werde bald eine Modifizierung des Codes, das funktioniert und fügt die Zeile auf der letzten Seite jeder Datei.
immer noch ein problem aufgrund der Tatsache, dass die pdfs in der version 1.2 wie kann ich entweder die version ändern oder zu tun, was ich tun muss, sowieso.
InformationsquelleAutor