Skip to content

Instantly share code, notes, and snippets.

@marti1125
Created August 27, 2014 21:55
Show Gist options
  • Save marti1125/303b0a531af111029c8e to your computer and use it in GitHub Desktop.
Save marti1125/303b0a531af111029c8e to your computer and use it in GitHub Desktop.
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
// we create a reader for a certain document
PdfReader reader = new PdfReader(pdfYExcelStream);
Rectangle psize = reader.getPageSize(1);
System.out.println("tamaño pdf original "+psize);
// we retrieve the total number of pages and the page size
//int total = reader.getNumberOfPages();
/*Rectangle pageSize = reader.getPageSize(1);
Rectangle newSize = new Rectangle(pageSize.getWidth() / 2,
pageSize.getHeight());*/
// step 1: creation of a document-object
Document document = new Document(PageSize.A4); //new Document(newSize, 0, 0, 0, 0);
reader.getPageContent(1);
//document.setPageSize(PageSize.A4.rotate());
// step 2: we create a writer that listens to the document
PdfWriter writer = PdfWriter.getInstance(document, outputStream);
writer.addPageDictEntry(PdfName.ROTATE, PdfPage.LANDSCAPE);
//writer.setPageEvent(new RotateEvent());
// step 3: we open the document
document.open();
// step 4: adding the content
PdfContentByte cb = writer.getDirectContent();
PdfImportedPage page = writer.getImportedPage(reader, 1);
System.out.println("direccion "+writer.getPageDictEntries());
//System.out.println("tamaño general: "+document.getPageSize().getHeight());
/*document.newPage();
cb.addTemplate(page, 0, 0);*/
int cantidadPaginas = Math.round( psize.getWidth() / 800 );
System.out.println("chancho!! "+page.getWidth());
System.out.println("cantidad paginas " + cantidadPaginas);
System.out.println("hancho original!! "+psize.getWidth());
//System.out.println("a4 original:"+psize.getWidth());
//System.out.println("a4 new:"+document.getPageSize().getWidth());
//System.out.println("paginas---->"+document.getPageSize().getWidth()/psize.getWidth());
//System.out.println("paginas222---->"+psize.getWidth() / document.getPageSize().getWidth());
/*for(cantidadPaginas = 0; document.getPageSize().getHeight() < psize.getWidth();cantidadPaginas++){
System.out.println("paginas..."+cantidadPaginas);
}*/
//document.setPageSize(PageSize.A4.rotate());
/*document.newPage();
cb.addTemplate(page, 0, -100);
document.newPage();
cb.addTemplate(page, 0, -200);*/
//System.out.println("hacho del original" + psize.getWidth());
//document.newPage();
//cb.addTemplate(page, 1, 0, 0, 1, 0, 0);
document.setPageSize(PageSize.A4.rotate()); //-document.getPageSize().getWidth()
document.newPage();
AffineTransform afinit = new AffineTransform(0, -1, 1, 0, -32800, 600); // equivale a 11 paginas mas!
cb.addTemplate(page,afinit);
double total = 0d;
total = psize.getWidth();
/////////////////////////////////////////
int totalAnchoDePaginas = 800*cantidadPaginas;
System.out.println("total del ancho de las paginas!!" + totalAnchoDePaginas);
//int anchoPagina = totalAnchoDePaginas;
int anchoPorPagina = totalAnchoDePaginas + 800;
int tt = -32800 - 800;
for(int p = 1; p <=totalAnchoDePaginas; p++){
tt = tt + 800;
System.out.println(tt);
document.setPageSize(PageSize.A4.rotate());
document.newPage();
AffineTransform af = new AffineTransform(0, -1, 1, 0, tt, 600);
cb.addTemplate(page, af);
if(tt == 0){
break;
}
//total = total - document.getPageSize().getWidth();
//total = total2 - total;
//System.out.println("total-->"+total);
/*document.setPageSize(PageSize.A4.rotate());
document.newPage();
//document.setMarginMirroring(true);
document.setMargins(0, 0, 0, 0);
AffineTransform af = new AffineTransform(0, -1, 1, 0, -(int)total, 600);
cb.addTemplate(page, af);*/
}
//PdfImportedPage lastpage = writer.getImportedPage(reader,cantidadPaginas);
//lastpage.
//document.setPageSize(PageSize.A4.rotate());
//document.newPage();
//cb.addTemplate(page,0,0,1,-1,10,10);
//cb.addTemplate(page, 0, 0);
//double A_4 = document.getPageSize().getWidth();
//double w_inicial = -psize.getWidth();
//double total = 0d;
/*for(int p = 1; p <cantidadPaginas; p++){
total = w_inicial - document.getPageSize().getWidth();
System.out.println(total);
document.newPage();
cb.addTemplate(page, 0, (int)total);
}*/
//document.newPage();
//cb.addTemplate(page, -PageSize.A4.getWidth(), 0);
//document.newPage();
// cb.AddTemplate(page, -PageSize.A4.Width, 0);
//float offsetX, offsetY;
//int p;
// int rot;
// PdfDictionary pageDict = new PdfDictionary();
/*for (int i = 0; i < total; i++) {
p = i + 1;
pageSize = reader.getPageSize(p);
newSize = new Rectangle(pageSize.getWidth(),
pageSize.getHeight() / 2);
document.newPage();
offsetX = 0;
offsetY = -newSize.getHeight() + 1;
page = writer.getImportedPage(reader, p);
cb.addTemplate(page, 1, 0, 0, 1, offsetX, offsetY);
/*document.newPage();
offsetX = 0;
offsetY = 0;
page = writer.getImportedPage(reader, p);
cb.addTemplate(page, 1, 0, 0, 1, offsetX, offsetY);
document.newPage();
offsetX = 0;
offsetY = 60;
page = writer.getImportedPage(reader, p);
cb.addTemplate(page, 1, 0, 0, 1, offsetX, offsetY);*/
// pageDict.put(PdfName.ROTATE, new
// PdfNumber(reader.getPageRotation(p) + 180));
//}
document.close();
writer.flush();
writer.close();
outputStream.close();
ByteArrayOutputStream out = new ByteArrayOutputStream();
out.flush();
out.write(outputStream.toByteArray());
out.close();
// de output a input!!
InputStream is = new ByteArrayInputStream(out.toByteArray());
renderBinary(is, "ReporteDeDistribucionClasesPorHoras.pdf",
"application/pdf", true);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment