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.

Add a line in a PDF

More
IP: 192.168.0.71 8 years 1 month ago #13411 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
}
}

}
Time to create page: 0.414 seconds
Powered by Kunena Forum