- Posts: 2
- Thank you received: 0
Microsoft Windows Phone 8.1 support ends (13 Jul 2017)
Microsoft has ended support for Windows Phone 8.1
Development and suggestions about third part tool integration.
Cordova, Xamarin, Basic4Android topics are listed here.
Cordova, Xamarin, Basic4Android topics are listed here.
Add a line in a PDF
IP: 192.168.0.71
8 years 1 month ago #13409
by mbious
Add a line in a PDF was created by mbious
Hello,
I use the demo version of Radaee to perform tests. For that I try to add a line annotation (btn_add_line) but it does not appear. Can you help me please ?
What is the Matrix class?
package com.radaee.test;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.image.BufferedImage;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JToolBar;
import com.radaee.pdf.Document;
import com.radaee.pdf.Matrix;
import com.radaee.pdf.Page;
public class TestRender extends JFrame implements ActionListener {
private Document m_doc;
private int m_pgno;
private JLabel m_iview;
private JButton btn_prev;
private JButton btn_next;
private JButton btn_add_line;
private JButton btn_add_arrow;
private JButton btn_add_circle;
JToolBar m_tbar;
private void renderPage(int pgno) {
m_pgno = pgno;
float pw = m_doc.GetPageWidth(pgno);
float ph = m_doc.GetPageHeight(pgno);
float scale1 = 600.0f / pw;
float scale2 = 800.0f / ph;
if (scale1 > scale2)
scale1 = scale2;
if (pw <= 0 || ph <= 0)
return;
int iw = (int) (pw * scale1);
int ih = (int) (ph * scale1);
Page page = m_doc.GetPage(pgno);
Matrix mat = new Matrix(scale1, -scale1, 0, ih);
BufferedImage bimg = new BufferedImage(iw, ih, BufferedImage.TYPE_INT_ARGB);
page.RenderToBuf(bimg, -1, mat);
mat.Destroy();
page.Close();
m_iview.setIcon(new ImageIcon(bimg));
}
private void renderPageAnnotedLine(int pgno) {
m_pgno = pgno;
float pw = m_doc.GetPageWidth(pgno);
float ph = m_doc.GetPageHeight(pgno);
float scale1 = 600.0f / pw;
float scale2 = 800.0f / ph;
if (scale1 > scale2)
scale1 = scale2;
if (pw <= 0 || ph <= 0)
return;
int iw = (int) (pw * scale1);
int ih = (int) (ph * scale1);
Page page = m_doc.GetPage(pgno);
Matrix mat = new Matrix(scale1, -scale1, 0, ih);
float [] pt1 = {new Float(10), new Float(10)};
float [] pt2 = {new Float(15), new Float(10)};
Matrix mat_line = new Matrix(10, 15, 20, 10);
page.AddAnnotLine(mat_line, pt1, pt2, 1, 9, 5, Color.blue.getAlpha(), Color.blue.getAlpha());
BufferedImage bimg = new BufferedImage(iw, ih, BufferedImage.TYPE_INT_ARGB);
page.RenderToBuf(bimg, -1, mat);
mat.Destroy();
page.Close();
m_iview.setIcon(new ImageIcon(bimg));
}
public TestRender(Document doc) {
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
super.windowClosing(e);
if (m_doc != null) {
m_doc.Close();
m_doc = null;
}
}
});
m_doc = doc;
m_tbar = new JToolBar();
btn_prev = new JButton("Previous Page");
btn_next = new JButton("Next Page");
btn_add_line = new JButton("Add line");
btn_add_arrow = new JButton("Add arrow");
btn_add_circle = new JButton("Add circle");
m_iview = new JLabel();
m_tbar.add(btn_prev);
m_tbar.add(btn_next);
m_tbar.add(btn_add_line);
m_tbar.add(btn_add_arrow);
m_tbar.add(btn_add_circle);
add("North", m_tbar);
add(m_iview);
btn_prev.addActionListener(this);
btn_next.addActionListener(this);
setTitle("Test PDF Render");
setSize(600, 880);
setVisible(true);
renderPage(0);
}
@Override
public void actionPerformed(ActionEvent e) {
int pgno = m_pgno;
if (e.getSource() == btn_prev) {
if (pgno == 0)
return;
pgno--;
renderPage(pgno);
} else if (e.getSource() == btn_next) {
if (pgno == m_doc.GetPageCount() - 1)
return;
pgno++;
renderPage(pgno);
} else if(e.getSource() == btn_add_line) {
renderPageAnnotedLine(pgno);
} else if(e.getSource() == btn_add_arrow) {
// TODO add an arrow
}else if(e.getSource() == btn_add_circle) {
// TODO add a circle
}
}
}
I use the demo version of Radaee to perform tests. For that I try to add a line annotation (btn_add_line) but it does not appear. Can you help me please ?
What is the Matrix class?
package com.radaee.test;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.image.BufferedImage;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JToolBar;
import com.radaee.pdf.Document;
import com.radaee.pdf.Matrix;
import com.radaee.pdf.Page;
public class TestRender extends JFrame implements ActionListener {
private Document m_doc;
private int m_pgno;
private JLabel m_iview;
private JButton btn_prev;
private JButton btn_next;
private JButton btn_add_line;
private JButton btn_add_arrow;
private JButton btn_add_circle;
JToolBar m_tbar;
private void renderPage(int pgno) {
m_pgno = pgno;
float pw = m_doc.GetPageWidth(pgno);
float ph = m_doc.GetPageHeight(pgno);
float scale1 = 600.0f / pw;
float scale2 = 800.0f / ph;
if (scale1 > scale2)
scale1 = scale2;
if (pw <= 0 || ph <= 0)
return;
int iw = (int) (pw * scale1);
int ih = (int) (ph * scale1);
Page page = m_doc.GetPage(pgno);
Matrix mat = new Matrix(scale1, -scale1, 0, ih);
BufferedImage bimg = new BufferedImage(iw, ih, BufferedImage.TYPE_INT_ARGB);
page.RenderToBuf(bimg, -1, mat);
mat.Destroy();
page.Close();
m_iview.setIcon(new ImageIcon(bimg));
}
private void renderPageAnnotedLine(int pgno) {
m_pgno = pgno;
float pw = m_doc.GetPageWidth(pgno);
float ph = m_doc.GetPageHeight(pgno);
float scale1 = 600.0f / pw;
float scale2 = 800.0f / ph;
if (scale1 > scale2)
scale1 = scale2;
if (pw <= 0 || ph <= 0)
return;
int iw = (int) (pw * scale1);
int ih = (int) (ph * scale1);
Page page = m_doc.GetPage(pgno);
Matrix mat = new Matrix(scale1, -scale1, 0, ih);
float [] pt1 = {new Float(10), new Float(10)};
float [] pt2 = {new Float(15), new Float(10)};
Matrix mat_line = new Matrix(10, 15, 20, 10);
page.AddAnnotLine(mat_line, pt1, pt2, 1, 9, 5, Color.blue.getAlpha(), Color.blue.getAlpha());
BufferedImage bimg = new BufferedImage(iw, ih, BufferedImage.TYPE_INT_ARGB);
page.RenderToBuf(bimg, -1, mat);
mat.Destroy();
page.Close();
m_iview.setIcon(new ImageIcon(bimg));
}
public TestRender(Document doc) {
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
super.windowClosing(e);
if (m_doc != null) {
m_doc.Close();
m_doc = null;
}
}
});
m_doc = doc;
m_tbar = new JToolBar();
btn_prev = new JButton("Previous Page");
btn_next = new JButton("Next Page");
btn_add_line = new JButton("Add line");
btn_add_arrow = new JButton("Add arrow");
btn_add_circle = new JButton("Add circle");
m_iview = new JLabel();
m_tbar.add(btn_prev);
m_tbar.add(btn_next);
m_tbar.add(btn_add_line);
m_tbar.add(btn_add_arrow);
m_tbar.add(btn_add_circle);
add("North", m_tbar);
add(m_iview);
btn_prev.addActionListener(this);
btn_next.addActionListener(this);
setTitle("Test PDF Render");
setSize(600, 880);
setVisible(true);
renderPage(0);
}
@Override
public void actionPerformed(ActionEvent e) {
int pgno = m_pgno;
if (e.getSource() == btn_prev) {
if (pgno == 0)
return;
pgno--;
renderPage(pgno);
} else if (e.getSource() == btn_next) {
if (pgno == m_doc.GetPageCount() - 1)
return;
pgno++;
renderPage(pgno);
} else if(e.getSource() == btn_add_line) {
renderPageAnnotedLine(pgno);
} else if(e.getSource() == btn_add_arrow) {
// TODO add an arrow
}else if(e.getSource() == btn_add_circle) {
// TODO add a circle
}
}
}
IP: 192.168.0.71
8 years 1 month ago #13410
by nermeen
Replied by nermeen on topic Add a line in a PDF
Your code is missing some parts:
Here is the updated code:
Note: you are using the server version which has a different license mechanism, you need to contact sales team for clarifications.
- You need to add the action listener in TestRender:
Code:btn_add_line.addActionListener(this);
- Before adding an annotation you need to call
Code:page.ObjsStart();
- The color needs to be formated as 0xAARRGGBB
Here is the updated code:
Code:
private void renderPageAnnotedLine(int pgno) {
m_pgno = pgno;
float pw = m_doc.GetPageWidth(pgno);
float ph = m_doc.GetPageHeight(pgno);
float scale1 = 600.0f / pw;
float scale2 = 800.0f / ph;
if (scale1 > scale2)
scale1 = scale2;
if (pw <= 0 || ph <= 0)
return;
int iw = (int) (pw * scale1);
int ih = (int) (ph * scale1);
Page page = m_doc.GetPage(pgno);
page.ObjsStart();
Matrix mat = new Matrix(scale1, -scale1, 0, ih);
float [] pt1 = {new Float(100), new Float(100)};
float [] pt2 = {new Float(200), new Float(200)};
page.AddAnnotLine(pt1, pt2, 1, 9, 5, 0xFFFF0000, 0xFFFF0000);
BufferedImage bimg = new BufferedImage(iw, ih, BufferedImage.TYPE_INT_ARGB);
page.RenderToBuf(bimg, -1, mat);
mat.Destroy();
page.Close();
m_iview.setIcon(new ImageIcon(bimg));
}
Note: you are using the server version which has a different license mechanism, you need to contact sales team for clarifications.
Time to create page: 0.407 seconds