当前位置: 首页 > news >正文

武义公司网站建设网站建设自查报告

武义公司网站建设,网站建设自查报告,海曙区住房和建设局网站,常宁市城乡和住房建设网站PDF修改尺寸 需要注意:第一个方法返回的是转换后PDF的base64。第二个方法返回的是文件流,这个方法才是转的核心。 /*** 修改PDF尺寸** param pdfUrl PDF链接* param pdfWidthInMillimeters 指定宽 mm* param pdfHeightInMillimeters 指…

PDF修改尺寸

需要注意:第一个方法返回的是转换后PDF的base64。第二个方法返回的是文件流,这个方法才是转的核心。

 /*** 修改PDF尺寸** @param pdfUrl                 PDF链接* @param pdfWidthInMillimeters  指定宽 mm* @param pdfHeightInMillimeters 指定高 mm* @return PDF转换尺寸后的base64*/public static String updatePdfSize(String pdfUrl, float pdfWidthInMillimeters, float pdfHeightInMillimeters) {try {URL url = new URL(pdfUrl);HttpURLConnection conn = (HttpURLConnection) url.openConnection();conn.setRequestMethod("GET");conn.setConnectTimeout(5000);InputStream is = conn.getInputStream();ByteArrayOutputStream out = updatePdfSize(is, pdfWidthInMillimeters, pdfHeightInMillimeters);BASE64Encoder encoder = new BASE64Encoder();String pdfBase64 = encoder.encode(out.toByteArray());is.close();return pdfBase64;} catch (IOException e) {log.error("updatePdfSize error:{}", e.getMessage(), e);}return "";}/*** 转换PDF尺寸** @param inputStream            PDF源文件流* @param pdfWidthInMillimeters  指定宽 mm* @param pdfHeightInMillimeters 指定高 mm* @return 转换后的PDF的文件流*/public static ByteArrayOutputStream updatePdfSize(InputStream inputStream, float pdfWidthInMillimeters, float pdfHeightInMillimeters) {try {// 毫米转换为磅(1毫米≈2.83465磅)float pdfWidthInPoints = pdfWidthInMillimeters * 2.83465f;float pdfHeightInPoints = pdfHeightInMillimeters * 2.83465f;//  容器初始化ByteArrayOutputStream out = new ByteArrayOutputStream();Document doc = new Document();PdfWriter writer = PdfWriter.getInstance(doc, out);doc.open();PdfReader pdfReader = new PdfReader(inputStream);PdfContentByte cb = writer.getDirectContent();// 循环修改尺寸int total = pdfReader.getNumberOfPages();for (int i = 1; i <= total; i++) {PdfImportedPage page = writer.getImportedPage(pdfReader, i);Rectangle rectangle = pdfReader.getPageSize(i);float originalWidth = rectangle.getWidth();float originalHeight = rectangle.getHeight();// 计算缩放比例float scaleWidth = pdfWidthInPoints / originalWidth;float scaleHeight = pdfHeightInPoints / originalHeight;float scale = Math.min(scaleWidth, scaleHeight);doc.setPageSize(new RectangleReadOnly(originalWidth * scale, originalHeight * scale));doc.newPage();cb.addTemplate(page, scale, 0, 0, scale, 0, 0);}doc.close();writer.close();return out;} catch (Exception e) {log.error("updatePdfSize error:{}", e.getMessage(), e);return null;}}

图片转成指大小PDF

返回的是base64。需要返回流的,可能简单改写下

/*** 图片转成指定大小的PDF的base64** @param pngImagePath           图片地址* @param pdfWidthInMillimeters  指定的PDF宽(mm)* @param pdfHeightInMillimeters 指定的PDF高(mm)* @return PDF的Base64*/public static String convertPngToPdfBase64(String pngImagePath, float pdfWidthInMillimeters, float pdfHeightInMillimeters) {try {// 毫米转换为磅(1毫米≈2.83465磅)float pdfWidthInPoints = pdfWidthInMillimeters * 2.83465f;float pdfHeightInPoints = pdfHeightInMillimeters * 2.83465f;// 读取PNG图像的原始宽度和高度(单位:点)Image pngImage = Image.getInstance(pngImagePath);float originalWidth = pngImage.getWidth();float originalHeight = pngImage.getHeight();// 计算图像在PDF中的缩放比例float scaleWidth = pdfWidthInPoints / originalWidth;float scaleHeight = pdfHeightInPoints / originalHeight;float scale = Math.min(scaleWidth, scaleHeight);// 计算图像在PDF中的位置居中显示float xPosition = (pdfWidthInPoints - originalWidth * scale) / 2;float yPosition = (pdfHeightInPoints - originalHeight * scale) / 2;// 创建Document对象,并设置PDF文档的大小为所需尺寸Document document = new Document(new Rectangle(pdfWidthInPoints, pdfHeightInPoints));// 创建PdfWriter对象,将输出流与Document对象关联ByteArrayOutputStream os = new ByteArrayOutputStream();PdfWriter.getInstance(document, os);// 打开Documentdocument.open();// 设置PNG图像在PDF中的缩放比例和位置pngImage.scaleAbsolute(originalWidth * scale, originalHeight * scale);pngImage.setAbsolutePosition(xPosition, yPosition);// 将PNG图像添加到PDF中document.add(pngImage);// 关闭Documentdocument.close();// 返回PDF的base64return new BASE64Encoder().encode(os.toByteArray()).trim().replaceAll("\\r", "").replaceAll("\\n", "");} catch (DocumentException | IOException e) {log.error("image 转 pdf 流失败 {}", e.getMessage(), e);return "";}}
http://www.yayakq.cn/news/489271/

相关文章:

  • 奉贤专业网站建设购物网站 英文介绍
  • 网站后缀ga关键词排名优化怎么做
  • wordpress 主题 博客 广告位官网seo优化找哪家做
  • 免费php网站模板腾讯网站统计代码
  • 一个叫mit做app的网站如何进行关键词分析
  • 网站开发流程的8个步骤国内设计网站大全
  • 建站公司费用三明网站建设公司
  • 美团网站建设规划书招投标网站销售怎么做
  • 手机app微信网站建设做中文网站公司
  • 找工作的网站先搭建网站还是先做ui
  • 多平台网站建设asp.net网站安全
  • 网站制作软件下载wordpress 字符截取
  • 织梦网站做视频网站建设需求信息
  • 网站网站代理怎么做的重庆网站建设联系电话
  • 网站推广工作好做吗手机网页字体大小怎么设置
  • 广州建设厅电工网站网站换域名影响
  • 比较网站建设太原网络推广公司
  • 专业装修设计网站有哪些做设计交易网站
  • 网站前台和后台对接实例公司网站后台是什么
  • 重庆网站制作一般多少钱常用企业网站模板对比
  • 福州微信网站整站seo怎么做
  • 网站建设设计培训班jquery做网站浏览量
  • 没有网站怎么做网络推广北京公司注册网站
  • 培训学校网站系统企业网站作用
  • 长沙网站建设要多少钱网站建设自我总结
  • 巩义网站推广怎么做互联网保险的运营模式
  • 彩票网站链接怎么做东莞市建设管理局
  • 湖南监理建设协会网站网站设计工作流程
  • 如何免费建站网站策划工资一般多少
  • 建设银行手机银行官方网站下载安装佛山制作网站公司推荐