国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

PDF轉圖片pdf轉換圖片,線程池

這篇具有很好參考價值的文章主要介紹了PDF轉圖片pdf轉換圖片,線程池。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

package com.xhsoft.thread;

import com.xhsoft.common.props.TeOssProperties;
import com.xhsoft.common.utils.MergeImageUtil;
import com.xhsoft.flange.entity.DrawingInfo;
import com.xhsoft.flange.service.IDrawingInfoService;
import com.xhsoft.modules.resource.builder.oss.OssBuilder;
import lombok.extern.slf4j.Slf4j;
import org.apache.pdfbox.Loader;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.PDFRenderer;
import org.springblade.core.oss.model.BladeFile;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

@Slf4j
public class ConvertDrawingToPicture implements Runnable {

	private DrawingInfo drawing;
	private IDrawingInfoService drawingInfoService;
	private File file;
	private OssBuilder ossBuilder;
	private TeOssProperties teOssProperties;

	public ConvertDrawingToPicture(DrawingInfo drawing, File file, IDrawingInfoService drawingInfoService, OssBuilder ossBuilder, TeOssProperties teOssProperties){
		this.drawing = drawing;
		this.drawingInfoService = drawingInfoService;
		this.file = file;
		this.ossBuilder = ossBuilder;
		this.teOssProperties = teOssProperties;
	}

	@Override
	public void run() {
		String fileName = file.getName();
		String name = fileName.substring(0, fileName.lastIndexOf("."));
		log.info("{}-正在生成圖片", fileName);

		FileInputStream fis = null;
		try {
			PDDocument doc = Loader.loadPDF(file);
			PDFRenderer renderer = new PDFRenderer(doc);
			int pageCount = doc.getNumberOfPages();

			List<BufferedImage> images = new ArrayList<>();
			for(int i=0;i<pageCount;i++){
				BufferedImage image = renderer.renderImageWithDPI(i, 296);
//				BufferedImage image = renderer.renderImage(i, 2.5f);
//				ImageIO.write(image, "PNG", new File(name+"-"+i+".png"));
				images.add(image);
			}

			log.info("{}-正在整合圖片", fileName);
			File dir = file.getParentFile();
			File pic = new File(dir, name+".png");
			MergeImageUtil.mergeImage(images, pic);

			log.info("{}-正在上傳圖片", fileName);
			fis = new FileInputStream(pic);
			BladeFile bladeFile = ossBuilder.template(teOssProperties.getPic()).putFile(pic.getName(), fis);

			log.info("{}-正在保存圖片地址", fileName);
			String picUrl = bladeFile.getLink();
			drawing.setPic(picUrl);
			drawingInfoService.updateById(drawing);
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
			if(fis != null) try{ fis.close(); }catch(Exception e){};
		}

	}

	public static void main(String[] args){
//		try {
//			PDDocument doc = Loader.loadPDF(new File("files/drawing/HTP-ER-46-01-02-LO-01_ISO DRGS.pdf"));
//			PDFRenderer renderer = new PDFRenderer(doc);
//			int pageCount = doc.getNumberOfPages();
//			for(int i=0;i<pageCount;i++){
//				BufferedImage image = renderer.renderImageWithDPI(i, 296);
				BufferedImage image = renderer.renderImage(i, 2.5f);
//				ImageIO.write(image, "PNG", new File("files/pricture/"+i+".png"));
//			}
//		} catch (IOException e) {
//			e.printStackTrace();
//		}
	}

}

然后用的時候:文章來源地址http://www.zghlxwxcb.cn/news/detail-511605.html

	/**
	 *  替換圖紙文件
	 */
	@PostMapping("/replace")
	@ApiOperationSupport(order = 13)
	@ApiOperation(value = "替換圖紙", notes = "圖紙文件")
	public R replaceFile(MultipartFile file, Long id) {
		String fileName = file.getOriginalFilename();

		DrawingInfo drawing = drawingInfoService.getById(id);
		if(drawing == null){
			log.error("圖紙數(shù)據(jù)不存在,id={}", id);
			return R.fail(StatusEnum.DRAWING_FILE_NOT_EXIST.getCode());
		}

		Long projectId = drawing.getProjectId();
		//驗證是否已存在該圖紙
		DrawingInfoTO condition = new DrawingInfoTO();
		condition.setProjectId(projectId);
		condition.setName(fileName);
		condition.setIsDeleted(0);
		List<DrawingInfo> drawings = drawingInfoService.list(Condition.getQueryWrapper(condition));
		if (drawings.size() > 0) {
			log.error(fileName + "圖紙已存在");
			return R.fail(fileName + StatusEnum.DRAWING_EXIST.getCode());
		}

		String fileUrl = null;
		String date = CommonUtil.SDF_DATE.format(new Date());
		Path dest = Paths.get(pathProperties.getDrawing(),  date, fileName);
		//保存文件在本地
		try {
			if(!dest.toFile().exists()){
				Files.createDirectories(dest);
			}
			Files.copy(file.getInputStream(), dest, StandardCopyOption.REPLACE_EXISTING);
		} catch (IOException e) {
			log.error("上傳文件異常,"+e.getMessage());
			return R.fail(fileName + ":"+StatusEnum.SAVE_FILE_EXCEPTION.getCode());
		}
		File pdfFile = dest.toFile();
		FileInputStream fis = null;
		try{
			fis = new FileInputStream(pdfFile);
		}catch(Exception e){
			e.printStackTrace();
		}

		try{
			BladeFile bladeFile = ossBuilder.template(teOssProperties.getPdf()).putFile(fileName, fis);
			fileUrl = bladeFile.getLink();
		}catch(Exception e){
			log.error("上傳圖紙文件異常,異常信息:{}", e.getMessage());
			e.printStackTrace();
			return R.fail(StatusEnum.UPLOAD_DRAWING_FILE_EXCEPTION.getCode());
		}
		DrawingInfoTO di = new DrawingInfoTO();
		di.setId(drawing.getId());
//		di.setCode(fileName);
//		di.setName(fileName);
		di.setUrl(fileUrl);
		di.setPdfFile(pdfFile);
		drawingInfoService.updateById(di);

		String url = drawing.getUrl();
		if(StringUtil.isNotBlank(url)){
			String pdfName = url.substring(url.lastIndexOf('/')+1);
			ossBuilder.template(teOssProperties.getPdf()).removeFile(pdfName);
		}

		String pic = drawing.getPic();
		if(StringUtil.isNotBlank(pic)){
			String picNme = pic.substring(pic.lastIndexOf('/')+1);
			ossBuilder.template(teOssProperties.getPic()).removeFile(picNme);
		}

		ExecutorService fixedPool = Executors.newFixedThreadPool(1);
		ConvertDrawingToPicture convert = new ConvertDrawingToPicture(
			di,
			di.getPdfFile(),
			drawingInfoService,
			ossBuilder,
			teOssProperties
		);
		fixedPool.execute(convert);
		fixedPool.shutdown();

		logTool.insert(drawing.getProjectId(), SysEnum.FLANGE, ModuleEnum.DRAWING,
			"替換: 圖紙id="+id+",新圖紙文件="+fileName );

		return R.success(StatusEnum.REPLACE_DRAWING_FILE_SUCCESS.getCode());
	}




}

到了這里,關于PDF轉圖片pdf轉換圖片,線程池的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 怎么把pdf轉換成高清圖片?

    怎么把pdf轉換成高清圖片?

    ? ??怎么把pdf轉換成高清圖片?最近,我的同事遇到了一個問題,現(xiàn)在她需要將一些pdf文件轉換成高清的圖片,這件事情讓讓她感到非常無助,因為她非常著急需要將這些文件轉換為圖片格式,以便更好的在今后的工作中進行使用。她曾經(jīng)嘗試了很多工具和方法,也找看其它

    2024年02月10日
    瀏覽(21)
  • 怎么把pdf圖片轉換成jpg?pdf轉jpg的方法分享

    怎么把pdf圖片轉換成jpg?pdf轉jpg的方法分享

    pdf文件在我們的日常工作中非常的常見,因為這種文件安全性高,不會輕易的亂碼,所以受到了我們的歡迎,但是它不容易被編輯,而且占用內(nèi)存會比較大,所以我們需要將pdf文件進行轉換,接下來小編會為大家解答怎么把pdf圖片轉換成jpg的問題,一起來看看吧。 怎么把pd

    2024年02月11日
    瀏覽(25)
  • c#,將pdf文件轉換成圖片文件

    本文采用Adobe Acrobat9.0的COM組件,將Pdf文件的每一頁轉換成對應的圖片文件。 開發(fā)環(huán)境:VS2010,.Net Framework4.0,Adobe Acrobat9.0。 工程中添加COM引用:Adobe Acrobat 9.0 Type Library(必須裝了Adobe Acrobat9.0才會有)。 思路: 1)CAcroPDDoc:Acrobat文檔對象。 2)CAcroPDPage:頁對象。 3)CAcroR

    2024年02月04日
    瀏覽(24)
  • 【工具分享】批量多目錄圖片如何轉換PDF,一次性轉換多級目錄批量的PDF的轉換,合并,輸出另存等問題

    【工具分享】批量多目錄圖片如何轉換PDF,一次性轉換多級目錄批量的PDF的轉換,合并,輸出另存等問題

    ?在工作中我們經(jīng)常要對圖片進行批量轉換PDF,由于文件量比較多,目錄比較深,工作量比較大比較耗時費力,今天我們分享的主要解決以下問題: 1、單張圖片的轉換PDF:一張圖臨時轉一下 2、多張圖片轉換成PDF:多張圖單獨轉成PDF 3、多級目錄多張圖轉換成PDF:多級目錄多

    2024年02月10日
    瀏覽(93)
  • 圖片轉換成pdf格式?這幾種轉換格式方法了解一下

    圖片轉換成pdf格式?這幾種轉換格式方法了解一下

    圖片轉換成pdf格式?將圖片轉換成PDF格式的好處有很多。首先,PDF格式具有通用性,可以在幾乎任何設備上查看。其次,PDF格式可以更好地保護文件,防止被篡改或者復制。此外,PDF格式還可以更好地壓縮文件大小,使其更易于共享和傳輸。因此,將圖片轉換成PDF格式是一個

    2024年02月12日
    瀏覽(20)
  • Python PDF轉換為圖片的解決方案

    ??大家好,我是愛編程的喵喵。雙985碩士畢業(yè),現(xiàn)擔任全棧工程師一職,熱衷于將數(shù)據(jù)思維應用到工作與生活中。從事機器學習以及相關的前后端開發(fā)工作。曾在阿里云、科大訊飛、CCF等比賽獲得多次Top名次。現(xiàn)為CSDN博客專家、人工智能領域優(yōu)質(zhì)創(chuàng)作者。喜歡通過博客創(chuàng)作

    2024年02月03日
    瀏覽(20)
  • pdf怎么轉換成jpg圖片?這幾個轉換方法了解一下

    pdf怎么轉換成jpg圖片?這幾個轉換方法了解一下

    pdf怎么轉換成jpg圖片?轉換PDF文件為JPG圖片格式在現(xiàn)代工作中是非常常見的需求,比如將PDF文件中的圖表、表格或者圖片轉換為JPG格式后使用在PPT演示、網(wǎng)頁設計等場景中。 ? 【 迅捷PDF轉換器 】 是一款非常實用的工具,可以將PDF文件轉換成多種不同的文件格式,包括JPG圖片

    2024年02月13日
    瀏覽(24)
  • python小腳本——批量將PDF文件轉換成圖片

    語言:python 3 用法:選擇PDF文件所在的目錄,點擊 確定 后,自動將 該目錄下的所有PDF 轉換成單個圖片,圖片名稱為: ? pdf文件名.page_序號.jpg 如運行中報錯,需要自行根據(jù)報錯內(nèi)容按照缺失的庫 例如: 這里提供兩種源碼,第一種是在代碼中手動添加pdf所在目錄 第二種是點

    2024年02月11日
    瀏覽(27)
  • 腳本:PDF文件批量轉換成圖片(python3)

    語言:python 3 用法:選擇PDF文件所在的目錄,點擊 確定 后,自動將該目錄下的所有PDF轉換成單個圖片,圖片名稱為: pdf文件名.page_序號.jpg 如運行中報錯,需要 自行根據(jù)報錯內(nèi)容安裝缺失的庫 例如: 提供兩種源碼 第一種是在代碼中手動添加pdf所在目錄 第二種是點擊運行后

    2024年02月11日
    瀏覽(34)
  • PDF-Word-圖片等的互相轉換

    輕閃PDF客戶端 - 功能強大的一站式PDF工具 | PDF編輯、轉換、閱讀 上面頁面支持PDF轉換成各類別:鼠標停留在PDF工具,點擊轉換類型即可在線轉換 求職崗位的刪除:PDF轉word,將手機號碼依次向前面刪除替換掉求職崗位,手機號碼后面就可以正確添加空格,到對應位置將聯(lián)系地

    2024年02月07日
    瀏覽(17)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包