Ich versuche, die Apache PDFBox Bibliothek zu verwenden, um ein PDF-Dokument programmgesteuert zu erstellen. Die Klasse PDPageContentStream enthält Methoden zum Schreiben von Text, Zeichnen von Linien, Bezierkurven, Rechtecken. Aber ich finde keine Möglichkeit, einen einfachen ausgefüllten Kreis zu zeichnen. Gibt es eine Möglichkeit, es mithilfe dieser Bibliothek zu zeichnen? Wenn nicht, können Sie bitte eine kostenlose Java-Bibliothek vorschlagen, die eine flexible API zum programmgesteuerten Erstellen von PDF-Dokumenten bietet? Danke im Voraus.Hinzufügen von gefüllten Kreisen zu PDF-Seite mit Apache PDFBox
Antwort
OK, dankt allen für Antworten. Ich mag die Lösung mit Bezierkurven. Dieser Ansatz funktioniert gut für mich:
private void drawCircle(PDPageContentStream contentStream, int cx, int cy, int r, int red, int green, int blue) throws IOException {
final float k = 0.552284749831f;
contentStream.setNonStrokingColor(red, green, blue);
contentStream.moveTo(cx - r, cy);
contentStream.curveTo(cx - r, cy + k * r, cx - k * r, cy + r, cx, cy + r);
contentStream.curveTo(cx + k * r, cy + r, cx + r, cy + k * r, cx + r, cy);
contentStream.curveTo(cx + r, cy - k * r, cx + k * r, cy - r, cx, cy - r);
contentStream.curveTo(cx - k * r, cy - r, cx - r, cy - k * r, cx - r, cy);
contentStream.fill();
}
Also, ich stieß auf dieses Problem, und es gibt einen Weg, aber es ist eine Art Cheaty und je nachdem, was Sie tun möchten, keine gute Lösung. Sie können die Vorteile von PDF „Anmerkungen“ nehmen, die einen Kreis Typ umfassen zum Beispiel:
PDAnnotationSquareCircle circle = new PDAnnotationSquareCircle(PDAnnotationSquareCircle.SUB_TYPE_CIRCLE);
PDRectangle position = new PDRectangle();
position.setLowerLeftX(0);
position.setLowerLeftY(0;
position.setUpperRightX(100);
position.setUpperRightY(100);
circle.setRectangle(position);
und dann
circle.SetInteriorColor(someCOSColor);
mit einer Farbe als Argument nennen es zu füllen. Das Problem dabei ist, dass es eine "Annotation" ist, es sei denn, Sie sperren das Dokument für die Bearbeitung, die Leute können sie ziehen. Wenn Benutzer unter Windows versuchen, sie zu drucken, sehen sie die Anmerkungen nicht. Verwenden Sie auf Ihr eigenes Risiko, aber es wird Ihnen farbige Kreise filled
Edit: hat ein vollständigeres Beispiel als Reaktion auf einen Kommentar
Das ist eine Anmerkung. Es ist nicht das, wonach das OP gefragt hat. –
"Aber ich finde keinen Weg, einen einfachen gefüllten Kreis zu zeichnen." ist das Zitat aus der Frage. Dadurch wird ein gefüllter Kreis in seinem Dokument erstellt. Ich denke, ich habe die Nachteile angemessen erklärt. Eigentlich, wenn es einen anderen Weg gäbe, es zu tun, würde ich daran interessiert sein, davon zu hören, weil ich das in einer Anwendung benutzt habe und es die Probleme verursacht, die ich beschrieben habe. – mstorkson
- 1. Fonts zu Apache Pdfbox hinzufügen?
- 2. Hinzufügen von MS Office Dokumenten zu PDF über Apache PDFBox
- 3. Apache Tika und Apache PDFBox 2.0
- 4. Seitenzahlen mit PDFBox hinzufügen
- 5. DamagedFontException beim Initialisieren von PDFont (Apache PDFBox)
- 6. Hinzufügen BufferedImage zu PDFBox 2.0 Dokument
- 7. So gehen Sie beim Hinzufügen von Text mit Apache PDFBox in die nächste Zeile
- 8. Matlab - Hinzufügen von Kreisen zu jedem Bild des Films
- 9. Wie Zeitstempel mit Pdfbox und TimeStampToken hinzufügen
- 10. Gefüllten Kreis für 0% Beobachtungen hinzufügen
- 11. Hinzufügen eines Schrägstrichs zu URL mit Apache
- 12. PDF mit PDFBox schützen
- 13. Erkennung von Muster von Kreisen mit opencv
- 14. Pdf-Dateien mit PDFBox verschmelzen
- 15. Annotation zu Apache Fop hinzufügen
- 16. Schnitt Gitter mit Kreisen
- 17. Ändern von Svg-Kreisen zu Bild
- 18. Karte Karte von Pacific mit gefüllten Ländern
- 19. Extrahieren von HTML-Tabelle mit gefüllten Optionsschaltflächen
- 20. pdfbox PDFBox 2.0.0 bekomme Feldposition
- 21. Kann nicht PDFBox Beispiele
- 22. Hinzufügen von Notizen zu einer PowerPoint-Folie mit Apache POI
- 23. Hinzufügen von Raw-Bytes zu Post-Parametern mit Apache HttpClient
- 24. Erstellen von Legenden mit Kreisen Flugblatt R
- 25. Erkennen von kleinen Kreisen mit houghCircles (OpenCV)
- 26. Erstellen von Kreisen in javafx mit thread.sleep()
- 27. Clustering einer Menge von Punkten mit Kreisen
- 28. Union von Kreisen in C++
- 29. PDFBox: versuchen, PDF zu entschlüsseln
- 30. Ausrichten von UIBezierPath-Kreisen Gedankenstriche
Meistens von https://stackoverflow.com/questions/40781610/how-to-draw-a-pie-chart-in-pdfbox/ PDF duplizieren nicht über einen Operator für Kreise, Sie müssen es mit Bezier-Kurven annähern. –
@TilmanHausbringer Wie füllt man den von 4 Bezierkurven umschriebenen Bereich? Ich bin genau auf dieses Problem gestoßen und musste Anmerkungen verwenden, um es zu umgehen. – mstorkson
@mstorkson Nach dem Zeichnen Ihrer Form mit entsprechenden Bezier-Kurven rufen Sie fill() auf. –