Frage

Ich habe eine Situation, wo ich den Raum zwischen einem Tisch und dem Kopfteil auf PDF zu erhöhen, die bereits von einer XSL-Vorlage umgewandelt wurde. Ich brauche eine Adresse in dem neu geschaffenen Raum einzufügen. Dieser Teil ist einfach genug, und ich kann einen Stempel und eine neue Tabelle tun, dass mit.

Allerdings ist ich kämpfen, um eine Lösung zu finden, das Gitter nach unten zu bewegen, um den Raum zu machen.

Im Grunde ich FOP bin mit dem PDF aus einer XSL-Vorlage ähnlich die folgenden unter Verwendung von Code zu erstellen:

OutputStream out = new java.io.FileOutputStream(pdf);
Driver driver = new Driver();
driver.setRenderer(Driver.RENDER_PDF);
driver.setOutputStream(out);
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer(new StreamSource(xsl));
StringReader xmlStream = new StringReader(xmlData);
Source xmlSource = new StreamSource(xmlStream);
Result res = new SAXResult(driver.getContentHandler());
transformer.transform(xmlSource, res);

Ist es sogar möglich, die PDF in einer Art und Weise den Zugriff auf den neuen Raum hinzufügen? Wenn ja, was sind meine Optionen? Ich sollte erwähnen, dass ich weiß nicht, die zum Zeitpunkt der Umwandlung geschieht, dass ich den zusätzlichen Platz benötigen. Ich weiß nur, ich brauche es, wenn ich eine Seitenanzahl des PDF erhalten.

Jede Hilfe sehr geschätzt!

War es hilfreich?

Lösung 2

Es scheint, es nicht möglich ist (zumindest von allem, was ich versucht habe, und liest) verwandelten Objekte zu bewegen, sobald die PDF bereits erzeugt wurde.

Da ich bereits mit iText und die PdfStamper Klasse konnte ich eine neue Seite einzufügen und eine neue Tabelle mit der aktuellen Adresse info einzufügen. Ich tat dies mit dem folgenden Code:

//add new page
PdfStamper stamper = new PdfStamper(reader,new FileOutputStream(file);
stamper.insertPage(pageNumber,reader.getPageSizeWithRotation(1));

//add new table with data
BaseFont base = BaseFont.createFont(BaseFont.HELVETICA,"",BaseFont.NOT_EMBEDDED);
over.setFontAndSize(base,fontSize);
PdfPTable table = new PdfPTable(1);
table.getDefaultCell().setBorder(Rectangle.NO_BORDER);
table.addCell(data);
table.setTotalWidth(150f);
table.writeSelectedRows(0, -1, 73, 650, over);

Dies ist nicht die Antwort auf meine Frage nach einer tragfähigen Lösung, die ich dachte, ich würde teilen, falls andere gehängt bekommen zum gleichen Thema auf.

Andere Tipps

Es ist nicht möglich, „neuen Raum“ per se hinzuzufügen, aber es ist möglich, die Koordinaten eines Objekts auf der Seite zu bekommen und dann zieht wieder, dass woanders Objekt. Leider gibt es keine schnelle und einfache Lösung, und Sie werden einen Drittanbieter-SDK dies tun müssen.

PDF ist kein Textverarbeitungsformat, so dass es nicht möglich ist, einfach ein paar Zeilenumbrüche hinzufügen, wie Sie vielleicht in MS Word.

Versuchen Sie iText , es ist in Java geschrieben und hat eine anständige Menge an Funktionalität für PDF-Dateien zu manipulieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top