Wie vermeiden Sie den Textüberlauf beim Kopieren von Text aus dem Quelldokument in das Ziel neuer Dokument?Java

Java-Forum
Anonymous
 Wie vermeiden Sie den Textüberlauf beim Kopieren von Text aus dem Quelldokument in das Ziel neuer Dokument?

Post by Anonymous »

Hallo allerseits, ich möchte Text mit Textstripper extrahieren und dann den ganzen Text in ein neues PDF -Dokument mit zunehmender Schriftgröße auf 18 umgehen. Ich stehe vor Herausforderungen, während Texte aufgrund einer erhöhten Schriftgröße Überläufe erhalten. Daher möchte ich dies verwalten, indem ich bei Bedarf eine neue Seite erstelle. Könnten Sie dies bitte helfen, indem Sie eine angemessene Lösung oder einen angemessenen Vorschlag bereitstellen? Danke < /p>
Unten finden Sie Code für den Versuch, Texte von Quelle zu Target -Dokument zu kopieren. < /P>

Code: Select all

private List textInfo ;

public PDFLargePrintServiceImpl() throws IOException {
super();
textInfo = new ArrayList();
}

@Override
public void testCopyFromTestDocumentSigned(MultipartFile fileContent) throws IOException {
try (
PDDocument source = PDDocument.load(fileContent.getInputStream());
PDDocument target = new PDDocument();
) {
copyText(source, target);
target.save(new File(\output.pdf"));
target.close();
}
}

void copyText(PDDocument source, PDDocument target) throws IOException {
for (int i = 0; i < source.getNumberOfPages(); i++) {
PDPage sourcePage = source.getPage(i);
PDPage targetPage = null;
if (i < target.getNumberOfPages())
targetPage = target.getPage(i);
else
target.addPage(targetPage = new PDPage(sourcePage.getMediaBox()));
copyText(source, i, target, targetPage, textInfo);
}
}

void copyText(PDDocument source, int sourcePageNumber, PDDocument target, PDPage targetPage, List textInfo) throws IOException {
List allTextPositions = new ArrayList();
PDFTextStripper pdfTextStripper = new PDFTextStripper() {
@Override
protected void writeString(String text, List textPositions) throws IOException {
allTextPositions.addAll(textPositions);
super.writeString(text, textPositions);
}
};
pdfTextStripper.setStartPage(sourcePageNumber + 1);
pdfTextStripper.setEndPage(sourcePageNumber + 1);
pdfTextStripper.getText(source);

if (textInfo != null)
textInfo.addAll(textInfo);

PDRectangle targetPageCropBox = targetPage.getCropBox();
float yOffset = targetPageCropBox.getUpperRightY() + targetPageCropBox.getLowerLeftY();
float fontSize = 18f;
try (PDPageContentStream contentStream = new PDPageContentStream(target, targetPage, AppendMode.APPEND, true, true)) {
contentStream.beginText();
float x = 0;
float y = yOffset;
for (TextPosition position: allTextPositions) {
contentStream.setFont(position.getFont(), fontSize);
contentStream.newLineAtOffset(position.getX() - x, - (position.getY() - y));
contentStream.showText(position.getUnicode());
x = position.getX();
y = position.getY();
}
contentStream.endText();
}
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post