|
import java.io.File;
import java.io.IOException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.text.PDFTextStripper;
public class NewClass {
public static void main(String[] args) throws IOException{
try {
// Creating file instance
File file = new File("test.pdf");
// Loading pdf file
PDDocument document = PDDocument.load(file);
PDFTextStripper pdfStripper = new PDFTextStripper();
// Fetching PDF document
String text = pdfStripper.getText(document);
System.out.println(text);
// Closing the document
document.close();
}catch(Exception e) {
System.out.println(e);
}
}
}
/PDDocument document = PDDocument.load(file);/ In this line there is an error in load, and I can't run the project
|
|
|
|
|
Daniel Carvalho 2022 wrote: In this line there is an error in load, And that error would be what? I suspect it has to do with the file's relative path (which defaults to current [i.e., "./test.pdf"] if none is provided), but only you know for sure.
"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"You can easily judge the character of a man by how he treats those who can do nothing for him." - James D. Miles
|
|
|
|
|
I've tried changing the path and it still has the same error. Is there any other way to perform the same function?
|
|
|
|
|
As David said:
➡️ And that error would be what? ⬅️
It's no use repeatedly telling us you have "the same error" when you've never told us what the error is.
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
Error?
FileNotFound
ClassNotFound
PdfFormatException
Full stack trace helps
|
|
|
|
|
The URL of the site is:
https://www.lowes.com/pd/7-16-CAT-PS2-10-OSB-Sheathing-Application-as-4-x-8/50382768[^]
The information that I am trying to obtain is the price. Using Chrome's Inspect view, I was able to drill down to the price element in question. The Xpath of that element looks like:
/html/body/div[3]/section/div/div[7]/div[1]/div[2]/div[1]/span/div[1] I really wanted to see that in some "tree" form, so I walked the HTML backward from that element back to the top. That looks like:
<html>
<body>
<div id="app">
<section role="main" id="main" class="app__Container-PDP__sc-9tcy1n-0 bglOQr">
<div class="style__ProductDetailsWrapper-PDP__sc-4buzay-0 fwCYaB">
<div class="style__Wrapper-PDP__sc-1a0l1ro-1 hiRMxh product-info">
<div class="style__ProductDescDeskWrapper-PDP__sc-1a0l1ro-6 fpGRzR">
<div class="style__ProductTitleWrapper-PDP__sc-1a0l1ro-11 fUmbqY">
<div tabindex="0" class="styles__PriceWrapper-sc-1c3t51u-0 ZQLLV priceWrapper">
<span class="finalPrice">
<div class="sc-hGPBjI eomYbK">$30.65 </div> I was able to throw some Java code together (read: ugly) to drill down to that level but got stopped at the next-to-last DIV element.
...
Elements elements = element.getElementsByAttributeValue("class", "style__ProductTitleWrapper-PDP__sc-1a0l1ro-11 fUmbqY"); This returns a 1-item collection as it should. If I then follow that with:
Element element = elements.get(0);
elements = element.getElementsByAttributeValue("class", "styles__PriceWrapper-sc-1c3t51u-0 ZQLLV priceWrapper"); It returns an empty collection. I assume this is because no such class could be found. However I can plainly see that DIV element in the Inspect view.
I can get the sibling elements to the one in question. I even tried searching for getElementsByAttributeValue("tabindex", "0") , and while it correctly found 2 elements, neither are the one I want.
Any idea(s) as to what I'm missing (or not understanding)?
Thanks.
DC
"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"You can easily judge the character of a man by how he treats those who can do nothing for him." - James D. Miles
modified 20-Jan-22 16:23pm.
|
|
|
|
|
Did you try to skip the random in the middle?
Go straight for “class”, “finalPrice”
The extract the nested text node to skip the last div
|
|
|
|
|
Make a program that takes n numbers and computes the sum of
positive numbers. If the entered number is 0, the program will
terminate
|
|
|
|
|
Sorry, this site does not provide code to order. If you do not understand how to write a simple Java sample then take a look at Java Tutorials Learning Paths[^].
|
|
|
|
|
|
There are many excellent books that you could use to learn Java. Alternatively, you could look at courses and training videos on places like Pluralsight, Udemy and so on.
|
|
|
|
|
Use the link in my message above yours. It is a well presented tutorial which takes you from the basics right through to many of the advanced concepts.
|
|
|
|
|
import java.io.*;
public class SumOfPositive{
public static void main(String args[])throws Exception{
int sum=0;
System.out.println("Enter how many you need to add");
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
int n=br.readLine();
for(int i=0;i<n;i++)
{
if(a[i])="=0)
" system.exit(0);
="" if(a[i]="">0)
sum=sum+a[i];
}
System.out.println("Sum of positive numbers:"+sum);
}
}
|
|
|
|
|
i am using apache tomcat and am having trouble connecting my external style sheet to my jsp page.
i have tried google,stack overflow and can't find a solution to my problem.
my repository URL:<a href="https://github.com/jonathanIckovich/divina-popina.git">GitHub - jonathanIckovich/divina-popina</a>[<a href="https://github.com/jonathanIckovich/divina-popina.git" target="_blank" title="New Window">^</a>]
|
|
|
|
|
import java.util.Scanner;
public class Main
{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Enter the size of the array");
int n = sc.nextInt();
int arr[]=new int[n];
System.out.println("Enter the elements of the array");
for(int i=0;i<n;i++)
{
arr[i]=sc.nextInt();
}
DivArray(arr,0,arr.length-1);
for(int z:arr)
{
System.out.print(z+" ");
}
}
static void DivArray(int arr[],int low,int high)
{
if(low<high)
{
int mid=(low+high)/2;
DivArray(arr,low,mid);
DivArray(arr,mid+1,high);
MergeSort(arr,low,mid,high);
}
}
static void MergeSort(int arr[],int low,int mid,int high)
{
int i = low;
int k = low;
int j = mid+1;
int dummy[]=new int[arr.length];
while(i<=mid && j<=high)
{
if(arr[i]<arr[j])
{
dummy[k]=arr[i];
k++;
i++;
}else{
dummy[k]=arr[j];
k++;
j++;
}
}
while(i<=mid)
{
dummy[k]=arr[i];
k++;
i++;
}
while(j<=high)
{
dummy[k]=arr[j];
k++;
j++;
}
for(int q=0;q<arr.length;q++)
{
arr[q]=dummy[q];
}
}
}
OUTPUT:
Enter the size of the array
8
Enter the elements of the array
9 8 7 6 5 4 3 2
0 0 0 0 0 0 0 0
|
|
|
|
|
You need to use the debugger to find out exactly what is happening to your array in the DivArray and MergeSort methods.
|
|
|
|
|
import java.util.Scanner;
public class Main
{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Enter the size of the array");
int n = sc.nextInt();
int arr[]=new int[n];
System.out.println("Enter the elements of the array");
for(int i=0;i<n;i++)
{
arr[i]=sc.nextInt();
}
DivArray(arr,0,arr.length-1);
for(int z:arr)
{
System.out.print(z+" ");
}
}
static void DivArray(int arr[],int low,int high)
{
if(low<high)
{
int mid=(low+high)/2;
DivArray(arr,low,mid);
DivArray(arr,mid+1,high);
MergeSort(arr,low,mid,high);
}
}
static void MergeSort(int arr[],int low,int mid,int high)
{
int i = low;
int k = low;
int j = mid+1;
int dummy[]=new int[arr.length];
while(i<=mid && j<=high)
{
if(arr[i]<arr[j])
{
dummy[k]=arr[i];
k++;
i++;
}else{
dummy[k]=arr[j];
k++;
j++;
}
}
while(i<=mid)
{
dummy[k]=arr[i];
k++;
i++;
}
while(j<=high)
{
dummy[k]=arr[j];
k++;
j++;
}
for(int q=0;q<arr.length;q++)
{
arr[q]=dummy[q];
}
}
}
OUTPUT:
Enter the size of the array
8
Enter the elements of the array
9 8 7 6 5 4 3 2
0 0 0 0 0 0 0 0
modified 3-Dec-21 4:28am.
|
|
|
|
|
Move the code the displays the sorted array out of the MergeSort method, and into your Main method, after the call to DivArray .
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
I am trying to extract date from a String (Line), to do a Date conversion, but my String concatenation (#1) gives incorrect result.
Adding a blank ("") at the start (#2) gives the correct result.
Why is this? Where does the "105" come from?
System.out.println("Line= " + Line);
char ch1 = Line.charAt(0), ch2 = Line.charAt(1);
char ch4 = Line.charAt(3), ch5 = Line.charAt(4);
char ch7 = Line.charAt(6), ch8 = Line.charAt(7),
ch9 = Line.charAt(8), ch10 = Line.charAt(9) ;
System.out.println("Text date= " + ch1 + ch2 + '/' + ch4 + ch5 + '/' +
ch7+ ch8+ch9+ch10);
String sDate1= ch1 + ch2 + "/" + ch4 + ch5 + '/' +
ch7+ ch8+ch9+ch10;
System.out.println("Not correct: sDate1= " + sDate1);
String sDate2= "" + ch1 + ch2 + "/" + ch4 + ch5 + '/' +
ch7+ ch8+ch9+ch10;
System.out.println("Correct: sDate2= " + sDate2);
Output:
Line= 09/12/2021
Text date= 09/12/2021
Not correct: sDate1= 105/12/2021
Correct: sDate2= 09/12/2021
|
|
|
|
|
It "thinks" you're doing "addition", then string concatenation in the first instance (0x30 + 0x39 == 105 == char(0) + char(9)); and all string concats in the second; due to the leading quote.
It was only in wine that he laid down no limit for himself, but he did not allow himself to be confused by it.
― Confucian Analects: Rules of Confucius about his food
|
|
|
|
|
Er, what exactly are you trying to do?
|
|
|
|
|
Im trying to extract the date from the string, then do a date conversion, but Im not able to extract the date correctly.
UPDATE:
Ok, I resolved this myself using the java substring function instead of trying to extract one character at a time:
String sTest = "09/21/2021 and other junk on the line";
System.out.println("sTest= " + sTest);
String sDate = sTest.substring(0, 10);
System.out.println("sDate= " + sDate);
Date date1=new SimpleDateFormat("MM/dd/yyyy").parse(sDate);
System.out.println(sDate +"\t"+date1);
now gives the expected result:
sTest= 09/21/2021 and other junk on the line
sDate= 09/21/2021
09/21/2021 Tue Sep 21 00:00:00 EDT 2021
modified 28-Nov-21 19:11pm.
|
|
|
|
|
Can someone help with this task?
Reuse the included class CA in order to provide graphical interface: instead of printing X's and blanks on the screen, black and white cells are drawn on the canvas depending on the CA's state. Your SwingCA class should accept a single argument representing a Wolfram's rule (handle exceptions!) and generate 600 generations each of size 400. For example, if you run java SwingCA 30 the image you get should resemble:
https://media.cheggcdn.com/media/59e/59e3b9d6-7ede-413d-a953-78cbb74e925b/phpYbnEbr[^]
REUSE THIS CLASS:
-----------------------------------------
public class CA {
// Data Members
private boolean[] cell;
private int size;
private int rule;
private boolean[] ttable;
// Constructor
public CA(int size, int rule) {
this.rule = rule;
this.size = size;
// Initialize Truth Table
ttable = new boolean[8];
for (int i = 0; i < ttable.length; i++) {
ttable[i] = (rule & 0x1) == 1? true: false;
rule >>= 1;
}
// Create Cells
cell = new boolean[size];
// Set Middle Cell To 1
cell[size / 2] = true;
}
// Compute And Return Next State
public boolean[] getState() {
// Array To Hold New State
boolean[] newCell = new boolean[size];
for (int i = 1; i < size - 1; i++) {
// Get Left Current And Right Values
int left = cell[i - 1]? 1 : 0;
int cur = cell[i] ? 1 : 0;
int right = cell[i + 1]? 1 : 0;
// Convert It To Decimal And Use It As Index For Rule Array
int ruleIdx = 4 * left + 2 * cur + 1 * right;
// Set New Cell Value To Rule TT Value
newCell[i] = ttable[ruleIdx];
}
// Update Cell Array
cell = newCell;
// Return New State
return cell;
}
}
|
|
|
|
|
Suave65 wrote: Can someone help with this task? Help in what way?
|
|
|
|
|
Can you send a BufferedImage thought a socket by changing it somehow because it is not Serializable , and then on client side using WritableImage to show it inside a ImageView ? I am not trying to send an image file but a screenshot made using the following code which I can in the end use it inside ImageView :
Robot robot = new Robot();
BufferedImage imageB = robot.createScreenCapture(screenRectangle);
WritableImage imageW = SwingFXUtils.toFXImage(imageB, null);
ImageView.setImage(imageW);
|
|
|
|