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();
}