[prev in list] [next in list] [prev in thread] [next in thread]
List: fop-dev
Subject: [jira] [Comment Edited] (FOP-2928) PDFDocumentGraphics2D does not clear content on nextPage()
From: "Brian Scott (Jira)" <jira () apache ! org>
Date: 2021-08-03 16:34:00
Message-ID: JIRA.13295355.1585687020000.833601.1628008440321 () Atlassian ! JIRA
[Download RAW message or body]
[ https://issues.apache.org/jira/browse/FOP-2928?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17392404#comment-17392404 \
]
Brian Scott edited comment on FOP-2928 at 8/3/21, 4:33 PM:
-----------------------------------------------------------
This code works with FOP 1.1, but creates duplicated text with FOP 2.5
Page two should only have 1 line of text, but has two. Page 20 has all the text \
printed on previous pages.
{{package test;
import java.awt.geom.AffineTransform;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Date;
import org.apache.fop.pdf.PDFInfo;
import org.apache.fop.svg.PDFDocumentGraphics2D;
public class TestPDF {
static int DPIscale=4;
static public final int PT=72;
static public int inch(double p) {
return (int)(p*PT*DPIscale);
}
public static void main(String[] args) {
try {
FileOutputStream os=new FileOutputStream("test.pdf");
AffineTransform tx=new AffineTransform();
PDFDocumentGraphics2D gPDF=new PDFDocumentGraphics2D(false);
gPDF.setupDocument(os, (int)(inch(11)/DPIscale), (int)(inch(8.5)/DPIscale));
gPDF.setDeviceDPI(PT);
gPDF.setupDefaultFontInfo();
PDFInfo info= gPDF.getPDFDocument().getInfo();
info.setProducer("from TestPDF");
info.setCreationDate(new Date(System.currentTimeMillis()));
gPDF.setGraphicContext(new org.apache.xmlgraphics.java2d.GraphicContext());
tx.scale(1.0/DPIscale, 1.0/DPIscale);
gPDF.setTransform(tx);
for (int i = 0; i < 20; i++) {
gPDF.drawString("Page "+i, inch(1), inch(1+i*0.2));
gPDF.nextPage();
}
gPDF.finish();
os.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}}
was (Author: brianorca):
This code works with FOP 1.1, but creates duplicated text with FOP 2.5
{{package test;
import java.awt.geom.AffineTransform;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Date;
import org.apache.fop.pdf.PDFInfo;
import org.apache.fop.svg.PDFDocumentGraphics2D;
public class TestPDF {
static int DPIscale=4;
static public final int PT=72;
static public int inch(double p) {
return (int)(p*PT*DPIscale);
}
public static void main(String[] args) {
try {
FileOutputStream os=new FileOutputStream("test.pdf");
AffineTransform tx=new AffineTransform();
PDFDocumentGraphics2D gPDF=new PDFDocumentGraphics2D(false);
gPDF.setupDocument(os, (int)(inch(11)/DPIscale), (int)(inch(8.5)/DPIscale));
gPDF.setDeviceDPI(PT);
gPDF.setupDefaultFontInfo();
PDFInfo info= gPDF.getPDFDocument().getInfo();
info.setProducer("from TestPDF");
info.setCreationDate(new Date(System.currentTimeMillis()));
gPDF.setGraphicContext(new org.apache.xmlgraphics.java2d.GraphicContext());
tx.scale(1.0/DPIscale, 1.0/DPIscale);
gPDF.setTransform(tx);
for (int i = 0; i < 20; i++) {
gPDF.drawString("Page "+i, inch(1), inch(1+i*0.2));
gPDF.nextPage();
}
gPDF.finish();
os.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}}
> PDFDocumentGraphics2D does not clear content on nextPage()
> ----------------------------------------------------------
>
> Key: FOP-2928
> URL: https://issues.apache.org/jira/browse/FOP-2928
> Project: FOP
> Issue Type: Bug
> Components: renderer/pdf
> Affects Versions: 2.2, 2.4
> Reporter: Jürgen Ebert
> Priority: Major
> Labels: easyfix
>
> When switching to a new page using PDFDocumentGraphics2D#nextPage() the current \
> content is added to the PDF document but it is not cleared. Therefore the same \
> content will be repeated on the next page. nextPage() calls closePage() which adds \
> this.getString() to the PDFStream. this.getString() simply returns the content of \
> currentStream, a StringWriter. The content of currentStream is never cleared and \
> the reference is never set to null. Therefore it will be appended to and it will be \
> added again when the next nextPage() or closePage() or therefore finish() is \
> called. A work-arround is to manually set the value of currentStream to null using \
> reflection.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic