Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>Use the below code to create an attachments, please go throw the code as I have spent only few minutes, understand it and remove the unnecessary codes. </p> <p>There is a RESOURCE variable which points all the pdf's or files you want to attach. here in this case, it is public static final String RESOURCE = "chapter16/%s.pdf";</p> <p>Where the chapter16 folder has the pdf's you want to attached and %s will be replaced with the name of the file that you provide and the file format is .pdf(if you are attaching a pdf file)</p> <p>It works and tested in my system. I refered this code from <a href="http://itextpdf.com/examples/iia.php?id=289" rel="nofollow">here</a></p> <pre><code>// I create the list which has the list of files names i want to attach ArrayList&lt;String&gt; strList = new ArrayList&lt;String&gt;(); strList.add("Strings"); // its the same file I'm attaching four times strList.add("Strings"); // where "Strings" is the name of the file strList.add("Strings"); strList.add("Strings"); </code></pre> <hr> <pre><code>import java.io.ByteArrayOutputStream; import java.io.FileOutputStream; import java.io.IOException; import java.sql.SQLException; import java.util.ArrayList; import com.itextpdf.text.Chunk; import com.itextpdf.text.Document; import com.itextpdf.text.DocumentException; import com.itextpdf.text.List; import com.itextpdf.text.ListItem; import com.itextpdf.text.Paragraph; import com.itextpdf.text.pdf.PRStream; import com.itextpdf.text.pdf.PdfAnnotation; import com.itextpdf.text.pdf.PdfArray; import com.itextpdf.text.pdf.PdfDictionary; import com.itextpdf.text.pdf.PdfName; import com.itextpdf.text.pdf.PdfReader; import com.itextpdf.text.pdf.PdfWriter; /** * Creates a PDF listing of attachments * The attachments can be extracted. */ public class AttachFiles { /** Path to the resources. */ public static final String RESOURCE = "chapter16/%s.pdf"; /** The filename of the resulting PDF. */ public static final String FILENAME = "ResultingFile.pdf"; /** The path to the resulting PDFs */ public static final String PATH = "chapter16/%s"; /** The filename of the PDF */ public static final String RESULT = String.format(PATH, FILENAME); /** * Creates a PDF listing * @throws IOException * @throws DocumentException * @throws SQLException */ public static void main(String[] args) throws IOException, DocumentException, SQLException { AttachFiles attachFiles = new AttachFiles(); FileOutputStream os = new FileOutputStream(RESULT); os.write(attachFiles.createPdf()); os.flush(); os.close(); attachFiles.extractAttachments(RESULT); } /** * Extracts attachments from an existing PDF. * @param src the path to the existing PDF * @param dest where to put the extracted attachments * @throws IOException */ public void extractAttachments(String src) throws IOException { PdfReader reader = new PdfReader(src); PdfArray array; PdfDictionary annot; PdfDictionary fs; PdfDictionary refs; for (int i = 1; i &lt;= reader.getNumberOfPages(); i++) { array = reader.getPageN(i).getAsArray(PdfName.ANNOTS); if (array == null) continue; for (int j = 0; j &lt; array.size(); j++) { annot = array.getAsDict(j); if (PdfName.FILEATTACHMENT.equals(annot.getAsName(PdfName.SUBTYPE))) { fs = annot.getAsDict(PdfName.FS); refs = fs.getAsDict(PdfName.EF); for (PdfName name : refs.getKeys()) { FileOutputStream fos = new FileOutputStream(String.format(PATH, fs.getAsString(name).toString())); fos.write(PdfReader.getStreamBytes((PRStream)refs.getAsStream(name))); fos.flush(); fos.close(); } } } } } /** * Creates the PDF. * @return the bytes of a PDF file. * @throws DocumentExcetpion * @throws IOException * @throws SQLException */ public byte[] createPdf() throws DocumentException, IOException, SQLException { // step 1 Document document = new Document(); // step 2 ByteArrayOutputStream baos = new ByteArrayOutputStream(); PdfWriter writer = PdfWriter.getInstance(document, baos); // step 3 document.open(); // step 4 document.add(new Paragraph("This is a list pdf attachments.")); PdfAnnotation annot; ListItem item; Chunk chunk; List list = new List(); // I create the list which has the list of files names i want to attach ArrayList&lt;String&gt; strList = new ArrayList&lt;String&gt;(); strList.add("Strings"); // its the same file I'm attaching four times strList.add("Strings"); strList.add("Strings"); strList.add("Strings"); for (String strWord : strList) { annot = PdfAnnotation.createFileAttachment( writer, null, "Name", null, String.format(RESOURCE, strWord), String.format("%s.pdf", strWord)); item = new ListItem("Name"); item.add("\u00a0\u00a0"); chunk = new Chunk("\u00a0\u00a0\u00a0\u00a0"); chunk.setAnnotation(annot); item.add(chunk); list.add(item); } document.add(list); // step 5 document.close(); return baos.toByteArray(); } } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload