Dear Itext support:
as fellows sample code i copy from itext in action
import java.io.FileOutputStream;
import java.io.IOException;
import java.sql.SQLException;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfImportedPage;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfWriter;
public class NUpTool {
/** Format of the resulting PDF files. */
public static final String RESULT =
"results/part2/chapter06/result%dup.pdf";
/**
* Manipulates a PDF file src with the file dest as result
* @param src the original PDF
* @param dest the resulting PDF
* @param pow the PDF will be N-upped with N = Math.pow(2, pow);
* @throws IOException
* @throws DocumentException
* @throws SQLException
*/
public void manipulatePdf(String src, String dest, int pow)
throws IOException, DocumentException {
// reader for the src file
PdfReader reader = new PdfReader(src);
// initializations
Rectangle pageSize = reader.getPageSize(1);
Rectangle newSize = (pow % 2) == 0 ?
new Rectangle(pageSize.getWidth(), pageSize.getHeight()) :
new Rectangle(pageSize.getHeight(), pageSize.getWidth());
Rectangle unitSize = new Rectangle(pageSize.getWidth(),
pageSize.getHeight());
for(int i = 0; i < pow; i++) {
unitSize = new Rectangle(unitSize.getHeight() / 2,
unitSize.getWidth());
}
int n = (int) Math.pow(2, pow);
int r = (int) Math.pow(2, pow / 2);
int c = n / r;
// step 1
Document document = new Document(newSize, 0, 0, 0, 0);
// step 2
PdfWriter writer = PdfWriter.getInstance(document, new
FileOutputStream(String.format(dest, n)));
// step 3
document.open();
// step 4
PdfContentByte cb = writer.getDirectContent();
PdfImportedPage page;
Rectangle currentSize;
float offsetX, offsetY, factor;
int total = reader.getNumberOfPages();
for(int i = 0; i < total;) {
if(i % n == 0) {
document.newPage();
}
currentSize = reader.getPageSize(++i);
factor = Math.min(
unitSize.getWidth() / currentSize.getWidth(),
unitSize.getHeight() / currentSize.getHeight());
offsetX = unitSize.getWidth() * ((i % n) % c) +
(unitSize.getWidth() - (currentSize.getWidth() * factor)) / 2f;
offsetY = newSize.getHeight() - (unitSize.getHeight() * (((i %
n) / c) + 1)) + (unitSize.getHeight() - (currentSize.getHeight() * factor))
/ 2f;
page = writer.getImportedPage(reader, i);
cb.addTemplate(page, factor, 0, 0, factor, offsetX, offsetY);
}
// step 5
document.close();
reader.close();
}
/**
* Main method.
* @param args no arguments needed
* @throws DocumentException
* @throws IOException
* @throws SQLException
*/
public static void main(String[] args)
throws IOException, DocumentException, SQLException {
Stationery.main(args);
new NUpTool().manipulatePdf(Stationery.RESULT, RESULT, 1);
new NUpTool().manipulatePdf(Stationery.RESULT, RESULT, 2);
new NUpTool().manipulatePdf(Stationery.RESULT, RESULT, 3);
new NUpTool().manipulatePdf(Stationery.RESULT, RESULT, 4);
}
}
and i try to process a pdf file about 700MB , and it almost take half an
hour to write pdf data to harddisk (i think is "document.close()" take too
long time), and my computer cup I5-2430 2.4G Memory 6GB ,harddisk 520G 7200
RPM it's not too bad , so i want to ask is there anyway to do some
Optimization to speed up the itext write speed.
ericshi
--
View this message in context:
http://itext-general.2136553.n4.nabble.com/document-close-take-too-long-time-to-write-data-to-harddisk-tp4659664.html
Sent from the iText - General mailing list archive at Nabble.com.
------------------------------------------------------------------------------
CenturyLink Cloud: The Leader in Enterprise Cloud Services.
Learn Why More Businesses Are Choosing CenturyLink Cloud For
Critical Workloads, Development Environments & Everything In Between.
Get a Quote or Start a Free Trial Today.
http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk
_______________________________________________
iText-questions mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/itext-questions
iText(R) is a registered trademark of 1T3XT BVBA.
Many questions posted to this list can (and will) be answered with a reference
to the iText book: http://www.itextpdf.com/book/
Please check the keywords list before you ask for examples:
http://itextpdf.com/themes/keywords.php