Java 使用pdfbox库将pdf转换为html页面
公共类文本 {Java 使用pdfbox库将pdf转换为html页面,java,pdfbox,Java,Pdfbox,公共类文本 { /** *私有构造函数。 */ 私有文本() { //静态类 } 公共静态void main(字符串[]args)引发异常 { 如果(l!=null) { System.out.println(“此处”+l.length); deleteSubs(op); System.out.println(“然后”+l.length); } 其他的 { System.out.println(“WHERE”); } 文件y=新文件(imgDes); 如果(!y.exists()) { y、 m
/**
*私有构造函数。
*/
私有文本()
{
//静态类
}
公共静态void main(字符串[]args)引发异常
{
如果(l!=null)
{
System.out.println(“此处”+l.length);
deleteSubs(op);
System.out.println(“然后”+l.length);
}
其他的
{
System.out.println(“WHERE”);
}
文件y=新文件(imgDes);
如果(!y.exists())
{
y、 mkdirs();
}
文件z=新文件(imgDestination);
如果(!z.存在())
{
z、 mkdirs();
}
文件fr=新文件(输出文件);
如果(!fr.isDirectory())
{
fr.删除();
}
//默认为文本文件
字符串ext=“.txt”;
int起始页=1;
int endPage=Integer.MAX_值;
写入器输出=空;
PDDocument文件=null;
尝试
{
尝试
{
URL=新URL(pdfFile);
document=PDDocument.load(url,force);
字符串文件名=url.getFile();
if(outputFile==null&&fileName.length()>4)
{
outputFile=新文件(fileName.substring(0,fileName.length()-4)+ext.getName();
}
}
捕获(格式错误)
{
document=PDDocument.load(pdfFile,force);
if(outputFile==null&&pdfFile.length()>4)
{
outputFile=pdfFile.substring(0,pdfFile.length()-4)+ext;
}
}
//document.print();
if(document.isEncrypted())
{
StandardDecryptionMaterial sdm=新的StandardDecryptionMaterial(密码);
文件保护(sdm);
AccessPermission ap=document.getCurrentAccessPermission();
如果(!ap.canExtractContent())
{
抛出新IOException(“您没有提取文本的权限”);
}
}
if((encoding==null)&&(toHTML))
{
encoding=“UTF-8”;
}
if(toConsole)
{
输出=新的OutputStreamWriter(System.out);
}
其他的
{
if(编码!=null)
{
输出=新的OutputStreamWriter(新文件OutputStream(outputFile),编码);
}
其他的
{
//使用默认编码
输出=新的OutputStreamWriter(新文件OutputStream(outputFile));
}
}
PDFTextStripper4剥离器=null;
if(toHTML)
{
剥离器=新的PDFText2HTML(编码);
}
其他的
{
剥离器=新的PDFTextStripper4(编码);
}
文件f=新文件(imgDestination);
PDPD文件;
int i=0;
如果(f.exists())
{
pd=PDDocument.load(pdfFile);
PDF;
fd=新的PDFontDescriptorDictionary();
List li=pd.getDocumentCatalog().getAllPages();
用于(第页:li)
{
PDResources pdr=page.getResources();
Map m=pdr.getFonts();
pdp流;
对于(PDFont pdd:m.values())
{
System.out.println(“------------”+pdd.getBaseFont());
getFontDescriptor();
fd=pdd.getFontDescriptor();
setFontDescriptor((PDFontDescriptorDictionary)fd);
System.out.println(“titititi”+pdd.getFontEncoding());
if(pdd.isType1Font())
{
pst=((PDFontDescriptorDictionary)fd).getFontFile3();
系统输出打印项次(“输入-如果”+pst);
如果(pst!=null)
{
FileOutputStream fos=新的FileOutputStream(新文件(imgDestination+pdd.getBaseFont().toString()+“.pfb”);
复制(pst.createInputStream(),fos);
i++;
系统输出打印LN(i);
fos.close();
}
}
其他的
if(pdd.isTrueTypeFont())
{
pst=((PDFontDescriptorDictionary)fd).getFontFile2();
系统输出打印项次(“如果”+pst,则输入其他项);
如果(pst!=null)
{
FileOutputStream fos=新的FileOutputStream(新文件(imgDestination+pdd.getBaseFont().toString()+“.ttf”);
复制(pst.createInputStream(),fos);
i++;
系统输出打印LN(i);
fos.close();
}
}
其他的
if(pdd.isSymbolicFont())
{
系统输出打印项次(“符号……);
}
其他的
{
System.out.println(“In-Else”);
}
}
}
int pageCount=document.getDocumentCatalog().getAllPages().size();
对于(int p=0;p/**
* private constructor.
*/
private ExtractText()
{
//static class
}
public static void main( String[] args ) throws Exception
{
if(l!=null)
{
System.out.println("HERE"+l.length);
deleteSubs(op);
System.out.println("Then"+l.length);
}
else
{
System.out.println("WHERE");
}
File y=new File(imgDes);
if(!y.exists())
{
y.mkdirs();
}
File z=new File(imgDestination);
if(!z.exists())
{
z.mkdirs();
}
File fr=new File(outputFile);
if(!fr.isDirectory())
{
fr.delete();
}
// Defaults to text files
String ext = ".txt";
int startPage = 1;
int endPage = Integer.MAX_VALUE;
Writer output = null;
PDDocument document =null;
try
{
try
{
URL url = new URL( pdfFile );
document = PDDocument.load(url, force);
String fileName = url.getFile();
if( outputFile == null && fileName.length() >4)
{
outputFile = new File( fileName.substring( 0, fileName.length() -4 ) + ext ).getName();
}
}
catch( MalformedURLException e)
{
document = PDDocument.load(pdfFile, force);
if( outputFile == null && pdfFile.length() >4 )
{
outputFile = pdfFile.substring( 0, pdfFile.length() -4 ) + ext;
}
}
//document.print();
if( document.isEncrypted() )
{
StandardDecryptionMaterial sdm = new StandardDecryptionMaterial( password );
document.openProtection(sdm);
AccessPermission ap = document.getCurrentAccessPermission();
if( ! ap.canExtractContent() )
{
throw new IOException("You do not have permission to extract text" );
}
}
if ((encoding == null) && (toHTML))
{
encoding = "UTF-8";
}
if( toConsole )
{
output = new OutputStreamWriter(System.out);
}
else
{
if( encoding != null )
{
output = new OutputStreamWriter(new FileOutputStream( outputFile ), encoding );
}
else
{
//use default encoding
output = new OutputStreamWriter(new FileOutputStream( outputFile ) );
}
}
PDFTextStripper4 stripper = null;
if(toHTML)
{
stripper = new PDFText2HTML(encoding);
}
else
{
stripper = new PDFTextStripper4(encoding);
}
File f= new File(imgDestination);
PDDocument pd;
int i=0;
if(f.exists())
{
pd=PDDocument.load(pdfFile);
PDFontDescriptor fd;
fd = new PDFontDescriptorDictionary();
List<PDPage> li=pd.getDocumentCatalog().getAllPages();
for(PDPage page:li)
{
PDResources pdr=page.getResources();
Map<String, PDFont> m=pdr.getFonts();
PDStream pst;
for(PDFont pdd:m.values())
{
System.out.println("----------"+pdd.getBaseFont());
pdd.getFontDescriptor();
fd = pdd.getFontDescriptor();
pdd.setFontDescriptor((PDFontDescriptorDictionary)fd);
System.out.println("tititititi"+pdd.getFontEncoding());
if(pdd.isType1Font())
{
pst=((PDFontDescriptorDictionary) fd).getFontFile3();
System.out.println("In If "+pst);
if(pst!= null)
{
FileOutputStream fos = new FileOutputStream(new File(imgDestination+pdd.getBaseFont().toString()+".pfb"));
IOUtils.copy(pst.createInputStream(), fos);
i++;
System.out.println(i);
fos.close();
}
}
else
if(pdd.isTrueTypeFont())
{
pst= ((PDFontDescriptorDictionary) fd).getFontFile2();
System.out.println("In Else-if"+pst);
if (pst!= null)
{
FileOutputStream fos = new FileOutputStream(new File(imgDestination+pdd.getBaseFont().toString()+".ttf"));
IOUtils.copy(pst.createInputStream(), fos);
i++;
System.out.println(i);
fos.close();
}
}
else
if(pdd.isSymbolicFont())
{
System.out.println("Symbol.......");
}
else
{
System.out.println("In Else");
}
}
}
int pageCount = document.getDocumentCatalog().getAllPages().size();
for (int p = 0; p < pageCount; ++p)
{
System.out.println("I am in for loop");
stripper.setForceParsing( force );
stripper.setSortByPosition( true );
stripper.setShouldSeparateByBeads(separateBeads);
stripper.setStartPage( p);
stripper.setEndPage( p);
stripper.writeText( document, output );
FileOutputStream fos = new FileOutputStream(new File(f5+(p+1)+".html"));
output.close();
}
PDDocumentInformation info = document.getDocumentInformation();
System.out.println( "Page Count=" + document.getNumberOfPages());
System.out.println( "Title=" + info.getTitle());
System.out.println( "Author=" + info.getAuthor());
System.out.println( "Subject=" + info.getSubject() );
System.out.println( "Keywords=" + info.getKeywords() );
System.out.println( "Creator=" + info.getCreator() );
System.out.println( "Producer=" + info.getProducer() );
System.out.println( "Creation Date=" + info.getCreationDate() );
System.out.println( "Modification Date=" + info.getModificationDate());
System.out.println( "Trapped=" + info.getTrapped());
}
}catch(Exception e)
{
e.printStackTrace();
}
finally
{
if( output != null)
{
output.close();
}
if( document != null )
{
document.close();
}
}
}
private static void deleteSubs(File op)
{
// TODO Auto-generated method stub
File[] files = op.listFiles();
System.out.print("In delete folder");
if(files!=null)
{
//some JVMs return null for empty dirs
for(File f: files)
{
if(f.isDirectory())
{
deleteSubs(f);
}
else
{
f.delete();
}
}
}
op.delete();
}
stripper.setStartPage( p );
stripper.setEndPage( p );
int pageCount = document.getDocumentCatalog().getAllPages().size();
for (int p = 0; p < pageCount; ++p)
{
//... your options
stripper.setStartPage(p);
stripper.setEndPage(p);
FileOutputStream fos = new FileOutputStream(new File(f5+(p+1)+".html"));
stripper.writeText(document, fos);
fos.close();
}