将Notes应用中的PDF附件转为图片

这篇具有很好参考价值的文章主要介绍了将Notes应用中的PDF附件转为图片。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

大家好,才是真的好。

好久没有写专门开发方面的知识,主要是因为看的人太少。嗯,当然,这是表面上的,实际上更重要的原因是,写得很麻烦,而且看的人少。

开发要调试,代码要反复测试,最后还要共享给大家,就说难不难?不过,好处是,用功之后,可以多炫几碗饭。

今天我们介绍的是将Notes应用中的PDF附件转为图片文件。

有很多这样的需求,例如现在外面消费,开的发票都是PDF格式,拿回到公司报销,有可能需要转换为图片,并插入Word里面打印出来;例如别人发个PDF文件过来,让你放在网站上显示;例如别人没有PDF查看器,又要看你发的PDF内容……

不多说了,让我们开始正文吧。

该功能是采用两个代理实现,一个是LotusScript代理,主要将选中的Notes文件里面的PDF文件提取出来;另一个是Java代理,将提取的PDF导出为图片。

你也可以选择别的方式,例如将Java写成脚本库,然后通过LS2J方式调用,但考虑到大多数读者开发知识,采用了两个代理。

首先来一段导出附件PDF的LotusScript,这个网上到处都有,可以随便搜索找到,最简单的样例如下图:

Dim doc As NotesDocument
Dim rtitem As Variant
Dim fileCount As Integer
Const MAX = 100000
fileCount = 0    
Set rtitem = doc.GetFirstItem( "Body" )
If ( rtitem.Type = RICHTEXT ) Then
  Forall o In rtitem.EmbeddedObjects
    If ( o.Type = EMBED_ATTACHMENT ) _
    And ( o.FileSize > MAX ) Then
      fileCount = fileCount + 1
      Call o.ExtractFile ( "c:\reports\newfile" & Cstr(fileCount) )
    End If
  End Forall
End If

有了这个基础,后面的就容易点。

PDF转图片要使用Java的pdfbox类库包,这是专门为Java开发人员操作PDF文档而准备的纯Java类库,下载地址是https://pdfbox.apache.org/download.html,如下图:
将Notes应用中的PDF附件转为图片,pdf,Notes,LotusScript代理,Java
最新版本为3.0,不过这个版本示例不多,资料也少,一般用2.0版本。

顺便说一下,虽然Java的开源类库包很多,功能也很强,但也有不少坑。

我先用的1.8.x版,可坑人了。好消息是,也坑过别人,就是会报字体引入错误,如下:
将Notes应用中的PDF附件转为图片,pdf,Notes,LotusScript代理,Java
特别搞笑的是,这场技术的讨论,演变成了Notes/Domino产品是否还有人用的讨论。

还是提问的哥们实诚。说自己已经入行Notes/Domino产品19年了(如果算到2023年,也就是今年,应该是23年了),他说从他工作第一年开始,就有人跟他说这个不行了,但他一直还在上面工作,估计还要工作20年才能等待退休。

好了,言归正传,开始我们的Java代理之旅,在你的Notes库中,新建一个Java代理程序,叫什么名字不重要,重要的是代码要选择Java,如下图:
将Notes应用中的PDF附件转为图片,pdf,Notes,LotusScript代理,Java
然后导入pdfbox包,是三个,如下图:
将Notes应用中的PDF附件转为图片,pdf,Notes,LotusScript代理,Java
将Notes应用中的PDF附件转为图片,pdf,Notes,LotusScript代理,Java
然后是时候编写一点点Java代码了,代码我都分享给大家:

import lotus.domino.*;

import java.awt.image.BufferedImage;

import java.io.File;

import javax.imageio.ImageIO;

import org.apache.pdfbox.pdmodel.PDDocument;

import org.apache.pdfbox.rendering.PDFRenderer;


public class JavaAgent extends AgentBase {



    public void NotesMain() {



      try {

          Session session = getSession();

          AgentContext agentContext = session.getAgentContext();      

          

          String pdffilename=session.getEnvironmentString("AgentPDFFileName");

          String destinationDir = "D:\\pngdatatest\\";



          File sourceFile = new File(pdffilename);

			File destinationFile = new File(destinationDir);



			if (!destinationFile.exists()) {

				destinationFile.mkdir();

				System.out.println("Folder Created -> " + destinationFile.getAbsolutePath());

			}



			if (sourceFile.exists()) {

				PDDocument document = PDDocument.load(sourceFile);

				PDFRenderer pdfRenderer = new PDFRenderer(document);

				String fileName = sourceFile.getName().replace(".pdf", "");



				for (int pageNumber = 0; pageNumber < document.getNumberOfPages(); ++pageNumber) {

					BufferedImage bim = pdfRenderer.renderImageWithDPI(pageNumber, 300);

					String destDir = destinationDir + fileName + "_" + pageNumber + ".png";

					ImageIO.write(bim, "png", new File(destDir));

				}



				document.close();

				System.out.println("Image saved at -> " + destinationFile.getAbsolutePath());

			} else {

				System.err.println(sourceFile.getName() + " File does not exist");



			 } 

      } catch(Exception e) {

          e.printStackTrace();

       }

   }

}

上述代码有点糙,但是能用,希望你也优化一下。毕竟写开发功能相关内容,还是很辛苦的。里面的代码session.SETENVIRONMENTVAR(“AgentPDFFileName”, “c:\reports\newfile” & CStr(fileCount))一行,就是将PDF附件的名字,写入到notes.ini,供Java代理读取。你也可以采用别的方式,例如简要表文档、命名文档(v12版本中支持)等。

最后你也可以看看效果,打开一个Notes文档,点击操作菜单,选择Lotusscript代理运行,如下图:
将Notes应用中的PDF附件转为图片,pdf,Notes,LotusScript代理,Java
附件一个或多个都可以,要是可以请自己尝试一下吧。

今天的分享就写到这里吧。更多文章可关注微信公号:协作者文章来源地址https://www.toymoban.com/news/detail-550635.html

到了这里,关于将Notes应用中的PDF附件转为图片的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用Python将PDF转为图片

    将PDF转为图片能方便我们将文档内容上传至社交媒体平台进行分享。此外,转换为图片后,还可以对图像进行进一步的裁剪、调整大小或添加标记等操作。  用Python将PDF文件转JPG/ PNG图片 可能是大家在一些项目中会遇到的需求,下面将详细介绍如何使用第三方库Spire.PDF for P

    2024年02月08日
    浏览(70)
  • 如何使用Python将PDF转为图片

    将PDF转为图片能方便我们将文档内容上传至社交媒体平台进行分享。此外,转换为图片后,还可以对图像进行进一步的裁剪、调整大小或添加标记等操作。 用Python将PDF文件转JPG/ PNG图片 可能是大家在一些项目中会遇到的需求,下面将详细介绍如何使用第三方库 Spire.PDF for Py

    2024年02月08日
    浏览(78)
  • 为什么使用fitz读取pdf转为图片模糊

    出现这样的原因有可能是因为,在进行页面读取的时候未指定读取的dpi是多少,使得默认读取去96dpi 所以在进行读取时使用 遇到苦难找文档哦 牢记 : color{red}{牢记:} 牢记 : help()和查看官方文档呀 相关的其他参数还有: matrix:指定应用于页面的转换矩阵(fitz.Matrix 对象)。默

    2024年02月12日
    浏览(71)
  • 在iPhone设置一个快捷指令,一键将PDF转为图片

      经常有人告诉我们在Safari可以截长图,但是没明说是PDF的。原本满心欢喜,又被泼冷水。然而,在跟自己iPhone朝夕相处的时光里,我猛然发现,在iPhone设置一个快捷指令就能将PDF转为图片格式,完全不用下载其他软件,真的开心到飞起来! 具体操作:点击PDF文件,打开之后

    2024年02月13日
    浏览(89)
  • vue3 el-upload 上传附件及预览 限制只能上传一个图片或者pdf格式的文件

    效果如图 直接看代码吧 template部分 css部分 js部分

    2024年02月11日
    浏览(80)
  • element ui vue 附件预览组件、可预览图片、excel 、pdf.word等文件(浏览器打开文件的方式)

    目录 1.组件源码  2.html 代码 3.组件源码  此组件就是一个单纯的预览图片、浏览器打开文件的形式简单的组合了下而成的,word、excel是直接下载、pdf浏览器打开的形式,如果想本地打开直接预览的话就直接不用看了。word、excel、pdf 的图片是我放到服务器上的图片地址。 1.组

    2024年02月11日
    浏览(69)
  • python提取图片型pdf中的文字(提取pdf扫描件文字)

    前言 文字型pdf提取,python的库一大堆,但是图片型pdf和pdf扫描件提取,还是有些难度的,我们需要用到OCR(光学字符识别)功能。 一、准备 1、安装OCR(光学字符识别)支持库 首先要安装 pytesseract 和 Tesserac OCR ,Tesseract OCR是一种广泛使用的OCR工具,它可以用于从图像中提取

    2024年03月23日
    浏览(69)
  • java通过minio下载pdf附件

    2024年04月25日
    浏览(61)
  • 通过Python的fitz库提取pdf中的图片

    大家好,我是空空star,本篇给大家分享一下 《通过Python的fitz库提取pdf中的图片》 。 Fitz库是一个Python图像处理库,主要用于打开、编辑和保存PDF、TIFF和JPEG格式的图像。它可以帮助用户读取和写入PDF文件,提取PDF页面以及在页面上进行标记和注释。此外,Fitz库还提供了一些

    2024年02月07日
    浏览(48)
  • 零代码编程:用ChatGPT批量识别图片PDF中的文字

    有些PDF页面是图片格式,要怎么批量把图片中的文字识别出来?借助ChatGPT可以轻松完成这个任务。 首先要安装一些相关的软件和Python库。 安装tesseract-ocr(OCR)软件,最新版的是tesseract-ocr-w64-setup-v5.3.0.20221214.exe ,下载地址是https://digi.bib.uni-mannheim.de/tesseract/tesseract-ocr-w64-se

    2024年02月15日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包