pdfbox 操作 pdf 文档 - android
Posted
技术标签:
【中文标题】pdfbox 操作 pdf 文档 - android【英文标题】:pdfbox manipulate pdf document - android 【发布时间】:2016-07-19 23:08:47 【问题描述】:所以我环顾四周寻找一个好的安卓 PDF API,我发现了 PDFBox。我开始玩这个库,主要是在寻找操作特定的 pdf 表单。
现在我正在从我的资产文件夹中成功加载文件,但是当我尝试调用时
getAcroForm();
它把我变成了一个空对象,因此我无法进入字段并开始插入一些数据。
这是我加载 pdf 文件的代码,将其复制到 sdcard 并将其加载到 PDDocument 对象:
package com.silverfix.pdfpractice;
import android.content.res.AssetManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDDocumentCatalog;
import org.apache.pdfbox.pdmodel.interactive.form.PDAcroForm;
import org.apache.pdfbox.pdmodel.interactive.form.PDFieldTreeNode;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
public class MainActivity extends AppCompatActivity
private final String FORM_NAME = "dgc.pdf";
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try
AssetManager assetManager = getAssets();
File file = createFileFromInputStream(assetManager.open(FORM_NAME));
PDDocument form = PDDocument.load(file);
PDDocumentCatalog catalog = form.getDocumentCatalog();
catalog.getPages().getCount();
Toast.makeText(this, "Loaded! " + catalog.getPages().getCount(), Toast.LENGTH_LONG).show();
catch (IOException e)
e.printStackTrace();
Toast.makeText(this, "Loading has failed", Toast.LENGTH_LONG).show();
private File createFileFromInputStream(InputStream inputStream)
try
OutputStream outputStream = new FileOutputStream("/sdcard/PDFPractice/" + FORM_NAME);
byte buffer[] = new byte[1024];
int length = 0;
while((length=inputStream.read(buffer)) > 0)
outputStream.write(buffer,0,length);
outputStream.close();
inputStream.close();
File result = new File("/sdcard/PDFPractice/" + FORM_NAME);
return result;
catch (IOException e)
e.printStackTrace();
return null;
如何在没有 acroform 的情况下操作 pdf 文件?或者,我可以自己在这个 pdf 文件中添加某种 acroform 吗?
【问题讨论】:
类似问题here 查看 PDFBox 源代码下载中的 CreateSimpleForm 示例。 (不知道这是否适用于 Android 版 PDFBox)。 您的 pdf 实际上是否包含 AcroForm 表单?或者有没有表单域的图纸? 【参考方案1】:好的,我终于解决了这个问题。我下载了 Foxit PhantomPDF,事实证明您可以定义文本字段并根据需要对齐它们。我不知道是否有其他软件可以做到这一点,但这个软件为我完成了这项工作
【讨论】:
以上是关于pdfbox 操作 pdf 文档 - android的主要内容,如果未能解决你的问题,请参考以下文章