static byte[] createSimpleTextPdf() throws DocumentException { ByteArrayOutputStream baos = new ByteArrayOutputStream(); Document document = new Document(); PdfWriter.getInstance(document, baos); document.open(); for (int i = 1; i < 20; i++) { Paragraph paragraph = new Paragraph(); for (int j = 0; j < i; j++) paragraph.add("Hello World! "); document.add(paragraph); } document.close(); return baos.toByteArray(); }
/** * */ @Override public void exportInnertion(OutputStream servletOut, List header, List data) throws IOException { // step 1 Document document = new Document(); // step 2 PdfWriter writer; try { writer = PdfWriter.getInstance(document, servletOut); } catch (DocumentException e) { // TODO Auto-generated catch block e.printStackTrace(); return; } // step 3 document.open(); // step 4 XMLWorkerHelper.getInstance().parseXHtml(writer, document, new java.io.StringReader( HtmlExport.createHTML(header, data))); // step 5 document.close(); }
@Override public void onEndPage(PdfWriter writer, Document document) { List<Page> pages=report.getPages(); int pageNumber=writer.getPageNumber(); if(pageNumber>pages.size()){ return; } Page page=pages.get(pageNumber-1); HeaderFooter header=page.getHeader(); HeaderFooter footer=page.getFooter(); if(header!=null){ buildTable(writer,header,true,report); } if(footer!=null){ buildTable(writer,footer,false,report); } }
/** * 根据URL提前blog的基本信息,返回结果>>:[主题 ,分类,日期,内容]等. * * @param blogURL * @return * @throws Exception */ public static String[] extractBlogInfo(String blogURL) throws Exception { String[] info = new String[4]; org.jsoup.nodes.Document doc = Jsoup.connect(blogURL).get(); org.jsoup.nodes.Element e_title = doc.select("h2.title").first(); info[0] = e_title.text(); org.jsoup.nodes.Element e_category = doc.select("a[rel=category tag]") .first(); info[1] = e_category.attr("href").replace("http://www.micmiu.com/", ""); org.jsoup.nodes.Element e_date = doc.select("span.post-info-date") .first(); String dateStr = e_date.text().split("日期")[1].trim(); info[2] = dateStr; org.jsoup.nodes.Element entry = doc.select("div.entry").first(); info[3] = formatContentTag(entry); return info; }
@Override protected void renderMergedOutputModel(Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) throws Exception { // IE workaround: write into byte array first. ByteArrayOutputStream baos = createTemporaryOutputStream(); // Apply preferences and build metadata. Document document = newDocument(); PdfWriter writer = newWriter(document, baos); prepareWriter(model, writer, request); buildPdfMetadata(model, document, request); // Build PDF document. document.open(); buildPdfDocument(model, document, writer, request, response); document.close(); // Flush to HTTP response. writeToResponse(response, baos); }
@Override protected void renderMergedOutputModel(Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) throws Exception { // IE workaround: write into byte array first. ByteArrayOutputStream baos = createTemporaryOutputStream(); // Apply preferences and build metadata. Document document = new Document(); PdfWriter writer = PdfWriter.getInstance(document, baos); prepareWriter(model, writer, request); buildPdfMetadata(model, document, request); // Build PDF document. writer.setInitialLeading(16); document.open(); buildPdfDocument(model, document, writer, request, response); document.close(); // Flush to HTTP response. writeToResponse(response, baos); }
private static void addMetaData(Document document) { document.addTitle("My first PDF"); document.addSubject("Using iText"); document.addKeywords("Java, PDF, iText"); document.addAuthor("Lars Vogel"); document.addCreator("Lars Vogel"); }
private static void addTitlePage(Document document,Resolucion res) throws DocumentException { Paragraph preface = new Paragraph(); // We add one empty line addEmptyLine(preface, 1); // Lets write a big header preface.add(new Paragraph("Consejo Profesional de Informatica de Santiago del Estero", catFont)); addEmptyLine(preface, 1); // Will create: Report generated by: _name, _date preface.add(new Paragraph( "Comision Directiva del Consejo, " + new Date(), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ smallBold)); addEmptyLine(preface, 2); preface.add(new Paragraph("Resolucion N°"+res.getNumero_resolucion()+"", smallBold)); addEmptyLine(preface, 3); preface.add(new Paragraph("Esta Resolucion de tipo "+res.getTipo()+" formulada para notificar al socio con legajo: "+res.getLegajo_socio()+" de su actual estado como socio del Consejo.\n" + res.getDescripcion_solicitud()+" "+res.getDescripcion_resolucion()+" en la fecha "+res.getFecha(), cuerpo)); document.add(preface); // Start a new page document.newPage(); }
public static String GetPDFBin(HttpServletResponse response, String docText) { Document document = new Document(PageSize.A4, 36, 36, 36, 36); try { ByteArrayOutputStream baos = new ByteArrayOutputStream(); PdfWriter writer = PdfWriter.getInstance(document, baos); document.open(); InputStream is = new ByteArrayInputStream(docText.getBytes()); XMLWorkerHelper.getInstance().parseXHtml(writer, document, is); document.close(); return(new String(Base64.encodeBase64(baos.toByteArray()))); } catch (Exception e) { logger.error("Unexpected error", e); } return null; }
public static void PrintPDFFromHTMLString(HttpServletResponse response, String docText) { Document document = new Document(PageSize.A4, 36, 36, 36, 36); try { ByteArrayOutputStream baos = new ByteArrayOutputStream(); PdfWriter writer = PdfWriter.getInstance(document, baos); document.open(); InputStream is = new ByteArrayInputStream(docText.getBytes()); XMLWorkerHelper.getInstance().parseXHtml(writer, document, is); document.close(); byte[] binArray = baos.toByteArray(); PrintPDFFromBytes(response, binArray); } catch (Exception e) { logger.error("Unexpected error", e); } }
public Document createDocument(File pdfFile) throws DocumentException, IOException{ Document document = new Document(new Rectangle(pageWidth, pageHeight)); document.setPageSize(PageSize.A4); PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(pdfFile)); //写入页尾 this.setFooter(writer); writer.setFullCompression(); writer.setPdfVersion(PdfWriter.VERSION_1_4); document.open(); // //加入二维码图片 // Image image = Image.getInstance(System.getProperty(appConfig.getValue("app.root"))+"/images/logoqrcode.png"); // image.scaleAbsolute(40,40);//控制图片大小 // image.setAlignment(Image.LEFT); // document.add(image); return document; }
private void putPdfInfo(Document document) { document.addAuthor("AswCensuses2B"); document.addCreationDate(); document.addCreator("AswCensuses2B.com"); document.addTitle("Personal Voter Letter"); document.addSubject("A pdf file with your password and user at the online service."); }
public void print(String plot_pdf) { try { float width = jframe.getSize().width, height = jframe.getSize().height; Document document = new Document(new Rectangle(width, height)); PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(plot_pdf)); document.open(); PdfContentByte canvas = writer.getDirectContent(); PdfTemplate template = canvas.createTemplate(width, height); Graphics2D g2d = new PdfGraphics2D(template, width, height); jframe.paint(g2d); g2d.dispose(); canvas.addTemplate(template, 0, 0); document.close(); } catch (FileNotFoundException | DocumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
private void addOfferInstances(List<OfferInstance> offerInstances, Document document, BaseFont bf) throws DocumentException { if(offerInstances.isEmpty()) { return; } document.add(new Paragraph("Wybrane oferty: ", new Font(bf, 12))); PdfPTable offerInstancesTable = new PdfPTable(3); offerInstancesTable.setWidthPercentage(100); offerInstancesTable.setSpacingBefore(18f); offerInstancesTable.setSpacingAfter(18f); createofferInstancesTableHeaders(offerInstancesTable); createofferInstancesTableContent(offerInstances, offerInstancesTable); document.add(offerInstancesTable); }
public Document getPDF() throws Exception { Document document = new Document(); PdfWriter.getInstance(document, new FileOutputStream(FILE + problem.getPid() + ".pdf")); Image image = Image.getInstance(this.logo); document.open(); document.add(image); document.addCreationDate(); document.add(new Paragraph("Title: "+problem.getTitle())); document.add(new Paragraph("Code: "+problem.getPid())); document.add(new Paragraph(" ")); document.add(addParagraph("Description",problem.getDescription(), true)); document.add(addParagraph("Input",problem.getInput(), true)); document.add(addParagraph("Output",problem.getOutput(), true)); document.add(addParagraph("Input Example",problem.getInputex().replaceAll("<br/>", ""), true)); document.add(addParagraph("Output Example",problem.getOutputex(), true)); document.add(new Paragraph("Time(ms): "+problem.getTime())); document.add(new Paragraph("Memory(kb): "+problem.getMemory())); document.add(new Paragraph("Source(kb): "+problem.getFontsize())); document.addTitle("Challenger Online Judge"); document.addAuthor("Chjudge"); document.close(); return document; }
/** * The <code>closePassedStream</code> method closes the stream passed. * * @param reader {@link PdfReader} * @param document {@link Document} * @param contentByte {@link PdfContentByte} * @param writer {@link PdfWriter} * @param fileInputStream {@link FileInputStream} * @param fileOutputStream {@link FileOutputStream} * @throws IOException {@link} if unable to close input or output stream */ private static void closePassedStream(final PdfReader reader, final Document document, final PdfContentByte contentByte, final PdfWriter writer, final FileInputStream fileInputStream, final FileOutputStream fileOutputStream) throws IOException { if (null != reader) { reader.close(); } if (null != document) { document.close(); } if (null != contentByte) { contentByte.closePath(); } if (null != writer) { writer.close(); } if (null != fileInputStream) { fileInputStream.close(); } if (null != fileOutputStream) { fileOutputStream.flush(); fileOutputStream.close(); } }
public void createPdf(String filename,String text) throws DocumentException, IOException { // step 1 Document document = new Document(); // step 2 PdfWriter.getInstance(document, new FileOutputStream(filename)); // step 3 document.open(); // step 4 //// BaseColor col=null; // if(NewDjvu.textArea.getForeground()==Color.red||NewDjvuFromClib.textAreaClip.getForeground()==Color.red){ // col=BaseColor.RED; // } // Font font=new Font(Font.FontFamily.HELVETICA, DjvuComponents.font.getSize(), DjvuComponents.font.getStyle(),col); //// for (String booksfile1 : booksfile) { document.add(new Paragraph(text)); // } // step 5 document.close(); }
/** Shows a blank document, in case of a problem in generating the PDF */ private byte[] showBlank() throws DocumentException { final Document document = new Document(PageSize.LETTER); // FIXME - get PageSize from label definition final ByteArrayOutputStream baos = new ByteArrayOutputStream(); final PdfWriter writer = PdfWriter.getInstance(document, baos); document.open(); document.add(new Paragraph("No data have been uploaded. The time is: " + new Date())); final Barcode128 code128 = new Barcode128(); code128.setGenerateChecksum(true); code128.setCode(new Date().toString()); document.add(code128.createImageWithBarcode(writer.getDirectContent(), null, null)); document.close(); return baos.toByteArray(); }
private static void makePDF(Bitmap bmp, File file) { Document document = new Document(); try { PdfWriter.getInstance(document, new FileOutputStream(file)); document.addAuthor(FullscreenActivity.mAuthor.toString()); document.addTitle(FullscreenActivity.mTitle.toString()); document.addCreator("OpenSongApp"); if (bmp!=null && bmp.getWidth()>bmp.getHeight()) { document.setPageSize(PageSize.A4.rotate()); } else { document.setPageSize(PageSize.A4); } document.addTitle(FullscreenActivity.mTitle.toString()); document.open();//document.add(new Header("Song title",FullscreenActivity.mTitle.toString())); BaseFont urName = BaseFont.createFont("assets/fonts/Lato-Reg.ttf", "UTF-8",BaseFont.EMBEDDED); Font TitleFontName = new Font(urName, 14); Font AuthorFontName = new Font(urName, 10); document.add(new Paragraph(FullscreenActivity.mTitle.toString(),TitleFontName)); document.add(new Paragraph(FullscreenActivity.mAuthor.toString(),AuthorFontName)); addImage(document,bmp); document.close(); } catch (Exception e) { e.printStackTrace(); } }
private void addTitlePage(Document document) throws DocumentException { addEmptyLine(document, 5); Paragraph title = new Paragraph("Data Dictionary by Arrah technology"); title.setAlignment(Element.ALIGN_CENTER); document.add(title); addEmptyLine(document, 1); Paragraph url = new Paragraph("http://sourceforge.net/projects/dataquality/"); url.setAlignment(Element.ALIGN_CENTER); document.add(url); addEmptyLine(document, 3); Paragraph rtime = new Paragraph("Report generated on: " + new Date()); rtime.setAlignment(Element.ALIGN_CENTER); document.add(rtime); document.newPage(); }
/** * @see com.itextpdf.text.pdf.PdfPageEventHelper#onStartPage(com.itextpdf.text.pdf.PdfWriter, com.itextpdf.text.Document) */ public void onStartPage(PdfWriter writer, Document document) { if (writer.getPageNumber() < 3) { PdfContentByte cb = writer.getDirectContentUnder(); cb.saveState(); cb.setColorFill(BaseColor.PINK); cb.beginText(); cb.setFontAndSize(helv, 48); cb.showTextAligned(Element.ALIGN_CENTER, "My Watermark Under " + writer.getPageNumber(), document.getPageSize().getWidth() / 2, document.getPageSize().getHeight() / 2, 45); cb.endText(); cb.restoreState(); } }
/** * <a href="http://stackoverflow.com/questions/40947306/strange-setrowspan-error-not-working"> * Strange setRowspan error/not working * </a> * <p> * Selecting 1 header row and having a cell in the first row which spans 2 rows * does not match. iText ignores the row span resulting in the weird appearance. * </p> */ @Test public void testRowspanWithHeaderRows() throws IOException, DocumentException { File file = new File(RESULT_FOLDER, "rowspanWithHeaderRows.pdf"); OutputStream os = new FileOutputStream(file); Document document = new Document(); /*PdfWriter writer =*/ PdfWriter.getInstance(document, os); document.open(); document.add(createHeaderContent()); document.newPage(); document.add(createHeaderContent(new int[] {5,5,5,5,5})); document.close(); }
/** * Generates a document with a header containing Page x of y and with a Watermark on every page. * @param args no arguments needed */ public static void main(String args[]) { try { // step 1: creating the document Document doc = new Document(PageSize.A4, 50, 50, 100, 72); // step 2: creating the writer PdfWriter writer = PdfWriter.getInstance(doc, new FileOutputStream("pageNumbersWatermark.pdf")); // step 3: initialisations + opening the document writer.setPageEvent(new PageNumbersWatermark()); doc.open(); // step 4: adding content String text = "some padding text "; for (int k = 0; k < 10; ++k) text += text; Paragraph p = new Paragraph(text); p.setAlignment(Element.ALIGN_JUSTIFIED); doc.add(p); // step 5: closing the document doc.close(); } catch ( Exception e ) { e.printStackTrace(); } }
@Test public void testParagraphBackgroundEventListener() throws DocumentException, FileNotFoundException { Document document = new Document(); PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(new File(RESULT_FOLDER, "document-with-paragraph-backgrounds.pdf"))); ParagraphBackground border = new ParagraphBackground(); writer.setPageEvent(border); document.open(); document.add(new Paragraph("Hello,")); document.add(new Paragraph("In this document, we'll add several paragraphs that will trigger page events. As long as the event isn't activated, nothing special happens, but let's make the event active and see what happens:")); border.setActive(true); document.add(new Paragraph("This paragraph now has a background. Isn't that fantastic? By changing the event, we can even draw a border, change the line width of the border and many other things. Now let's deactivate the event.")); border.setActive(false); document.add(new Paragraph("This paragraph no longer has a background.")); document.close(); }
/** * <a href="http://stackoverflow.com/questions/35374110/how-do-i-use-itext-to-have-a-landscaped-pdf-on-half-of-a-a4-back-to-portrait-and"> * How do i use iText to have a landscaped PDF on half of a A4 back to portrait and full size on A4 * </a> * <p> * This sample shows how to rotate and enlarge the upper half of an A4 page to fit into a new A4 page. * </p> */ @Test public void testRotateAndZoomUpperHalfPage() throws IOException, DocumentException { try ( InputStream resource = getClass().getResourceAsStream("/mkl/testarea/itext5/extract/test.pdf"); OutputStream result = new FileOutputStream(new File(RESULT_FOLDER, "test-upperHalf.pdf")) ) { PdfReader reader = new PdfReader(resource); Document document = new Document(PageSize.A4); PdfWriter writer = PdfWriter.getInstance(document, result); document.open(); double sqrt2 = Math.sqrt(2); Rectangle pageSize = reader.getPageSize(1); PdfImportedPage importedPage = writer.getImportedPage(reader, 1); writer.getDirectContent().addTemplate(importedPage, 0, sqrt2, -sqrt2, 0, pageSize.getTop() * sqrt2, -pageSize.getLeft() * sqrt2); document.close(); } }
/** * <a href="http://stackoverflow.com/questions/35699167/double-space-not-being-preserved-in-pdf"> * Double space not being preserved in PDF * </a> * <p> * Indeed, the double space collapses into a single one when copying&pasting from the * generated PDF displayed in Adobe Reader. On the other hand the gap for the double * space is twice as wide as for the single space. So this essentially is a quirk of * copy&paste of Adobe Reader (and some other PDF viewers, too). * </p> */ @Test public void testDoubleSpace() throws DocumentException, IOException { try ( OutputStream pdfStream = new FileOutputStream(new File(RESULT_FOLDER, "DoubleSpace.pdf"))) { PdfPTable table = new PdfPTable(1); table.getDefaultCell().setBorderWidth(0.5f); table.getDefaultCell().setBorderColor(BaseColor.LIGHT_GRAY); table.addCell(new Phrase("SINGLE SPACED", new Font(BaseFont.createFont(), 36))); table.addCell(new Phrase("DOUBLE SPACED", new Font(BaseFont.createFont(), 36))); table.addCell(new Phrase("TRIPLE SPACED", new Font(BaseFont.createFont(), 36))); Document pdfDocument = new Document(PageSize.A4.rotate(), 0, 0, 0, 0); PdfWriter.getInstance(pdfDocument, pdfStream); pdfDocument.open(); pdfDocument.add(table); pdfDocument.close(); } }
/** * <a href="http://stackoverflow.com/questions/38057241/itextpdf-different-margin-on-specific-page"> * itextpdf different margin on specific page * </a> * <p> * This test shows how to set different margins to separate pages. * </p> */ @Test public void testChangingMargins() throws IOException, DocumentException { StringBuilder builder = new StringBuilder("test"); for (int i = 0; i < 100; i++) builder.append(" test"); String test = builder.toString(); try ( OutputStream pdfStream = new FileOutputStream(new File(RESULT_FOLDER, "ChangingMargins.pdf"))) { Document pdfDocument = new Document(PageSize.A4.rotate(), 0, 0, 0, 0); PdfWriter.getInstance(pdfDocument, pdfStream); pdfDocument.open(); for (int m = 0; m < pdfDocument.getPageSize().getWidth() / 2 && m < pdfDocument.getPageSize().getHeight() / 2; m += 100) { // pdfDocument.setMargins(m, m, 100, 100); pdfDocument.setMargins(m, m, m, m); pdfDocument.newPage(); pdfDocument.add(new Paragraph(test)); } pdfDocument.close(); } }
/** * <a href="http://stackoverflow.com/questions/29001852/how-to-create-a-pdf-and-you-then-merge-another-pdf-to-the-same-document-using-it"> * how to create a PDF and you then merge another pdf to the same document using itext * </a> * <p> * Testing the OP's method with <code>paginate</code> set to <code>true</code> * </p> */ @Test public void testAppendPDFsPaginate() throws IOException, DocumentException { try ( InputStream testA4Stream = getClass().getResourceAsStream("testA4.pdf"); InputStream fromStream = getClass().getResourceAsStream("from.pdf"); InputStream prefaceStream = getClass().getResourceAsStream("preface.pdf"); InputStream type3Stream = getClass().getResourceAsStream("Test_Type3_Problem.pdf"); FileOutputStream output = new FileOutputStream(new File(RESULT_FOLDER, "appendPdfsPaginate.pdf")); ) { Document document = new Document(); PdfWriter writer = PdfWriter.getInstance(document, output); document.open(); document.add(new Paragraph("Some content to start with")); appendPDFs(Arrays.asList(testA4Stream, fromStream, prefaceStream, type3Stream), writer, document, null, true); document.close(); } }
static byte[] createSimpleTextPdf(String paragraphFormat, int paragraphCount) throws DocumentException { ByteArrayOutputStream baos = new ByteArrayOutputStream(); Document document = new Document(); PdfWriter.getInstance(document, baos); document.open(); for (int i = 0; i < paragraphCount; i++) { Paragraph paragraph = new Paragraph(); paragraph.add(String.format(paragraphFormat, i)); document.add(paragraph); } document.close(); return baos.toByteArray(); }
static byte[] createSimpleCircleGraphicsPdf(int radius, int gap, int count) throws DocumentException { ByteArrayOutputStream baos = new ByteArrayOutputStream(); Document document = new Document(); PdfWriter writer = PdfWriter.getInstance(document, baos); document.open(); float y = writer.getPageSize().getTop(); for (int i = 0; i < count; i++) { Rectangle pageSize = writer.getPageSize(); if (y <= pageSize.getBottom() + 2*radius) { y = pageSize.getTop(); writer.getDirectContent().fillStroke(); document.newPage(); } writer.getDirectContent().circle(pageSize.getLeft() + pageSize.getWidth() * Math.random(), y-radius, radius); y-= 2*radius + gap; } writer.getDirectContent().fillStroke(); document.close(); return baos.toByteArray(); }
/** * <a href="http://stackoverflow.com/questions/32710839/itextsharp-pdfcopy-makes-read-only-fields-editable"> * iTextSharp PdfCopy makes read-only fields editable * </a> * <br/> * <a href="https://www.dropbox.com/s/nhy7av9b37uwowl/in1.pdf?dl=0"> * in1.pdf * </a> * <p> * Indeed, the issue can be reproduced. A possible explanation in a SO answer. * </p> */ @Test public void testCopyReadOnlyFields() throws IOException, DocumentException { Document document = new Document(); try ( OutputStream fileStream = new FileOutputStream(new File(RESULT_FOLDER, "in1Copy.pdf")); InputStream resource = getClass().getResourceAsStream("in1.pdf") ) { PdfCopy copier = new PdfCopy(document, fileStream); PdfReader reader = new PdfReader(resource); copier.setMergeFields(); document.open(); copier.addDocument(reader); copier.addJavaScript(reader.getJavaScript()); document.close(); } }
private static File copyToMultiplePages(CropJob cropJob) throws IOException, DocumentException { PdfReader reader = new PdfReader(cropJob.getSource().getAbsolutePath()); Document document = new Document(); File resultFile = File.createTempFile("cropped", ".pdf"); PdfSmartCopy pdfCopy = new PdfSmartCopy(document, new FileOutputStream(resultFile)); document.open(); PdfImportedPage page; for (int pageNumber = 1; pageNumber <= cropJob.getSourcePageCount(); pageNumber++) { SingleCluster currentCluster = cropJob.getClusterCollection().getSingleCluster(pageNumber); page = pdfCopy.getImportedPage(reader, pageNumber); pdfCopy.addPage(page); for (int j = 1; j < currentCluster.getRatiosList().size(); j++) { pdfCopy.addPage(page); } } document.close(); pdfCopy.close(); reader.close(); return resultFile; }
/** * This method creates a PDF with a single styled paragraph. */ static byte[] createSimpleCircleGraphicsPdf() throws DocumentException { ByteArrayOutputStream baos = new ByteArrayOutputStream(); Document document = new Document(); PdfWriter writer = PdfWriter.getInstance(document, baos); document.open(); float y = writer.getPageSize().getTop(document.topMargin()); float radius = 20; for (int i = 0; i < 3; i++) { Rectangle pageSize = writer.getPageSize(); writer.getDirectContent().circle( pageSize.getLeft(document.leftMargin()) + (pageSize.getWidth() - document.leftMargin() - document.rightMargin()) * Math.random(), y-radius, radius); y-= 2*radius + 5; } writer.getDirectContent().fillStroke(); document.close(); return baos.toByteArray(); }
/** * <a href="http://stackoverflow.com/questions/41743574/itextpdf-creates-unvalid-pdf-document"> * Itextpdf creates unvalid pdf document * </a> * <p> * CasperSlynge.html * </p> * <p> * Works for me. Admittedly, I replaced the {@link ByteArrayInputStream} by a * resource {@link InputStream} and the {@link ByteArrayOutputStream} by a * {@link FileOutputStream}. * </p> * <p> * I also added a `Charset` but the test created a valid file without, too. * </p> */ @Test public void testCreatePdfLikeCasperSlynge() throws IOException, DocumentException { try ( InputStream resource = getClass().getResourceAsStream("CasperSlynge.html"); FileOutputStream result = new FileOutputStream(new File(RESULT_FOLDER, "CasperSlynge.pdf"))) { // step 1 Document document = new Document(); // step 2 PdfWriter writer = PdfWriter.getInstance(document, result); // step 3 document.open(); // step 4 XMLWorkerHelper.getInstance().parseXHtml(writer, document, resource, Charset.forName("UTF8")); // step 5 document.close(); } }
/** * <a href="http://stackoverflow.com/questions/38989235/itext-html-to-pdf-memory-leak"> * IText HTML to PDF memory leak * </a> * <p> * The OP's code plus a save-to-file. * </p> */ public void testDevelofersScenario(String outputName) throws IOException, DocumentException { final String content = "<!--?xml version=\"1.0\" encoding=\"UTF-8\"?-->\n<html>\n <head>\n <title>Title</title>\n \n \n </head>\n" + "\n \n<body> \n \n \nEXAMPLE\n\n</body>\n</html>"; ByteArrayOutputStream baos = new ByteArrayOutputStream(); Document document = new Document(); PdfWriter writer = PdfWriter.getInstance(document, baos); document.open(); InputStream is = new ByteArrayInputStream(content.getBytes()); XMLWorkerHelper.getInstance().parseXHtml(writer, document, is); document.close(); baos.writeTo(new FileOutputStream(new File(RESULT_FOLDER, outputName))); }
private void writeTree(Document document) throws DocumentException, IOException { if(mTreeReport == null) { return; } Paragraph title = createTitleParagraph(); document.add(title); addSpace(document); PdfPTable titleTable = new PdfPTable(new float[]{1f, 3f}); titleTable.setWidthPercentage(100f); getParagraph(titleTable, MobileRangerApplication.getAppContext().getString(R.string.form_date_title), mTreeReport.getDate(), 0); getParagraph(titleTable, MobileRangerApplication.getAppContext().getString(R.string.form_reporting_employee_title), mTreeReport.getReportingEmployee(), 0); document.add(titleTable); addSpace(document); if(mTreeReport.getLocations() != null && mTreeReport.getLocations().size() > 0) { for (TreeLocation location : mTreeReport.getLocations()) { PdfPTable table = createTableForLocation(location); document.add(table); document.newPage(); } } }
static byte[] createMultiUseIndirectTextPdf() throws DocumentException, IOException { ByteArrayOutputStream baos = new ByteArrayOutputStream(); Document document = new Document(); PdfWriter writer = PdfWriter.getInstance(document, baos); document.open(); PdfReader reader = new PdfReader(createSimpleTextPdf()); PdfImportedPage template = writer.getImportedPage(reader, 1); Rectangle pageSize = reader.getPageSize(1); writer.getDirectContent().addTemplate(template, 0, .7f, -.7f, 0, pageSize.getRight(), (pageSize.getTop() + pageSize.getBottom()) / 2); writer.getDirectContent().addTemplate(template, 0, .7f, -.7f, 0, pageSize.getRight(), pageSize.getBottom()); document.newPage(); writer.getDirectContent().addTemplate(template, pageSize.getLeft(), pageSize.getBottom()); document.close(); return baos.toByteArray(); }