Java pdf文件书签承前缩放验证的设置方法

 更新时间:2022年02月24日 12:01:13   作者:Aimyone  
很多朋友不知道是什么是书签承前缩放,简单说就是可以任意改变当前pdf文档缩放比例,点击书签后不影响其缩放比率,本文给大家介绍下Java pdf文件书签承前缩放验证的设置方法,感兴趣的朋友一起看看吧

1,什么是书签承前缩放?

在这里插入图片描述
换句话来说

设置了承前缩放,当你手动将page4缩放到145%,然后点击书签1,书签1定位到的page1的缩放比例也是145%

2,如何设置书签承前缩放?

使用工具:

在这里插入图片描述

承前缩放书签设置:

在这里插入图片描述

其他类型书签设置:

在这里插入图片描述

3,代码

3.1 书签结构:

在这里插入图片描述

3.2 代码

import com.aspose.pdf.*;
public class bookmark {
    public static void main(String[] args) {
        // Open document
        Document pdfDocument = new Document("D:\\chromeDownload\\测试版2.pdf");
        OutlineCollection outlines = pdfDocument.getOutlines();
        for (OutlineItemCollection outlineItem : (Iterable<OutlineItemCollection>) outlines) {
            double soureceZoom = -1;
            if (outlineItem.getDestination() != null) {
                soureceZoom = getAppointmentZoom(outlineItem.getDestination());
            } else if (outlineItem.getAction() != null) {
                soureceZoom = getAppointmentZoom(outlineItem.getAction());
            }
            if(soureceZoom == -1){
                System.out.println("书签必须承前缩放,书签名:" + outlineItem.getTitle() + ",缩放因子: " + soureceZoom);
//            System.out.println("Title : " + outlineItem.getTitle() + ",缩放因子: " + soureceZoom);
            if (outlineItem.size()>0){
                checkBookmark(outlineItem);
        }
    }
    private static void checkBookmark(OutlineItemCollection Outlines) {
    private static double getAppointmentZoom(IAppointment appointment) {
        if (appointment instanceof XYZExplicitDestination) {
            XYZExplicitDestination destination = (XYZExplicitDestination) appointment;
            return destination.getZoom();
        } else if (appointment instanceof GoToAction) {
            GoToAction goToAction = (GoToAction) appointment;
            if (goToAction.getDestination() instanceof XYZExplicitDestination) {
                XYZExplicitDestination destination = (XYZExplicitDestination) goToAction.getDestination();
                return destination.getZoom();
        } else if (appointment instanceof GoToRemoteAction) {
            GoToRemoteAction goToRemoteAction = (GoToRemoteAction) appointment;
            if (goToRemoteAction.getDestination() instanceof XYZExplicitDestination) {
                XYZExplicitDestination destination = (XYZExplicitDestination) goToRemoteAction.getDestination();
        return -1;
}

3.3 控制台输出:

在这里插入图片描述

注意:承前缩放的因子为 0;

4,书签的xml文件导出

4.1 代码

import com.aspose.pdf.Document;
import com.aspose.pdf.facades.PdfBookmarkEditor;
import java.io.FileNotFoundException;
public class AsposeTest {
    public static void main(String[] args) throws FileNotFoundException {
        Document document6 = new Document("D:\\测试版2.pdf");
        exportBookmarksToXML(document6);
    }
    public static void exportBookmarksToXML(Document document) throws FileNotFoundException {
        PdfBookmarkEditor pdfBookmarkEditor = new PdfBookmarkEditor();
        pdfBookmarkEditor.bindPdf(document);
        pdfBookmarkEditor.exportBookmarksToXML("D:\\测试版2.xml");
        pdfBookmarkEditor.getDocument().save();
}

4.2 导出文件:

<?xml version="1.0" encoding="iso_8859_1"?>
<Bookmark>
  <Title Open="True">&#30446;&#24405;缩放到页面级别
	  <Title Page="2 XYZ 71 769 0" Action="GoTo" Open="True">3.2.S.7 &#31283;&#23450;&#24615;承前缩放
		  <Title>3.2.S.7.1 &#31283;&#23450;&#24615;&#24635;&#32467;</Title>实际大小
		  <Title Page="5 FitBH 842" Action="GoTo">3.2.S.7.2 &#19978;&#24066;&#21518;&#31283;&#23450;&#24615;&#26041;&#26696;&#21644;&#31283;&#23450;&#24615;&#25215;&#35834;</Title>适合可见
		  <Title Page="8 XYZ 71 523 0" Action="GoTo">3.2.S.7.3 &#31283;&#23450;&#24615;&#25968;&#25454;</Title>承前缩放
	  </Title>
  </Title>
  
  <Title Page="1 XYZ 0 842 0" Action="GoTo" Open="False">&#34920;&#30446;&#24405;</Title>承前缩放
  <Title Page="1 XYZ 0 842 0" Action="GoTo" Open="False">&#22270;&#30446;&#24405;</Title>承前缩放
</Bookmark>

aspose.pdf 官网指路 : https://docs.aspose.com/pdf/java/get-update-and-expand-bookmark/

到此这篇关于Java pdf文件书签承前缩放验证的文章就介绍到这了,更多相关Java 书签承前缩放验证内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Zookeeper连接超时问题与拒绝连接的解决方案

    Zookeeper连接超时问题与拒绝连接的解决方案

    今天小编就为大家分享一篇关于Zookeeper连接超时问题与拒绝连接的解决方案,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • java实现一致性hash算法实例代码

    java实现一致性hash算法实例代码

    这篇文章主要给大家介绍了关于java实现一致性hash算法的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • 使用Java实现接口拦截器来监控接口的执行情况

    使用Java实现接口拦截器来监控接口的执行情况

    在排查问题的时候,由于没有对接口的执行情况,以及入参进行监控,所以排查起问题就特别费劲,今天我们就一起来写一个接口的拦截器来监控接口的执行情况吧
    2024-01-01
  • Mybatis-Plus实体类注解方法与mapper层和service层的CRUD方法

    Mybatis-Plus实体类注解方法与mapper层和service层的CRUD方法

    CRUD是指在做计算处理时的增加(Create)、读取查询(Retrieve)、更新(Update)和删除(Delete)几个单词的首字母简写。主要被用在描述软件系统中DataBase或者持久层的基本操作功能,下面让我们一起看看吧
    2022-03-03
  • java实现批量生成二维码

    java实现批量生成二维码

    这篇文章主要为大家详细介绍了java实现批量生成二维码的相关代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-05-05
  • springboot集成mybatisplus实例详解

    springboot集成mybatisplus实例详解

    这篇文章主要介绍了springboot集成mybatisplus实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • Java Hibernate对象(瞬时态,持久态,脱管态)详解

    Java Hibernate对象(瞬时态,持久态,脱管态)详解

    这篇文章主要介绍了Java Hibernate对象(瞬时态,持久态,脱管态)详解的相关资料,这里对Java Hibernate对象进行了介绍及总结,需要的朋友可以参考下
    2016-11-11
  • Java 如何从spring容器中获取注入的bean对象

    Java 如何从spring容器中获取注入的bean对象

    这篇文章主要介绍了Java 如何从spring容器中获取注入的bean对象,帮助大家更好的理解和使用Java,感兴趣的朋友可以了解下
    2020-11-11
  • springboot之如何获取项目目录路径

    springboot之如何获取项目目录路径

    这篇文章主要介绍了springboot之如何获取项目目录路径问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • Arthas-java程序运行时debug工具使用

    Arthas-java程序运行时debug工具使用

    这篇文章主要介绍了Arthas-java程序运行时debug工具使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11

最新评论