用户登录
用户注册

分享至

blobpdf转换word oracleBLOB上传文件

  • 作者: 蜂蜜柠檬哎呦不错哦
  • 来源: 51数据库
  • 2020-04-17

1.首先你需要保证插入的字段是一个BLOB空值

如果是存在的请初始化成 empty_blob();

update yourtablename t set t.yourcol = empty_blob()

where xxx = xxx ;

如果是不存在的请

insert 的时候插入一个empty_blob()空值。

2.然后查询出这条FOR UPDATE

select t.yourcol

into b_content

from yourtablename t

where XXX = XXX for update;

3.引用dbms_lob编辑大字段,c_content是你的文件内容

DBMS_LOB.OPEN(b_content, DBMS_LOB.LOB_READWRITE);

DBMS_LOB.WRITE(b_content, n_length, 1, UTL_RAW.cast_to_raw(c_content));

DBMS_LOB.CLOSE(b_content);

4.最后

commit;

怎样用C#将oracle中读出的blob文件显示出来?

要显示的前提是:电脑上必须已经安装了可以浏览PDF的软件,例如: Adobe Reader,Foxit PDF Reader 等,并且这些软件启用了浏览器插件。

然后,在ASPX.CS页面直接用

Response.ContentType = "application/pdf";

Response.BinaryWrite( [blob内容] );

就可以了

oracle中的blob类型字段中的文本内容怎样读取和存入

不知道你用的编程语言是什么 若是java 的话 直接从数据库里面拿(如果有hibernate支持)那就domain.getBlob()。然后用流去将blob转换成string 具体怎么做 百度。

存值的时候是将表单的string转换成blob再塞进数据库。newSerialBlob(String对象的.getBytes())

c#怎么把窗体上的PDF存入数据库

我的理解,你问题的关键是程序如何往数据库里写入文件。对吧?无论是什么类型的文件。

这里有一些概念上的东西和你一起清理一下:

1)你需要了解你要用什么数据库?流行的企业级别的有:oracle,MSSQLServer, Sybase等,桌面的就更多了MSACCESS, MSSQL EXPRESS, SQLITE, POSTGRESQL等。无论什么数据库肯定会有一种数据类型为二进制的如oracle叫BLOB可以存放大量的数据流;

2)设计的核心就是通过C#前台程序的序列化功能将任何的文件以流的形式读入内存,转化成二进制文件流stream,然后通过特定的数据库API接口将该数据流写入数据库保存到上面提到的BLOB中

3)使用的时候,就从数据库里先把二进制数据流读出来,然后写入一个新文件里。

以上是设计概要,真正要实现一个软件会遇到很多具体问题,个人认为这是一个很好的将理论转化为实践的机会。多看看C#的技术书

如何用sql语句写入含blob类型字段的数据

很久没用过PB了,网上找了一篇,大致看了一下,应该没什么问题 --转自51CTO论坛 在PowerBuilder里面操作BLOB数据地灵活技术 PowerBuilder提供的BLOB(Binary Large Object)数据类型可以用来处理大型数据

给oracle中的存储过程传递一个Blob类型的字段,java代码怎么写?

现在 在看到你的问题 。 我把代码贴给你

条件准备

Oracle数据库中有表如下

CREATE TABLE BOOK(

ID NUMBER PRIMARY KEY,

F BLOB

);

ConnectionManager类不解释。

package org.db;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.InputStream;

import java.io.OutputStream;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

/**

* 此类掩饰java操作Oracle BLOB类型

* @author wanghao

*

*/

public class SaveFile {

private final static String PSQL = "insert into BOOK(ID,F) " + "values(?,EMPTY_BLOB())";

private final static String SSQL = "select F from BOOK where ID = ? for update";

private final static String USQL = "update BOOK set F = ? where ID = ?";

/**

* 将文件存入数据库

* @param file 要存入数据库的文件

* @param id 为了掩饰方便,手动输入 ID

* @throws Exception

*/

public void save(File file,int id) throws Exception {

Connection conn = ConnectionManager.getConnection();

conn.setAutoCommit(false);

PreparedStatement pstmt = null;

PreparedStatement pstmt2 = null;

try {

pstmt = conn.prepareStatement(PSQL);

pstmt2 = conn.prepareStatement(USQL);

pstmt.setInt(1, id);

try {

pstmt.executeUpdate();// 在数据库中插入空对象

} catch (SQLException ex) {

ex.printStackTrace();

}

pstmt = conn.prepareStatement(SSQL);

pstmt.setInt(1, id);

ResultSet rs = pstmt.executeQuery();// 查询新插入的记录

oracle.sql.BLOB pc = null;

while (rs.next()) {

pc = (oracle.sql.BLOB) rs.getBlob(1);

}

byte[] data = file2Byte(file);

pc.putBytes(1, data);

pstmt2.setBlob(1, pc);

pstmt2.setInt(2, id);

pstmt2.executeUpdate();

conn.commit();

} finally {

try {

pstmt.close();

pstmt2.close();

} catch (Exception EE) {

}

}

}

/**

* 将文件转成byte数组

* @param file 被转成 byte数组的file

* @return

* @throws Exception

*/

public byte[] file2Byte(File file) throws Exception{

FileInputStream fin = new FileInputStream(file);

byte[] b = new byte[(int) file.length()];

fin.read(b);

fin.close();

return b;

}

/**

* 从数据库中将文件写入到本地硬盘

* @param id

* @throws Exception

*/

public void readFile(int id) throws Exception{

byte[] b = new byte[1024];

Connection conn = ConnectionManager.getConnection();

PreparedStatement pstmt = null;

String sql = "select F from BOOK where ID = ?";

pstmt = conn.prepareStatement(sql);

pstmt.setInt(1, id);

ResultSet rs = pstmt.executeQuery();// 查询新插入的记录

oracle.sql.BLOB pc = null;

while (rs.next()) {

pc = (oracle.sql.BLOB) rs.getBlob(1);

}

InputStream in = pc.getBinaryStream();

OutputStream os = new FileOutputStream(new File("T:\\io\\java_temp.pdf"));

int len = 0;

while((len=in.read(b))!=-1){

os.write(b,0,len);

}

os.flush();

os.close();

in.close();

rs.close();

pstmt.close();

conn.close();

}

public static void main(String[] args) throws Exception{

SaveFile sf = new SaveFile();

// File file = new File("T:\\io\\java.pdf");

int id = 2;

// sf.save(file, id);

sf.readFile(id);

}

}

这是我根据网络上的例子改写的,比较清晰,希望对你有帮助!

pdf 怎么把html变成pdf

方法一:

最初是在老外的网站看到 http://hmkcode.com/itext-html-to-pdf-using-java/

Java代码

// step 1

Document document = new Document();

// step 2

PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("pdf.pdf"));

// step 3

document.open();

// step 4

XMLWorkerHelper.getInstance().parseXHtml(writer, document,

new FileInputStream("index.html"));

//step 5

document.close();

System.out.println( "PDF Created!" );

Maven构建对应的版本 关于eclipse配置maven,可以参考此文

Xml代码

<dependency>

<groupId>com.itextpdf</groupId>

<artifactId>itextpdf</artifactId>

<version>5.4.2</version>

</dependency>

<dependency>

<groupId>com.itextpdf.tool</groupId>

<artifactId>xmlworker</artifactId>

<version>5.4.1</version>

</dependency>

最简单的方式,HTML支持度很好,可惜不支持中文 源码地址:https://github.com/hmkcode/Java/blob/master/itext-java-html-pdf

方法二:

使用的jar包:itext-2.0.8.jar core-render.jar

App.java

Java代码

/**

*

* @author LJS

*

*/

public class App {

public void createPdf() throws Exception {

// step 1

String inputFile = "index.html";

String url = new File(inputFile).toURI().toURL().toString();

String outputFile = "index.pdf";

System.out.println(url);

// step 2

OutputStream os = new FileOutputStream(outputFile);

org.xhtmlrenderer.pdf.ITextRenderer renderer = new ITextRenderer();

renderer.setDocument(url);

// step 3 解决中文支持

org.xhtmlrenderer.pdf.ITextFontResolver fontResolver = renderer

.getFontResolver();

fontResolver.addFont("c:/Windows/Fonts/simsun.ttc", BaseFont.IDENTITY_H,

BaseFont.NOT_EMBEDDED);

renderer.layout();

renderer.createPDF(os);

os.close();

System.out.println("create pdf done!!");

}

public static void main(String[] args) throws Exception {

App app = new App();

app.createPdf();

}

}

注意指定中文字体

要转换的HTML

index.html

Html代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ">

<html xmlns="http://www.w3.org/1999/xhtml ">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>itext-zh-cn</title>

<style type="text/css">

body {

font-family: SimSun;

}

</style></head>

<body>

<p align="left" >OK,支持中文了:)</p>

</body>

</html>

同样也要指定中文字体,区分大小写

运行程序,转换结果:

(字体样式和大家熟知的宋体不同,因为我替换了系统默认的宋体,pdf查看工具推荐PDF-XChange Viewer)

pdf样式修改为A4 ( Document doc = new Document(PageSize.A4.rotate());)

在index.html中添加

Html代码

<style type="text/css">

@page{ size: 11.69in 8.27in;}

...

</style>

注意:无论哪种方式的Html格式转换pdf,对于html源文件要求是语法严格的;方法二支持基本的CSS样式,可以调整出合适的HTML模板。

大家有更好的方法,欢迎交流

其他:itext添加图片方法:实际应用中,应该与生成pdf合成一步提升性能

Java代码

public static void addImg(String fm) throws Exception {

PdfReader reader = new PdfReader("temp.pdf");

PdfStamper stamp = new PdfStamper(reader,new FileOutputStream("model.pdf"));

Image img = Image.getInstance("code.png"); //使用png格式

img.setAlignment(Image.LEFT | Image.TEXTWRAP);

img.setBorderWidth(10);

img.setAbsolutePosition(420, 240);

img.scaleToFit(1000, 60);// 大小

PdfContentByte over = stamp.getUnderContent(1); // overCount 与underCount

over.addImage(img);

stamp.close();

reader.close();

}

itext 版本号众多,可以在gerpcode查找其所有的版本

js怎么实现将流写成文件实现pdf在线预览

Viewer JS预览pdf文件,其pdf文件只能url地址,不支持获取文件流到客户端,生成blob地址预览。而PDFJS能够支持

转载请注明出处51数据库 » blobpdf转换word oracleBLOB上传文件

软件
前端设计
程序设计
Java相关