<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_Tutorial%2FPDF%2Fto_PDF</id>
		<title>Java Tutorial/PDF/to PDF - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_Tutorial%2FPDF%2Fto_PDF"/>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java_Tutorial/PDF/to_PDF&amp;action=history"/>
		<updated>2026-04-11T03:06:26Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://jexp.ru/index.php?title=Java_Tutorial/PDF/to_PDF&amp;diff=5504&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java_Tutorial/PDF/to_PDF&amp;diff=5504&amp;oldid=prev"/>
				<updated>2010-06-01T05:21:14Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 05:21, 1 июня 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://jexp.ru/index.php?title=Java_Tutorial/PDF/to_PDF&amp;diff=5503&amp;oldid=prev</id>
		<title> в 17:44, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java_Tutorial/PDF/to_PDF&amp;diff=5503&amp;oldid=prev"/>
				<updated>2010-05-31T17:44:27Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==  Create Pdf document from JTable ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.awt.BorderLayout;&lt;br /&gt;
import java.awt.Graphics2D;&lt;br /&gt;
import java.io.FileOutputStream;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
import javax.swing.JTable;&lt;br /&gt;
import com.lowagie.text.Document;&lt;br /&gt;
import com.lowagie.text.pdf.PdfContentByte;&lt;br /&gt;
import com.lowagie.text.pdf.PdfTemplate;&lt;br /&gt;
import com.lowagie.text.pdf.PdfWriter;&lt;br /&gt;
public class MainClass extends JFrame {&lt;br /&gt;
  private JTable table;&lt;br /&gt;
  public static void main(String[] args) throws Exception {&lt;br /&gt;
    MainClass frame = new MainClass();&lt;br /&gt;
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    frame.pack();&lt;br /&gt;
    frame.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
  public MainClass() throws Exception {&lt;br /&gt;
    getContentPane().setLayout(new BorderLayout());&lt;br /&gt;
    Object[][] data = { { &amp;quot;A&amp;quot;, &amp;quot;B&amp;quot;, &amp;quot;C&amp;quot;, new Integer(5), new Boolean(false) },&lt;br /&gt;
        { &amp;quot;D&amp;quot;, &amp;quot;E&amp;quot;, &amp;quot;F&amp;quot;, new Integer(3), new Boolean(true) } };&lt;br /&gt;
    String[] columnNames = { &amp;quot;First Name&amp;quot;, &amp;quot;Last Name&amp;quot;, &amp;quot;Sport&amp;quot;, &amp;quot;# of Years&amp;quot;, &amp;quot;Vegetarian&amp;quot; };&lt;br /&gt;
    table = new JTable(data, columnNames);&lt;br /&gt;
    JPanel tPanel = new JPanel(new BorderLayout());&lt;br /&gt;
    tPanel.add(table.getTableHeader(), BorderLayout.NORTH);&lt;br /&gt;
    tPanel.add(table, BorderLayout.CENTER);&lt;br /&gt;
    getContentPane().add(tPanel, BorderLayout.CENTER);&lt;br /&gt;
    Document document = new Document();&lt;br /&gt;
    PdfWriter writer;&lt;br /&gt;
    writer = PdfWriter.getInstance(document, new FileOutputStream(&amp;quot;my_jtable_shapes.pdf&amp;quot;));&lt;br /&gt;
    // writer = PdfWriter.getInstance(document, new&lt;br /&gt;
    // FileOutputStream(&amp;quot;my_jtable_fonts.pdf&amp;quot;));&lt;br /&gt;
    document.open();&lt;br /&gt;
    PdfContentByte cb = writer.getDirectContent();&lt;br /&gt;
    PdfTemplate tp = cb.createTemplate(500, 500);&lt;br /&gt;
    Graphics2D g2;&lt;br /&gt;
    g2 = tp.createGraphicsShapes(500, 500);&lt;br /&gt;
    // g2 = tp.createGraphics(500, 500);&lt;br /&gt;
    table.print(g2);&lt;br /&gt;
    g2.dispose();&lt;br /&gt;
    cb.addTemplate(tp, 30, 300);&lt;br /&gt;
    // step 5: we close the document&lt;br /&gt;
    document.close();&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  JTextPane To Pdf ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.awt.BorderLayout;&lt;br /&gt;
import java.awt.Color;&lt;br /&gt;
import java.awt.Graphics2D;&lt;br /&gt;
import java.awt.Insets;&lt;br /&gt;
import java.awt.Rectangle;&lt;br /&gt;
import java.awt.Toolkit;&lt;br /&gt;
import java.awt.event.ActionEvent;&lt;br /&gt;
import java.awt.event.ActionListener;&lt;br /&gt;
import java.awt.event.WindowAdapter;&lt;br /&gt;
import java.awt.event.WindowEvent;&lt;br /&gt;
import java.awt.geom.AffineTransform;&lt;br /&gt;
import java.io.FileOutputStream;&lt;br /&gt;
import javax.swing.Action;&lt;br /&gt;
import javax.swing.JButton;&lt;br /&gt;
import javax.swing.JEditorPane;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JMenu;&lt;br /&gt;
import javax.swing.JMenuBar;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
import javax.swing.JScrollPane;&lt;br /&gt;
import javax.swing.JTextPane;&lt;br /&gt;
import javax.swing.text.MutableAttributeSet;&lt;br /&gt;
import javax.swing.text.SimpleAttributeSet;&lt;br /&gt;
import javax.swing.text.StyleConstants;&lt;br /&gt;
import javax.swing.text.StyledEditorKit;&lt;br /&gt;
import com.lowagie.text.Document;&lt;br /&gt;
import com.lowagie.text.pdf.DefaultFontMapper;&lt;br /&gt;
import com.lowagie.text.pdf.PdfContentByte;&lt;br /&gt;
import com.lowagie.text.pdf.PdfWriter;&lt;br /&gt;
public class MainClass {&lt;br /&gt;
  int inch = Toolkit.getDefaultToolkit().getScreenResolution();&lt;br /&gt;
  float pixelToPoint = (float) 72 / (float) inch;&lt;br /&gt;
  JTextPane textPane;&lt;br /&gt;
  public MainClass() {&lt;br /&gt;
    JFrame frame = new JFrame();&lt;br /&gt;
    textPane = new JTextPane();&lt;br /&gt;
    JScrollPane scrollPane = new JScrollPane(textPane);&lt;br /&gt;
    JPanel north = new JPanel();&lt;br /&gt;
    JButton print = new JButton(&amp;quot;Print&amp;quot;);&lt;br /&gt;
    print.addActionListener(new ActionListener() {&lt;br /&gt;
      public void actionPerformed(ActionEvent ae) {&lt;br /&gt;
        paintToPDF(textPane);&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    JMenuBar menu = new JMenuBar();&lt;br /&gt;
    JMenu styleMenu = new JMenu();&lt;br /&gt;
    styleMenu.setText(&amp;quot;Style&amp;quot;);&lt;br /&gt;
    Action boldAction = new BoldAction();&lt;br /&gt;
    boldAction.putValue(Action.NAME, &amp;quot;Bold&amp;quot;);&lt;br /&gt;
    styleMenu.add(boldAction);&lt;br /&gt;
    Action italicAction = new ItalicAction();&lt;br /&gt;
    italicAction.putValue(Action.NAME, &amp;quot;Italic&amp;quot;);&lt;br /&gt;
    styleMenu.add(italicAction);&lt;br /&gt;
    menu.add(styleMenu);&lt;br /&gt;
    north.add(menu);&lt;br /&gt;
    north.add(print);&lt;br /&gt;
    frame.getContentPane().setLayout(new BorderLayout());&lt;br /&gt;
    frame.getContentPane().add(north, BorderLayout.NORTH);&lt;br /&gt;
    frame.getContentPane().add(scrollPane, BorderLayout.CENTER);&lt;br /&gt;
    frame.setSize(800, 500);&lt;br /&gt;
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    frame.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    new MainClass();&lt;br /&gt;
  }&lt;br /&gt;
  public void paintToPDF(JTextPane ta) {&lt;br /&gt;
    try {&lt;br /&gt;
      ta.setBounds(0, 0, (int) convertToPixels(612 - 58), (int) convertToPixels(792 - 60));&lt;br /&gt;
      Document document = new Document();&lt;br /&gt;
      FileOutputStream fos = new FileOutputStream(&amp;quot;2.pdf&amp;quot;);&lt;br /&gt;
      PdfWriter writer = PdfWriter.getInstance(document, fos);&lt;br /&gt;
      document.setPageSize(new com.lowagie.text.Rectangle(612, 792));&lt;br /&gt;
      document.open();&lt;br /&gt;
      PdfContentByte cb = writer.getDirectContent();&lt;br /&gt;
      cb.saveState();&lt;br /&gt;
      cb.concatCTM(1, 0, 0, 1, 0, 0);&lt;br /&gt;
      DefaultFontMapper mapper = new DefaultFontMapper();&lt;br /&gt;
      mapper.insertDirectory(&amp;quot;c:/windows/fonts&amp;quot;);&lt;br /&gt;
      Graphics2D g2 = cb.createGraphics(612, 792, mapper, true, .95f);&lt;br /&gt;
      AffineTransform at = new AffineTransform();&lt;br /&gt;
      at.translate(convertToPixels(20), convertToPixels(20));&lt;br /&gt;
      at.scale(pixelToPoint, pixelToPoint);&lt;br /&gt;
      g2.transform(at);&lt;br /&gt;
      g2.setColor(Color.WHITE);&lt;br /&gt;
      g2.fill(ta.getBounds());&lt;br /&gt;
      Rectangle alloc = getVisibleEditorRect(ta);&lt;br /&gt;
      ta.getUI().getRootView(ta).paint(g2, alloc);&lt;br /&gt;
      g2.setColor(Color.BLACK);&lt;br /&gt;
      g2.draw(ta.getBounds());&lt;br /&gt;
      g2.dispose();&lt;br /&gt;
      cb.restoreState();&lt;br /&gt;
      document.close();&lt;br /&gt;
      fos.flush();&lt;br /&gt;
      fos.close();&lt;br /&gt;
    } catch (Exception e) {&lt;br /&gt;
      e.printStackTrace();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public float convertToPoints(int pixels) {&lt;br /&gt;
    return (float) (pixels * pixelToPoint);&lt;br /&gt;
  }&lt;br /&gt;
  public float convertToPixels(int points) {&lt;br /&gt;
    return (float) (points / pixelToPoint);&lt;br /&gt;
  }&lt;br /&gt;
  protected Rectangle getVisibleEditorRect(JTextPane ta) {&lt;br /&gt;
    Rectangle alloc = ta.getBounds();&lt;br /&gt;
    if ((alloc.width &amp;gt; 0) &amp;amp;&amp;amp; (alloc.height &amp;gt; 0)) {&lt;br /&gt;
      alloc.x = alloc.y = 0;&lt;br /&gt;
      Insets insets = ta.getInsets();&lt;br /&gt;
      alloc.x += insets.left;&lt;br /&gt;
      alloc.y += insets.top;&lt;br /&gt;
      alloc.width -= insets.left + insets.right;&lt;br /&gt;
      alloc.height -= insets.top + insets.bottom;&lt;br /&gt;
      return alloc;&lt;br /&gt;
    }&lt;br /&gt;
    return null;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class BoldAction extends StyledEditorKit.StyledTextAction {&lt;br /&gt;
  private static final long serialVersionUID = 9174670038684056758L;&lt;br /&gt;
  public BoldAction() {&lt;br /&gt;
    super(&amp;quot;font-bold&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  public String toString() {&lt;br /&gt;
    return &amp;quot;Bold&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
  public void actionPerformed(ActionEvent e) {&lt;br /&gt;
    JEditorPane editor = getEditor(e);&lt;br /&gt;
    if (editor != null) {&lt;br /&gt;
      StyledEditorKit kit = getStyledEditorKit(editor);&lt;br /&gt;
      MutableAttributeSet attr = kit.getInputAttributes();&lt;br /&gt;
      boolean bold = (StyleConstants.isBold(attr)) ? false : true;&lt;br /&gt;
      SimpleAttributeSet sas = new SimpleAttributeSet();&lt;br /&gt;
      StyleConstants.setBold(sas, bold);&lt;br /&gt;
      setCharacterAttributes(editor, sas, false);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class ItalicAction extends StyledEditorKit.StyledTextAction {&lt;br /&gt;
  private static final long serialVersionUID = -1428340091100055456L;&lt;br /&gt;
  public ItalicAction() {&lt;br /&gt;
    super(&amp;quot;font-italic&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  public String toString() {&lt;br /&gt;
    return &amp;quot;Italic&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
  public void actionPerformed(ActionEvent e) {&lt;br /&gt;
    JEditorPane editor = getEditor(e);&lt;br /&gt;
    if (editor != null) {&lt;br /&gt;
      StyledEditorKit kit = getStyledEditorKit(editor);&lt;br /&gt;
      MutableAttributeSet attr = kit.getInputAttributes();&lt;br /&gt;
      boolean italic = (StyleConstants.isItalic(attr)) ? false : true;&lt;br /&gt;
      SimpleAttributeSet sas = new SimpleAttributeSet();&lt;br /&gt;
      StyleConstants.setItalic(sas, italic);&lt;br /&gt;
      setCharacterAttributes(editor, sas, false);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;/div&gt;</summary>
			</entry>

	</feed>