diff --git a/core-java/src/main/java/com/baeldung/hexToAscii/HexToAscii.java b/core-java/src/main/java/com/baeldung/hexToAscii/HexToAscii.java new file mode 100644 index 0000000000..2a3c4b109e --- /dev/null +++ b/core-java/src/main/java/com/baeldung/hexToAscii/HexToAscii.java @@ -0,0 +1,46 @@ +package com.baeldung.hexToAscii; + +import static org.junit.Assert.assertEquals; + +import org.junit.Test; + +public class HexToAscii { + + @Test + public static void whenHexToAscii() { + String asciiString = "http://www.baeldung.com/jackson-serialize-dates"; + String hexEquivalent = "687474703a2f2f7777772e6261656c64756e672e636f6d2f6a61636b736f6e2d73657269616c697a652d6461746573"; + + assertEquals(asciiString, hexToAscii(hexEquivalent)); + } + + @Test + public static void whenAsciiToHex() { + String asciiString = "http://www.baeldung.com/jackson-serialize-dates"; + String hexEquivalent = "687474703a2f2f7777772e6261656c64756e672e636f6d2f6a61636b736f6e2d73657269616c697a652d6461746573"; + + assertEquals(hexEquivalent, asciiToHex(asciiString)); + } + + // + + private static String asciiToHex(String asciiStr) { + char[] chars = asciiStr.toCharArray(); + StringBuilder hex = new StringBuilder(); + for (char ch : chars) { + hex.append(Integer.toHexString((int) ch)); + } + + return hex.toString(); + } + + private static String hexToAscii(String hexStr) { + StringBuilder output = new StringBuilder(""); + for (int i = 0; i < hexStr.length(); i += 2) { + String str = hexStr.substring(i, i + 2); + output.append((char) Integer.parseInt(str, 16)); + } + return output.toString(); + } + +} diff --git a/pdf/pom.xml b/pdf/pom.xml index 311265880d..c6404c6b30 100644 --- a/pdf/pom.xml +++ b/pdf/pom.xml @@ -40,9 +40,9 @@ 5.5.10 - org.apache.poi - poi - 3.15 + com.itextpdf.tool + xmlworker + 5.5.10 org.apache.poi diff --git a/pdf/src/main/java/com/baeldung/pdf/PDF2HTMLExample.java b/pdf/src/main/java/com/baeldung/pdf/PDF2HTMLExample.java index 0d38208bab..1fdf07a05f 100644 --- a/pdf/src/main/java/com/baeldung/pdf/PDF2HTMLExample.java +++ b/pdf/src/main/java/com/baeldung/pdf/PDF2HTMLExample.java @@ -1,6 +1,8 @@ package com.baeldung.pdf; import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; import java.io.IOException; import java.io.PrintWriter; import java.io.Writer; @@ -10,14 +12,21 @@ import javax.xml.parsers.ParserConfigurationException; import org.apache.pdfbox.pdmodel.PDDocument; import org.fit.pdfdom.PDFDomTree; +import com.itextpdf.text.Document; +import com.itextpdf.text.DocumentException; +import com.itextpdf.text.pdf.PdfWriter; +import com.itextpdf.tool.xml.XMLWorkerHelper; + public class PDF2HTMLExample { - private static final String FILENAME = "src/main/resources/pdf.pdf"; + private static final String PDF = "src/main/resources/pdf.pdf"; + private static final String HTML = "src/main/resources/html.html"; public static void main(String[] args) { try { - generateHTMLFromPDF(FILENAME); - } catch (IOException | ParserConfigurationException e) { + generateHTMLFromPDF(PDF); + generatePDFFromHTML(HTML); + } catch (IOException | ParserConfigurationException | DocumentException e) { e.printStackTrace(); } } @@ -32,4 +41,12 @@ public class PDF2HTMLExample { pdf.close(); } } + + private static void generatePDFFromHTML(String filename) throws ParserConfigurationException, IOException, DocumentException { + Document document = new Document(); + PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("src/output/html.pdf")); + document.open(); + XMLWorkerHelper.getInstance().parseXHtml(writer, document, new FileInputStream(filename)); + document.close(); + } } diff --git a/pdf/src/main/java/com/baeldung/pdf/PDF2ImageExample.java b/pdf/src/main/java/com/baeldung/pdf/PDF2ImageExample.java index 00778d16c1..69f5d9731f 100644 --- a/pdf/src/main/java/com/baeldung/pdf/PDF2ImageExample.java +++ b/pdf/src/main/java/com/baeldung/pdf/PDF2ImageExample.java @@ -1,24 +1,36 @@ package com.baeldung.pdf; +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.net.URL; + import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.rendering.ImageType; import org.apache.pdfbox.rendering.PDFRenderer; import org.apache.pdfbox.tools.imageio.ImageIOUtil; -import java.awt.image.BufferedImage; -import java.io.File; -import java.io.IOException; +import com.itextpdf.text.BadElementException; +import com.itextpdf.text.Document; +import com.itextpdf.text.DocumentException; +import com.itextpdf.text.Image; +import com.itextpdf.text.pdf.PdfWriter; public class PDF2ImageExample { - private static final String FILENAME = "src/main/resources/pdf.pdf"; - + private static final String PDF = "src/main/resources/pdf.pdf"; + private static final String JPG = "http://cdn2.baeldung.netdna-cdn.com/wp-content/uploads/2016/05/baeldung-rest-widget-main-1.2.0"; + private static final String GIF = "https://media.giphy.com/media/l3V0x6kdXUW9M4ONq/giphy"; + public static void main(String[] args) { try { - generateImageFromPDF(FILENAME, "png"); - generateImageFromPDF(FILENAME, "jpeg"); - generateImageFromPDF(FILENAME, "gif"); - } catch (IOException e) { + generateImageFromPDF(PDF, "png"); + generateImageFromPDF(PDF, "jpeg"); + generateImageFromPDF(PDF, "gif"); + generatePDFFromImage(JPG, "jpg"); + generatePDFFromImage(GIF, "gif"); + } catch (IOException | DocumentException e) { e.printStackTrace(); } } @@ -32,4 +44,19 @@ public class PDF2ImageExample { } document.close(); } + + private static void generatePDFFromImage(String filename, String extension) + throws IOException, BadElementException, DocumentException { + Document document = new Document(); + String input = filename + "." + extension; + String output = "src/output/" + extension + ".pdf"; + FileOutputStream fos = new FileOutputStream(output); + PdfWriter writer = PdfWriter.getInstance(document, fos); + writer.open(); + document.open(); + document.add(Image.getInstance((new URL(input)))); + document.close(); + writer.close(); + } + } diff --git a/pdf/src/main/java/com/baeldung/pdf/PDF2TextExample.java b/pdf/src/main/java/com/baeldung/pdf/PDF2TextExample.java index c5880a4e91..7965152234 100644 --- a/pdf/src/main/java/com/baeldung/pdf/PDF2TextExample.java +++ b/pdf/src/main/java/com/baeldung/pdf/PDF2TextExample.java @@ -1,6 +1,9 @@ package com.baeldung.pdf; +import java.io.BufferedReader; import java.io.File; +import java.io.FileOutputStream; +import java.io.FileReader; import java.io.IOException; import java.io.PrintWriter; @@ -10,14 +13,24 @@ import org.apache.pdfbox.pdfparser.PDFParser; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.text.PDFTextStripper; +import com.itextpdf.text.Document; +import com.itextpdf.text.DocumentException; +import com.itextpdf.text.Element; +import com.itextpdf.text.Font; +import com.itextpdf.text.PageSize; +import com.itextpdf.text.Paragraph; +import com.itextpdf.text.pdf.PdfWriter; + public class PDF2TextExample { - private static final String FILENAME = "src/main/resources/pdf.pdf"; + private static final String PDF = "src/main/resources/pdf.pdf"; + private static final String TXT = "src/main/resources/txt.txt"; public static void main(String[] args) { try { - generateTxtFromPDF(FILENAME); - } catch (IOException e) { + generateTxtFromPDF(PDF); + generatePDFFromTxt(TXT); + } catch (IOException | DocumentException e) { e.printStackTrace(); } } @@ -45,4 +58,27 @@ public class PDF2TextExample { pw.close(); } + private static void generatePDFFromTxt(String filename) throws IOException, DocumentException { + Document pdfDoc = new Document(PageSize.A4); + PdfWriter.getInstance(pdfDoc, new FileOutputStream("src/output/txt.pdf")) + .setPdfVersion(PdfWriter.PDF_VERSION_1_7); + pdfDoc.open(); + + Font myfont = new Font(); + myfont.setStyle(Font.NORMAL); + myfont.setSize(11); + pdfDoc.add(new Paragraph("\n")); + + BufferedReader br = new BufferedReader(new FileReader(filename)); + String strLine; + while ((strLine = br.readLine()) != null) { + Paragraph para = new Paragraph(strLine + "\n", myfont); + para.setAlignment(Element.ALIGN_JUSTIFIED); + pdfDoc.add(para); + } + + pdfDoc.close(); + br.close(); + } + } diff --git a/pdf/src/main/resources/html.html b/pdf/src/main/resources/html.html new file mode 100644 index 0000000000..d3072c056c --- /dev/null +++ b/pdf/src/main/resources/html.html @@ -0,0 +1,53 @@ + + + + +A very simple webpage + + + +

A very simple webpage. This is an "h1" level header.

+ +

This is a level h2 header.

+ +
This is a level h6 header. Pretty small!
+ +

This is a standard paragraph.

+ +

Now I've aligned it in the center of the screen.

+ +

Now aligned to the right

+ +

Bold text

+ +

Strongly emphasized text Can you tell the difference vs. bold?

+ +

Italics

+ +

Emphasized text Just like Italics!

+ +

How about a nice ordered list!

+
    +
  1. This little piggy went to market
  2. +
  3. This little piggy went to SB228 class
  4. +
  5. This little piggy went to an expensive restaurant in Downtown Palo Alto
  6. +
  7. This little piggy ate too much at Indian Buffet.
  8. +
  9. This little piggy got lost
  10. +
+ +

Unordered list

+ + + +

And finally, how about some

Links? + +

Remember, you can view the HTMl code from this or any other page by using the "View Page Source" command of your browser.

+ + + + + diff --git a/pdf/src/main/resources/txt.txt b/pdf/src/main/resources/txt.txt new file mode 100644 index 0000000000..de0c36ae75 --- /dev/null +++ b/pdf/src/main/resources/txt.txt @@ -0,0 +1,3 @@ +Test +Text + Test TEST \ No newline at end of file