java swing 显示pdf,带放大缩小及打印功能

基于java swing界面的PDF绘画工具 分为预览界面和配置界面,配置后实时同步。绘画的PDF文件所占空间小,支持配置文件的导入导出,可以绘画文字、线条、矩形和图片,支持段落的自动换行和首行缩进。java swing界面,使用坐标定位绘画。 立即下载
最近项目中要用到java swing 显示pdf,带放大缩小及打印功能,经过一天的网络搜索及api查看终于完成,下公布代码如下

CustomImgPanel.java用来加载pdf转换后的image


/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.merchantrunglobal.image.panel;


import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;


/**
 *
 * @author admin
 */
public class CustomImgPanel extends javax.swing.JPanel {


    private int width = 0;
    private int height = 0;
    Image image;


    /**
     *
     * @param _width 整型,窗口的宽度
     * @param _height 整型,窗口的高度
     * @param _imgPath 图片的URL,可用相对路径
     */
    public CustomImgPanel(int _width, int _height, Image _image) {
        width = _width;
        height = _height;
        image = _image;
        setSize(width, height);
        setVisible(true);
    }


    /**
     *
     * @param _width 浮点型,窗口的宽度
     * @param _height 浮点型,窗口的高度
     * @param _imgPath 字符串,图片的URL,可用相对
     */
    public CustomImgPanel(double _width, double _height, Image _image) {
        width = (int) _width;
        height = (int) _height;
        image = _image;
        setSize(width, height);
        setVisible(true);
    }


    @Override
    public void paintComponent(Graphics gs) {
        Graphics2D g = (Graphics2D) gs;
        super.paintComponent(g);
        g.drawImage(image, 0, 0, width, height, this);
    }


    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {


        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 400, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 300, Short.MAX_VALUE)
        );
    }// </editor-fold>                        
    // Variables declaration - do not modify                     
    // End of variables declaration                   
}








ShowJFrame.java主运行类,用来加载滚动条,放大缩小及打印。


/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.merchantrunglobal.image.panel;


import java.awt.Dimension;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.print.Doc;
import javax.print.DocFlavor;
import javax.print.DocPrintJob;
import javax.print.PrintException;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import javax.print.ServiceUI;
import javax.print.SimpleDoc;
import javax.print.attribute.DocAttributeSet;
import javax.print.attribute.HashDocAttributeSet;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
import javax.print.attribute.standard.MediaSizeName;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;


/**
 *
 * @author admin
 */
public class ShowJFrame extends javax.swing.JFrame {


    CustomImgPanel imgPanel;
    int level;
    String pdfFilePath = "pdf/tests.pdf";


    /**
     * Creates new form ShowJFrame
     */
    public ShowJFrame() {
        initComponents();
        level = 3;
        imgPanel = new CustomImgPanel(714, 1011, pdfToImg(pdfFilePath));
        imgPanel.setPreferredSize(new Dimension(714, 1011));
        mainScrollPanel.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
        mainScrollPanel.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
        mainScrollPanel.setViewportView(imgPanel);
        this.setLayout(null);
        this.setVisible(true);
        this.Enlarge.setVisible(true);
        this.narrow.setVisible(true);
    }


    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {


        narrow = new javax.swing.JButton();
        Enlarge = new javax.swing.JButton();
        mainScrollPanel = new javax.swing.JScrollPane();
        print = new javax.swing.JButton();


        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);


        narrow.setText("缩小");
        narrow.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                narrowActionPerformed(evt);
            }
        });


        Enlarge.setText("放大");
        Enlarge.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                EnlargeActionPerformed(evt);
            }
        });


        print.setText("打印");
        print.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                printActionPerformed(evt);
            }
        });


        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(59, 59, 59)
                .addComponent(narrow)
                .addGap(128, 128, 128)
                .addComponent(Enlarge)
                .addGap(103, 103, 103)
                .addComponent(print)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
            .addGroup(layout.createSequentialGroup()
                .addComponent(mainScrollPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 619, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(0, 0, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(mainScrollPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 475, Short.MAX_VALUE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(narrow)
                    .addComponent(Enlarge)
                    .addComponent(print))
                .addContainerGap())
        );


        pack();
    }// </editor-fold>                        


    private void narrowActionPerformed(java.awt.event.ActionEvent evt) {                                       
        mainScrollPanel.remove(imgPanel);
        if (level > 1) {
            level--;
            Map<String, Integer> map = getWidthHeight(level);
            imgPanel = new CustomImgPanel(map.get("width").intValue(), map.get("height").intValue(), pdfToImg(pdfFilePath));
            imgPanel.setPreferredSize(new Dimension(map.get("width").intValue(), map.get("height").intValue()));
            imgPanel.repaint();
            mainScrollPanel.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
            mainScrollPanel.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
            mainScrollPanel.setViewportView(imgPanel);
        } else {
            JOptionPane.showMessageDialog(this, "已经到最小了!");
        }


    }                                      


    private void EnlargeActionPerformed(java.awt.event.ActionEvent evt) {                                        
        mainScrollPanel.remove(imgPanel);
        if (level < 5) {
            level++;
            Map<String, Integer> map = getWidthHeight(level);
            imgPanel = new CustomImgPanel(map.get("width").intValue(), map.get("height").intValue(), pdfToImg(pdfFilePath));
            imgPanel.setPreferredSize(new Dimension(map.get("width").intValue(), map.get("height").intValue()));
            imgPanel.repaint();
            mainScrollPanel.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
            mainScrollPanel.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
            mainScrollPanel.setViewportView(imgPanel);
        } else {
            JOptionPane.showMessageDialog(this, "已经到最大了!");
        }
    }                                       


    private void printActionPerformed(java.awt.event.ActionEvent evt) {                                      
        PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();
        DocFlavor flavor = DocFlavor.INPUT_STREAM.PDF;
        PrintService printService[] = PrintServiceLookup.lookupPrintServices(
                flavor, pras);
        PrintService defaultService = PrintServiceLookup.lookupDefaultPrintService();
        PrintService service = ServiceUI.printDialog(null, 200, 200,
                printService, defaultService, flavor, pras);
        if (service != null) {
            FileInputStream fis = null;
            try {
                DocPrintJob job = service.createPrintJob();
                fis = new FileInputStream(pdfFilePath);
                pras.add(MediaSizeName.ISO_A4);
                DocAttributeSet das = new HashDocAttributeSet();
                Doc doc = new SimpleDoc(fis, flavor, das);
                job.print(doc, pras);
                Thread.sleep(10000);
            } catch (InterruptedException ex) {
                Logger.getLogger(ShowJFrame.class.getName()).log(Level.SEVERE, null, ex);
            } catch (PrintException ex) {
                Logger.getLogger(ShowJFrame.class.getName()).log(Level.SEVERE, null, ex);
            } catch (FileNotFoundException ex) {
                Logger.getLogger(ShowJFrame.class.getName()).log(Level.SEVERE, null, ex);
            } finally {
                try {
                    fis.close();
                } catch (IOException ex) {
                    Logger.getLogger(ShowJFrame.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }
    }                                     


    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(ShowJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(ShowJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(ShowJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(ShowJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>


        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                new ShowJFrame().setVisible(true);
            }
        });
    }


    public Map<String, Integer> getWidthHeight(int level) {
        Map<String, Integer> map = new HashMap<String, Integer>();
        if (level == 1) {
            map.put("width", new Integer("238"));
            map.put("height", new Integer("337"));
        } else if (level == 2) {
            map.put("width", new Integer("476"));
            map.put("height", new Integer("674"));
        } else if (level == 3) {
            map.put("width", new Integer("714"));
            map.put("height", new Integer("1011"));
        } else if (level == 4) {
            map.put("width", new Integer("952"));
            map.put("height", new Integer("1439"));
        } else if (level == 5) {
            map.put("width", new Integer("1190"));
            map.put("height", new Integer("1684"));
        }


        return map;
    }


    public static Image pdfToImg(String pdfFileName) {
        ImageIcon imageIcon = null;
        try {
            PDDocument doc = PDDocument.load(pdfFileName);
            int pageCount = doc.getNumberOfPages();
            System.out.println(pageCount);
            PDPage page = (PDPage) doc.getDocumentCatalog().getAllPages().get(0);
            BufferedImage bufferedImage = page.convertToImage();
            if (bufferedImage != null) {
                imageIcon = new ImageIcon(Toolkit.getDefaultToolkit().createImage(bufferedImage.getSource()));
            }
            doc.close();
            System.out.println("over");
        } catch (IOException ex) {
            Logger.getLogger(ShowJFrame.class.getName()).log(Level.SEVERE, null, ex);
        }
        return imageIcon.getImage();
    }
    // Variables declaration - do not modify                     
    private javax.swing.JButton Enlarge;
    private javax.swing.JScrollPane mainScrollPanel;
    private javax.swing.JButton narrow;
    private javax.swing.JButton print;
    // End of variables declaration                   


转自: http://blog.youkuaiyun.com/zml6308/article/details/7714791
PDFRenderer显示PDF文档 在JFrame中使用PDFRenderer显示PDF文件,并实现PDF文件的放大,缩小以及查找PDF文件某一页 立即下载

相关推荐

java swing实现pdf阅读器

用java swing 实现的pdf阅读器 很强大 喜欢。。。

java swing 显示pdf,在JavaFX中显示pdf

Developing a desktop application in JavaFX which requires to display a pdf. I read that there is no support for pdf viewing/displaying in JavaFX(current version), I read about JPedal too.Now, question...

weixin_33460449的博客 959

JPDF Viewer:您的 Java Swing PDF 查看器/阅读器跨平台-开源

一个简单的 PDF 查看器,只需点击几下,您就可以查看、打印和提取 pdf 文件的内容。 您可以将 pdf 的内容以 svg 格式或 txt 格式导出。 查看器还配备了一个方便的实用程序面板,具有搜索功能、缩略图和注释。 获取适用于Android的PDF阅读器-https://play.google.com/store/apps/details?id=com.ulm.pdfreader ==================== ============ 现在获取纯 Java 中的字处理器:https://sourceforge.net/projects/jwordprocessor/ ================== ============== 查看我的浏览器网络项目扩展:Chrome 扩展:http://bit.ly/2cELWLs | http://bit.ly/1PWKVdu 附加 Firefox:http://mzl.la/1Wn51hg 我的移动应用程序:http://bit.ly/1MrlgKk ============== ========== 访问此网站以获取 P

java swing预览pdf_Java预览及打印PDF的三种方法

package com.beiqisoft.cic.util;import java.io.File;import java.util.Iterator;import java.util.Map;public class googlepdf {public static void opengoogle(String jurl,String fileName) {if (java.awt.Deskt...

weixin_39636253的博客 1361

java swing 实现的word文档转换成pdf文档

java swing 实现的word文档转换成pdf文档,可直接运行.

纯Java的文档阅读器组件

XDOC(XDocViewer)可以在服务器端方便的生成pdf、png图片、flash、word等文档,XDocViewer是一个纯Java的文档阅读器组件,可以方便的集成到Java应用中(也可以集成到Web应用中)

Java:实现透明的打印预览对话框(附带源码)

Java:实现透明的打印预览对话框(附带源码)

欢迎来到我的博客!这里是一个专注于计算机技术的分享平台,涵盖编程开发、算法研究、系统架构、软件工程等多个领域。无论你是初学者还是资深开发者,都能在这里找到有价值的内容。 884

零基础玩转STM32CubeIDE LL库:5分钟搞定串口通信(附完整代码)

本文为零基础开发者提供了一份STM32CubeIDE LL库串口通信的快速实战指南。通过CubeMX配置、LL库核心API详解,以及中断接收与环形缓冲区的完整代码实现,帮助读者在5分钟内搭建稳定可靠的串口收发框架,解决从HAL切换到LL库的常见困惑,提升嵌入式开发效率。

weixin_29159441的博客 306

java:实现RTF文件查看器(附带源码)

java:实现RTF文件查看器(附带源码)

欢迎来到我的博客!这里是一个专注于计算机技术的分享平台,涵盖编程开发、算法研究、系统架构、软件工程等多个领域。无论你是初学者还是资深开发者,都能在这里找到有价值的内容。 1445

MobaXterm破解14个会话限制的保姆级教程(附Python环境配置指南)

本文提供了MobaXterm破解14个会话限制的详细教程,并深入讲解了如何配置稳定的Python环境以支持相关脚本运行。通过理解软件授权机制、安全实践步骤以及许可文件的应用,帮助用户解除会话数量限制,实现高效的远程服务器管理与自动化运维。

weixin_29211309的博客 1646

图像特征(一)——颜色特征(颜色直方图,颜色矩,颜色集,颜色聚合向量和颜色相关图)

本文主要是为了更好地理解图像特征,理解各方法的原理。转载请注明出处https://mp.youkuaiyun.com/console/editor/html/105090183 图像模式识别的一般步骤为:输入图像--图像预处理--特征提取--特征选择--图像分类--输出结果。 图像特征主要有:颜色特征、形状特征、纹理特征和空间关系特征。 本文主要介绍颜色特征,并给出matlab上实现的demo。 颜...

gloria_iris的博客 3万+

终极PDF裁剪指南:如何让电子书在小屏幕上完美显示?[特殊字符]

还在为PDF文档边缘的空白区域而烦恼吗?想让你的电子书在平板电脑或电子墨水屏上显示得更大更清晰吗?Briss-2.0就是你的解决方案!这款免费开源的PDF裁剪工具专为优化文档显示而设计,通过智能裁剪让你的阅读体验提升一个档次。 ## 为什么PDF文档在小屏幕上阅读这么痛苦? 想象一下这个场景:你下载了一本电子书,准备在通勤路上用平板电脑阅读,却发现文字小得几乎看不见。或者你想在电子墨水屏设备上

gitblog_00006的博客 901

别再手动调参了!用MATLAB+改进PSO算法,5步搞定机械臂轨迹优化(附完整代码)

本文介绍如何利用MATLAB和改进PSO算法快速优化机械臂轨迹规划,仅需5步即可完成传统耗时的手动调参过程。通过混沌初始化、自适应权重等创新方法,改进PSO算法显著提升优化效率,实现全局最优解搜索,适用于工业自动化中的机械臂控制。文章包含完整MATLAB代码实现,帮助工程师轻松应用于实际生产场景。

weixin_29232121的博客 354

Nomad 批处理作业与 System 作业:计算密集与 Agent 类任务调度完全指南

Nomad 是一个简单、灵活、高性能的工作负载编排器,可混合部署微服务、批处理、容器化与非容器化应用。本文带你快速掌握 Nomad 作业调度中的两大专项能力:用 **batch(批处理)作业**承载计算密集型任务,用 **system / sysbatch 作业**实现“每个节点跑一份”的 Agent 类任务部署,帮助新手一次性搞懂 Nomad 的四种作业类型怎么选、怎么调。 ## 先搞懂:No

gitblog_01057的博客 459

集成库仑计移动电源设计:从原理到实战,实现精准电量管理

在电池供电设备中,精准的电量计量是提升用户体验和产品可靠性的核心技术。传统基于电压估算的方法因受温度、负载和老化影响误差较大,而库仑计技术通过直接测量充放电电流并对时间积分,实现了电荷量的直接计量,从根本上提升了精度。这项技术的核心价值在于为设备提供了真实、可靠的电量状态数据,是智能电池管理系统的基础。其应用场景广泛,从消费电子如移动电源、智能穿戴,到工业与汽车领域如储能系统、新能源汽车的电池管理都不可或缺。本文以移动电源为例,深入解析了集成库仑计方案的硬件设计要点,特别是围绕高精度采样电阻与差分放大器的电

weixin_33453726的博客 551

SAP UI5 OData V4 操作结果访问:从 getObject 到返回值上下文与 $$inheritExpandSelect

SAP UI5 OData V4 操作结果获取指南 摘要:在 SAP UI5 OData V4 模型中,操作结果需通过绑定上下文获取而非直接从 invoke() 返回。本文详解核心要点: 数据获取路径 使用 invoke() 发起请求后,通过 getBoundContext().getObject() 获取结果 特定场景下 invoke() 可能返回返回值上下文(如草稿切换) 关键实践技巧 使用 $$inheritExpandSelect 继承字段选择,避免二次读取 对象页应用中,通过替换绑定上下文实现无缝

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 314

java swing预览pdf_基本SwingUI组件和图像显示.PDF

第3 章 Chapter3基本 Swing UI 组件与图像显示上一章介绍了BufferedImageOp 的一些重要知识,实现了几个常见的图像特效,本章介绍如何通过Swing UI 组件显示与刷新图像。首先会介绍JAVA Swing 的顶层组件JFrame ,然后介绍Swing 中最重要和使用频率最高的组件JPanel ,教会读者重写JComponent 中的paintComponent() 方...

weixin_36333534的博客 1015

【YOLO26实战全攻略】19——智慧交通(一):高速抛洒物与事故检测全流程落地

在智慧交通领域,高速公路抛洒物、交通事故等突发状况常导致二次事故与大规模拥堵,传统人工监控存在响应滞后、覆盖有限等痛点。本文基于Ultralytics YOLO26算法,结合ByteTrack多目标跟踪技术,构建从数据准备、模型训练到边缘部署的全栈式智慧交通检测系统。核心内容包括:多车型专属数据集构建、抛洒物检测模型优化、ByteTrack轨迹跟踪集成、异常事件(违停/逆行/碰撞)识别逻辑实现,以及NVIDIA Jetson边缘设备部署方案。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1491

JAVA的PDF Viewer:Big Faceless PDF Viewer Crack

PDF Viewer是一个可以显示PDF文档的Swing组件。针对不需要完整 API 的客户,Viewer 可以作为 Applet、应用程序或通过 Java Web Start 安装,或嵌入到 Swing 应用程序中。

控件与插件之大全 799

手把手教你玩转服务器芯片架构​专栏--​​3.5 实战案例:用SystemC搭建一个多核服务器芯片的NoC模型(含流量分配与延迟仿真)​

通过SystemC搭建多核NoC模型,可深入验证流量分配策略与延迟特性。实际工程中需结合FPGA原型验证(如Xilinx Alveo)进行时序收敛分析,并通过参数化设计适配不同服务器芯片需求。

MHD0815的博客 3046

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Java 调整PDF文件里面内容的缩放,打印机使用

其实就是通过裁剪PDF文件内容来实现缩放,这个方法网上找了半天没有好的结果,记录一下。这个一个 PDF插入PNG的方法(看注释行)如果有捐赠,我已经出一份力。

weixin_46845168的博客 1858

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Java缩放PDF内容_PDF-Renderer库中的缩放选项

package com.pdfrenderer.examples;import java.awt.Graphics2D;import java.awt.Image;import java.awt.Rectangle;import java.awt.image.BufferedImage;import java.io.File;import java.io.RandomAccessFile;impo...

weixin_35765731的博客 724

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

java swing预览pdf_java – 如何使用iText将Swing组件绘制为PDF文件?

我想通过iText将我的Swing JComponent打印到pdf.JComponent com = new JPanel();com.add( new JLabel("hello") );PdfWriter writer = PdfWriter.getInstance( document, new FileOutputStream( dFile ) );document.open( );Pdf...

weixin_42498643的博客 536

java swing 显示pdf_90天吃透阿里P8推荐的625页Java编程兵书pdf,直接入职阿里定级P6...

前言学开发也要讲究兵法,从开发环境及基本语法知识入手,逐渐学习编程的基本概念,面向对象基础,以及数据库应用程序的开发。阿里的理念:阿里巴巴团队总结出了团队精神、教学相长、质量、简易、激情、开放、创新、专注、服务与尊重九条价值观。从此以后,阿里巴巴非常重视价值观建设。随着时间的推移,阿里巴巴集团在不断变化中总结其价值的精华,最终形成了现在的六大核心理念:客户第一、团队合作、拥抱变化、诚信、激情、敬业...

weixin_39739395的博客 230

InnoDB 内存结构总览:Change Buffer、AHI 与 Log Buffer

本文系统梳理InnoDB内存结构中的ChangeBuffer、Adaptive Hash Index(AHI)与LogBuffer。ChangeBuffer缓存二级索引页不在内存时的变更,减少随机IO,仅在页加载时合并;聚簇索引修改立即执行,因数据本身不可延后。AHI基于高频等值查询自动构建哈希索引,加速定位,仅支持等值操作。LogBuffer为redo log内存缓冲,配合磁盘日志实现崩溃恢复。三者均服务于性能优化,其中ChangeBuffer与AHI共享BufferPool空间,而LogBuffer独立

bksczm的博客 289
上一篇: java大数据处理-大量数据到Excel
下一篇: MyEclipse频繁弹出Update Progress(Time of error:……)窗口
randomnet
博客等级 码龄19年 59粉丝 21原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值