免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 10249 | 回复: 2
打印 上一主题 下一主题

jsp如何实现word文档转换成tif格式 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-01-03 19:51 |只看该作者 |倒序浏览
10可用积分
我听说虚拟机可以实现,便不知道怎么样实现,兄弟急,哪位大G帮帮忙

论坛徽章:
0
2 [报告]
发表于 2008-01-04 03:29 |只看该作者
我收藏过一个文章里面讲到用JMF把PDF转换为PNG 有使用TIF 你看看能不能帮助你

  1. Here is some code that does the trick..

  2. import java.awt.Graphics2D;
  3. import java.awt.RenderingHints;

  4. import java.awt.image.BufferedImage;
  5. import java.awt.image.RenderedImage;
  6. import java.io.ByteArrayInputStream;
  7. import java.io.ByteArrayOutputStream;
  8. import java.io.File;
  9. import java.util.Vector;

  10. import javax.imageio.ImageIO;
  11. import javax.servlet.http.HttpServlet;
  12. import javax.servlet.http.HttpServletResponse;

  13. import com.sun.media.jai.codec.ImageCodec;
  14. import com.sun.media.jai.codec.ImageDecoder;
  15. import com.sun.media.jai.codec.ImageEncoder;
  16. import com.sun.media.jai.codec.PNGEncodeParam;
  17. import com.sun.media.jai.codec.SeekableStream;
  18. import com.sun.media.jai.codec.TIFFDecodeParam;
  19. import com.sun.media.jai.codec.TIFFDirectory;

  20. import multivalent.Behavior;
  21. import multivalent.Context;
  22. import multivalent.Document;
  23. import multivalent.Node;
  24. import multivalent.std.adaptor.pdf.PDF;

  25. public class PDFToPNG extends HttpServlet {

  26. /**
  27. *
  28. */
  29. private static final long serialVersionUID = 1L;

  30. public byte[] ConvertToPngImage(byte[] tiffRawData, HttpServletResponse res)
  31. throws Exception {
  32. Vector pngs = new Vector();
  33. // set stream to the tiff url
  34. SeekableStream tiffStream = SeekableStream.wrapInputStream(
  35. new ByteArrayInputStream(tiffRawData), true);

  36. // how many pages in one tiff
  37. int pageNumber = TIFFDirectory.getNumDirectories(tiffStream);

  38. TIFFDecodeParam decodeParam = new TIFFDecodeParam();
  39. decodeParam.setDecodePaletteAsShorts(true);

  40. ImageDecoder tiffDecoder = ImageCodec.createImageDecoder("tiff",
  41. tiffStream, decodeParam);

  42. // for (int p = 0; p < pageNumber; p ++) {
  43. // render the current page
  44. RenderedImage tiffPage = tiffDecoder.decodeAsRenderedImage();

  45. PNGEncodeParam png = PNGEncodeParam.getDefaultEncodeParam(tiffPage);

  46. // The png stream is outputted to a file. Change the directory
  47. // accordingly.
  48. ByteArrayOutputStream baos = new ByteArrayOutputStream();

  49. // Gets a PNG encoder.
  50. ImageEncoder pngEncoder = ImageCodec.createImageEncoder("PNG", baos,png);

  51. // Encodes the RenderedImage object.
  52. pngEncoder.encode(tiffPage);

  53. byte[] content = baos.toByteArray();
  54. baos.close();
  55. return content;
  56. }

  57. public static void main(String args[]) {
  58. File outfile = new File("c:
  59. file.png");

  60. try {

  61. PDF pdf = (PDF) Behavior.getInstance("AdobePDF", "AdobePDF", null,
  62. null, null);
  63. File file = new File("c:
  64. somepdf.pdf");
  65. pdf.setInput(file);

  66. Document doc = new Document("doc", null, null);
  67. pdf.parse(doc);
  68. doc.clear();

  69. doc.putAttr(Document.ATTR_PAGE, Integer.toString(1));
  70. pdf.parse(doc);

  71. Node top = doc.childAt(0);
  72. doc.formatBeforeAfter(200, 200, null);
  73. int w = top.bbox.width;
  74. int h = top.bbox.height;
  75. BufferedImage img = new BufferedImage(w, h,
  76. BufferedImage.TYPE_INT_RGB);
  77. Graphics2D g = img.createGraphics();
  78. g.setClip(0, 0, w, h);

  79. g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
  80. RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
  81. g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
  82. RenderingHints.VALUE_ANTIALIAS_ON);
  83. g.setRenderingHint(RenderingHints.KEY_RENDERING,
  84. RenderingHints.VALUE_RENDER_QUALITY);
  85. Context cx = doc.getStyleSheet().getContext(g, null);
  86. top.paintBeforeAfter(g.getClipBounds(), cx);

  87. ImageIO.write(img, "png", outfile);
  88. doc.removeAllChildren();
  89. cx.reset();
  90. g.dispose();

  91. pdf.getReader().close();
  92. outfile = null;

  93. doc = null;
  94. } catch (Exception e) {

  95. }
  96. }
  97. }
复制代码

论坛徽章:
0
3 [报告]
发表于 2008-01-04 03:31 |只看该作者
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP