2017-01-26 8 views
0

я использовал PDFBox от: Tom Roush PDFBox Android и импортировать его в build.gradel: dependencies {compile 'org.apache:pdfbox-android:1.8.9.0'}PDFBox на Android не открывается и заполнить PDF формы

Но каждый раз, когда я запускаю активность появляется только Toast, но заполненный PDF файл не найден. PDF-файл находится в папке/assets. Я создал эту папку самостоятельно в/app/src/main/assets. Я использую Android Studio.

Деятельность:

public class GwmProbenActivity extends AppCompatActivity { 

DatabaseHelperAllgemeineDaten myDb; 
public String stOrt; 
public String stProgramm; 
public String stName; 
public String stDatum; 
File root; 

AssetManager assetManager; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_proben); 

    Intent intent = getIntent(); 
    stDatum = intent.getStringExtra("datum"); 
    myDb = new DatabaseHelperAllgemeineDaten(this); 

    PDFBoxResourceLoader.init(getApplicationContext()); 
    root = android.os.Environment.getExternalStorageDirectory(); 
    assetManager = getAssets(); 
} 


public void fillPDF() { 
    try { 
     // Load the document and get the AcroForm 
     PDDocument document = PDDocument.load(assetManager.open("Vorlage_GWM- Protokoll.pdf")); 
     PDDocumentCatalog docCatalog = document.getDocumentCatalog(); 
     PDAcroForm acroForm = docCatalog.getAcroForm(); 

     // Fill the text field 
     PDFieldTreeNode field = acroForm.getField("ProbenahmeDatum"); 
     field.setValue(stDatum); 

     String path = root.getAbsolutePath() + "/Download/Vorlage_GWM-Protokoll1"; 
     Toast.makeText(this,"Saved filled form to " + path,Toast.LENGTH_LONG).show(); 
     document.save(path); 
     document.close(); 
    } 
    catch (IOException ioe) 
    { 
     ioe.printStackTrace(); 
    } 
} 

public void speichern (View v) { 
    fillPDF(); 
} 
} 
+0

1) В сохраненном имени файла отсутствует «.pdf». 2) перед сохранением вызывается Toast, поэтому он ничего не означает, что он отображается => исправьте это, отредактируйте свой вопрос и сообщите в комментариях, что происходит сейчас. –

+0

Спасибо, я добавил «.pdf» и переместил Toast за документ document.close(). Теперь Toast не появляется, и я не могу найти файл в памяти/emulated/0/Загрузить –

+0

Хорошо, получилось. Поскольку API 23+ вам необходимо проверить разрешения в Управлении. [Это было решение] (http://stackoverflow.com/a/33292700/4615030) –

ответ

1

Я добавил ".pdf" и переехал Тост за document.close(). Теперь Toast не появляется, и я не могу найти файл в памяти/emulated/0/Download.

С API 23+ вам необходимо проверить разрешения в Управлении. Это решение.